˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ---CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ---CSDN博客系列专栏:xiaoxie的计算机网络学习系列专栏------CSDN博客●'ᴗ'σσணღ
我的目标:"团团等我💪( ◡̀_◡́ ҂)"( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝+关注(互三必回)!
目录
[编辑 一.网络初识](#编辑 一.网络初识)
[1.局域网 vs 广域网](#1.局域网 vs 广域网)
[2.路由器 vs 交换机](#2.路由器 vs 交换机)
[3.IP地址 vs 端口号](#3.IP地址 vs 端口号)
[5.OSI七层模型 vs TCP / IP 五层/四层 模型](#5.OSI七层模型 vs TCP / IP 五层/四层 模型)
一.网络初识
1.核心概念
1.局域网 vs 广域网
- 局域网 (LAN):范围相对较小,通常局限在一个小的区域内,如办公室、学校、家庭或一个园区内,最大距离一般不超过几千米。局域网的设计目的是为了在近距离内实现高速数据传输和资源共享。
- 广域网 (WAN):覆盖范围广泛,可以跨越城市、国家乃至全球。广域网连接不同地理位置的局域网,使得这些分散的网络能够相互通信,其距离可以达到数千公里。
1.连接方式
- 局域网 :主要通过以太网线、Wi-Fi 或其他短距离无线技术连接,使用交换机作为中心节点来连接网络中的设备。
- 广域网:通过路由器将多个局域网连接起来,利用电话线、光纤、卫星、微波等长距离传输技术。
2.传输速度
- 局域网:由于距离短,通常提供更快的数据传输速率,例如100Mbps至10Gbps或更高。
- 广域网:由于传输距离远,数据传输速率通常较慢,虽然现代技术如光纤可以提供高速率,但整体上仍不如局域网快。
3.IP地址
- 局域网 :使用私有IP地址空间,可以在不同局域网内部重复使用。通过NAT(网络地址转换)技术访问互联网。
- 广域网:每台直接连接到广域网的设备都需要一个全局唯一的公有IP地址以便在互联网上识别和通信。
2.路由器 vs 交换机
1.交换机:
- 主要工作在数据链路层(OSI模型的第二层),用于局域网(LAN)内部的设备连接。
- 通过学习连接设备的MAC地址来进行数据帧的转发,使不同设备之间可以高效地通信。
- 交换机可以分割冲突域,但传统的交换机不能分割广播域,意味着广播信息会在同一广播域内传播。
- 适用于构建和管理一个网络内的直接连接,提高局域网内部数据传输速度。
2.路由器:
- 工作在网络层(OSI模型的第三层),不仅连接局域网,还能连接广域网(WAN),实现不同网络之间的通信。
- 使用IP地址来决定数据包的最佳路径,从而转发到目标网络或设备,支持更复杂的路由策略和过滤功能。
- 能够分割广播域,防止广播风暴,这对于大型网络管理至关重要。
- 提供诸如网络地址转换(NAT)、防火墙过滤等高级功能,有助于网络安全和外网访问控制。
- 通常用在需要连接到互联网或者连接不同子网的场合。
总结来说,交换机专注于提升局域网内部的数据交换效率,而路由器则负责在不同网络之间引导数据包,实现更广泛的网络互连与通信。
3.IP地址 vs 端口号
1.IP地址:
- 是互联网协议(IP)用于标识网络中每台设备的唯一地址,如同设备在网络世界中的"门牌号"。
- 它确保了数据可以从源设备发送到目标设备,无论这两台设备位于世界哪个角落。
- IP地址分为IPv4(32位,常用点分十进制表示)和IPv6(128位,用冒号分隔的十六进制数表示)两种版本。
- 每个IP地址包含网络部分和主机部分,帮助路由器判断数据包的传输路径。
2.端口号:
- 是应用层的标识符,用于标识在同一台设备上运行的不同网络服务或应用程序。
- 它使得数据包在到达目标设备后,能被正确地导向到相应的服务或应用程序,就好比是设备内的"部门编号"。
- 端口号是16位的数字,范围从0到65535,其中0-1023是系统保留端口,通常分配给标准服务(如HTTP使用80端口,HTTPS使用443端口)。
- 动态或私有端口范围(大于1023)可用于任意应用程序,以避免端口冲突。
结合IP地址和端口号,形成了所谓的"套接字"(Socket),这是网络通信中用于标示服务访问点的唯一组合,确保了数据能够准确无误地送达互联网上的特定服务或应用程序。
4.协议
简单解释就是,通信的双方互相约定好的一种通信规则,这样的规则就可以称之为协议,它定义了数据如何格式化、如何传输、如何被接收方解析以及如何响应等细节, 无论通信的对象有多少个,都互相遵守的规则,同时,注意在通信的时候,必须要有协议,这样即使通信的双方的主机设备不同,硬件不同,应用程序不同,操作系统不同等等,都可以进行通信.
1.协议分层
进行网络通信是一件非常复杂的事,其中涉及到很多的细节问题,如果你就使用一种网络协议来约定其中所有的细节,这个协议就会十分复杂,所以基于这个理论,就衍生出了协议分层这个概念.所以我们可以把一个复杂的协议分成许多个功能单一的协议,再把这些拆分的协议根据,它们的功能,分类,组织起来.
举一个小栗子:
在大公司中,有许多的员工,以及许多的岗位,那老板该如何去管理他们呢,是不是应该根据不同的层级,上层管理下层,这样老板只需要管理他的下一层即可.这样即使人很多也可以很好的运营这个公司了,简单画个图表示一下
协议分层也是类似的效果,把一堆拆分的协议,按照功能分成不同的层级,每一个层级都有对应的任务/解决的问题,上层协议调用下层协议的功能,下层协议为上层协议提供服务 .这种分层使得各部分可以独立设计、开发和故障排查,同时也便于升级和扩展,大大简化了复杂网络系统的管理和维护。即使人员(或设备)众多,通过这样的层级划分,整个系统也能高效有序地运行。
2.协议分层的好处
1.起到了封装的效果
在协议分层中,每一层都封装了自己的实现细节,只向上一层提供服务。这样,每一层可以独立于其他层进行开发和维护,而不需要关心下层的具体实现
举个小栗子:
想象一下,你买了一台微波炉。你不需要知道微波炉是如何加热食物的,也不需要了解它的内部电路和机械部件是如何工作的。你只需要知道如何设置时间和功率,然后按下启动按钮。这里,微波炉的制造商将复杂的加热机制封装在用户界面后面,用户只需要通过简单的操作界面与之交互。
类比 :这就像网络协议中的应用层,用户(应用层)不需要了解下层(如传输层、网络层等)是如何工作的,只需要通过提供的接口(如API)来发送和接收数据。
2.解耦合的效果
协议分层减少系统中各个部分之间的依赖关系,使得系统的一个部分的变化不会影响到其他部分。在协议分层中,由于每一层都独立于其他层工作,因此可以单独修改或替换某一层,而不会影响到整个系统的其他部分。
举个小栗子:
再想象一下,你正在使用一个快递服务来寄送包裹。快递公司可能会更改他们的内部物流流程,比如从使用卡车运输改为使用无人机。作为客户,你不需要关心这些变化,你只需要知道你可以继续使用这项服务来寄送包裹。
类比:这类似于网络协议中的不同层之间的解耦合。如果你的应用层(比如一个网页浏览器)需要从HTTP切换到HTTPS,这个改变主要发生在应用层和传输层之间,而网络层和数据链路层可以保持不变,因为它们只负责传输数据包,而不关心数据的安全协议
5.OSI七层模型 vs TCP / IP 五层/四层 模型
-
应用层 (Application Layer):
- 作用:为应用软件提供网络服务。这一层负责处理网络应用程序的具体功能,如电子邮件、文件传输、网页浏览等。
- 例子:HTTP(网页)、SMTP(邮件)、FTP(文件传输)、DNS(域名解析)。
-
传输层 (Transport Layer):
- 作用:负责在网络中两个节点之间提供可靠的数据传输服务。这一层定义了两个主机间进行会话的规则,如TCP(传输控制协议)提供可靠的连接,而UDP(用户数据报协议)提供较快但不保证可靠性的连接。
- 例子:TCP(确保数据包顺序和完整性)、UDP(快速但不保证顺序或完整性)。
-
网络层 (Network Layer):
- 作用:负责数据包从源到宿的传递和路由选择。这一层处理数据包在整个互联网中的寻址和路由问题。
- 例子:IP(互联网协议),负责将数据包从源地址路由到目的地址。
-
数据链路层 (Data Link Layer):
- 作用:在相邻的网络节点之间提供数据传输,处理MAC(媒体访问控制)地址,确保数据在局域网内的可靠传输。
- 例子:以太网、Wi-Fi,它们定义了如何在物理媒介上编码和传输数据。
-
物理层 (Physical Layer):
- 作用:处理通过物理媒介传输数据的技术细节,如电缆的电气特性、无线信号的传输方式等。
- 例子:RJ45以太网接口、光纤、无线电波,这些都是物理层关心的传输介质。
每一层都为上一层提供服务,同时依赖下一层来完成其功能。数据在发送时从高层向低层传递,每一层为其添加必要的信息(如头部信息),在接收时则从低层向高层传递,每一层去除对应的头部信息,直至最终到达目标应用程序。这种分层的设计使得网络通信更加模块化,易于理解和维护
注意这里的 TCP / IP 五层/四层 模型 的区别就是是否把物理层和数据链路层看成网络接口层,所以也不好说明哪一个是对的,都记住就好.
6.协议的层与层之间是如何配合工作的.
总结来说就是上层协议调用下层协议的功能,下层协议为上层协议提供服务,就是一个封装和分用的过程,这里通过一个例子来讲解封装和分用的过程
假如 A 使用 微信 发送信息给 B.我们就通过这个我们日常生活中看似很简单,但其实里面涉及的网络通信原理却十分复杂的过程来讲解封装和分用的过程
1.封装
前提A给B发送"hello" 这个信息,A的账号为 123 B的账号为 456 发送时间为21:00
1.应用层
这里我们就假定微信的应用层协议(数据的格式)为一个字符串,里面主要存储了四个信息,分别是,发送人账号,接收人账号,发送时间,发送的内容,通过 , 来分割信息,并且在结尾以 \n 为标识
实际上微信的应用层协议肯定更复杂, 这样应用层就把这个数据进行了封装,之后通过调用系统API,把数据传输给传输层.
2.传输层
传输层接收到应用层传输过来的数据之后,就会根据传输层上的协议对数据进行封装,例如传输层上典型的传输层协议 TCP / UDP 协议 ,这里我们以UDP协议作为传输层的协议.
UDP协议,会给数据添加一个报头将数据分成两部分,一部分为报头,一部分为载荷
其中报头里存储的是UDP的一些属性信息,载荷中就是传输的数据
这样传输层就对数据进行了封装 ,之后通过调用系统API,把数据传输给网络层
3.网络层
典型的协议 IP协议,通过IP协议对数据进行封装
其中IP报头就包含了接收方的IP地址和发送方的地址,同时调用数据链路层的API,也就是网卡,传输到数据链路层中,进行进一步的封装
4.数据链路层
使用以太网协议
将以太网数据帧通过网卡,发送到物理层
5.物理层
此时的以太网数据帧,本质上就是0/1的二进制数据了,硬件设备,把这些二进制数据转化为,电信号,光信号,电磁波等等,传输给B.
上述过程就是封装,层层对数据进行包装.
2.分用 (B)
1.物理层
收到一系列光电信号,把这些信号转成 0101 二进制数据, 交给 数据链路层
2.数据链路层
按照以太网协议,对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础,还需要拿到载荷数据)
解析出来的载荷数据,是要交给上层(网络层)
3.网络层
IP 协议拿到了 IP 数据包,按照协议格式进一步解析,解析报头中的关键信息, 取出载荷.
解析出来的载荷数据传输给上一层(传输层)
4.传输层
拿着 UDP 数据包,按照 UDP 格式进一步解析,解析出关键的信息 (要交给哪个端口号对应的进程),以及解析出载荷数据
解析出来的载荷数据传输给上一层(应用层)
5.应用层
微信 程序拿到了应用数据包. 根据应用层协议按照自己的协议格式,进行解析,拿到这里的结构化数据, 显示到界面上 ->反序列化.这样B就接收到了A发送的信息了.
注意:
中间的路由器, 交换机,也要进行封装分用.也是上述过程.
只不过,交换机,封装分用到 数据链路层,即可知道下一步如何转发.(工作在数据链路层)
路由器,封装分用到,网络层,即可知道下一步如何转发,(工作在网络层)
同时分用时,操作系统会根据数据包上的报头,了解到封装时各层使用了具体的什么协议,这一点很重要.
以上就是封装分用过程了,我们还可以用网购时商家对快递的包装,和我们拆快递的过程来简单解释一下封装分用的过程
-
封装过程: 想象你在网上购买了一件商品,商家需要将商品安全地包装好,以便快递公司能够将它安全地送到你手中。在这个过程中,商家会做以下几步:
- 商品本身(相当于应用层的数据):这是你要购买的物品,比如一件衣服。
- 包装(相当于传输层):商家会将衣服放入一个盒子,并确保它不会因为运输途中的颠簸而损坏。如果商家使用的是可靠的快递服务(类似TCP协议),那么他们可能会添加额外的保护层,如泡沫或气泡膜,以确保衣服在运输过程中不会受损。
- 地址标签(相当于网络层):商家会在盒子上贴上一个标签,上面写着你的地址(目的IP地址)和他们商店的地址(源IP地址),这样快递公司就知道这个包裹应该送往哪里。
- 运输包装(相当于数据链路层):为了确保包裹在运输过程中的完整性,商家可能还会在外层加上一个防水袋或额外的保护层。
- 物理运输(相当于物理层):最后,包裹被装上卡车或飞机,通过物理运输方式送到你所在的城市。
-
分用过程: 当你收到包裹时,你会执行相反的操作来获取商品,这个过程就是分用:
- 物理运输(物理层):包裹首先通过卡车或飞机运输到达你所在的城市。
- 运输包装(数据链路层):快递公司将包裹从运输工具上卸下,并确保包裹在送达前没有受损。
- 地址标签(网络层):快递公司根据包裹上的地址标签,决定如何将包裹送到你的地址。
- 拆包装(传输层):你收到包裹后,会拆除最外层的包装,比如防水袋,然后是商家添加的保护层。
- 取出商品(应用层):最后,你打开盒子,取出你购买的衣服,这时候你得到了原始的商品,即应用层的数据。
通过这个例子和上述的微信接收信息的例子,我们可以看到,封装是将数据和必要的控制信息组合在一起,以便安全地在网络中传输。而分用则是接收端将这些数据和控制信息分开,提取出原始数据供应用程序使用。这个过程确保了数据的完整性和正确性,无论数据在网络中经过了多么复杂的路径。
以上就是关于计算机网络的初步认识了,这些知识点虽然比较繁琐,但只要你能够理解下来的话,相信这些知识还是比较容易的,理解这些知识对后续的学习,也会有很大的帮助,同时提醒一句计算机网络在我们今后的工作中是非常常用的,这方面的知识也算是作为一名程序猿的基本功了,基本功不牢,地动山摇,好了就啰嗦这么多,感谢你的阅读,祝你一天愉快.