前言
现如今,互联网彻底改变了人们的生活方式,那么网络到底是什么链接起来的呢?各种通讯协议内部是怎样实现的呢?交换机和路由器有什么区别呢?TCP如何实现可靠传输的呢?好奇心是人类进步的阶梯,带着这些疑问,咱们一起深入探索一下网络协议的底层原理吧
一、网络互联模型
- 1985年,国际标准组织ISO为了更好的促进网络的发展,制定了
OSI(Open System Interconnect)
七层参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
,只要大家都遵守这个模型,那么大家的设备就可以互联成网络了,如下所示,但是七层参考模型只是理论上的模型,并不贴合现实情况,现实中对七层模型进行了整合,变成了四层模型,也就是应用层、传输层、网络层、网络接口层
,由于网络接口层包含的东西比较多,我们学习研究的时候,一般又会将网络接口层
分为数据链路层
和物理层
来研究,所以我们研究的重点就有五层:应用层、传输层、网络层、数据链路层、物理层
网络分层
- 1985年,国际标准组织ISO为了更好的促进网络的发展,制定了
- 网络分层的目的是:各层之间互不干扰,一旦某一层的协议发生变化,并不会影响到其他层
- 五层模型中的数据是这样传递的,如下图所示,用户在
应用层
产生数据以后,会传递给传输层
,传输层增加一部分数据后,传递给网络层
,网络层增加一部分数据后传递给数据链路层
,数据链路层增加一部分数据后传递给物理层
,然后通过物理途径传输给另一台设备,另一台设备收到数据以后,对数据层层解析,最终传递给具体的应用
数据流向图
- 五层模型中的数据是这样传递的,如下图所示,用户在
- 每层模型支持的协议不同,传输数据的单位也不同,应用层的数据单位叫做
报文或者用户数据
,传输层的单位叫做段(Segments)
,网络层的单位叫做包(Packet)
,数据链路层的单位叫做帧(Frames)
,物理层的单位叫做比特流(Bits)
常见的各层协议及数据传输的单位
- 每层模型支持的协议不同,传输数据的单位也不同,应用层的数据单位叫做
- 我们常见的协议HTTP、TCP、UDP、IP、ICMP等协议,其实都是在各层的数据部分,如下图所示,以
ICMP协议
为例,ICMP是网络层协议,网络层分为网络层头部
和网络层数据部分
,网络层数据部分存放着ICMP的头部
和ICMP的数据部分
:
image.png
- 我们常见的协议HTTP、TCP、UDP、IP、ICMP等协议,其实都是在各层的数据部分,如下图所示,以
-
6.我们知道计算机之间通讯需要知道对方的
IP地址
,但是实际上是用IP地址
通过一系列手段找到对方的Mac地址
,通过Mac地址
将数据传输给对方的网卡
,从而实现的通讯(网卡是一个硬件,网卡才有Mac地址
,计算机实际上并没有Mac地址,计算机只是拥有了网卡,间接的拥有了Mac地址,一台计算机可以有多个网卡) -
网卡的通讯规则是:如果网卡发现
目标的Mac地址
是自己,就会将数据传递给上一层处理;否则就会将数据丢弃(每一个网卡都有一个全球唯一的6个字节的Mac地址,前三个字节是组织唯一标识符,后三个字节是网络接口标识符,例如:40-55-82-0A-8C-6D,Mac/iOS下是40:55:82:0A:8C:6D,Packet Tracer下是4055.820A.8C6D,格式不太一样,当6个字节48位全是1时,代表广播)
-
网卡的通讯规则是:如果网卡发现
- 我们就从物理层开始,一层一层的研究计算机是怎样通讯的吧,下面就是常见的物理设备,这些物理设备的接口都是满足五层模型中的
物理层
所规定的硬件协议的,所以可以互相通讯,这些硬件就是组成网络的基石
- 我们就从物理层开始,一层一层的研究计算机是怎样通讯的吧,下面就是常见的物理设备,这些物理设备的接口都是满足五层模型中的
二、网线直连和同轴电缆
-
计算机和计算机之间一般用交叉线来链接传输数据,其内部构造就不在本次研究范围之内,了解即可
交叉线.png
-
-
同轴电缆(Coaxial Cable)是一种信号传输线,如下图所示,可用于模拟信号和数字信号的传输,以前的有线电话、有线电视都是用的同轴电缆,但是传输速度较慢,现在大部分已经被光纤取代;同轴电缆是半双工通讯,容易冲突,一旦某个断了,整个网络都会收到影响
同轴电缆
-
补充知识:
-
半双工通讯
是指同一个时间只能接受数据或者发送数据,两个无法同时进行,就好像是单行桥只能有一辆车通过,当两辆车对开的时候,只能先等一辆车通过才行;
-
-
全双工通讯
是指同一时间既可以接受数据,也可以发送数据,好像我们平时打电话一样,说话的同时也能够听到对方的声音
-
三、集线器
- 集线器的英文称为“Hub”,就是中心的意思,属于五层参考模型中的
物理层
,半双工通讯,主要功能是对接收到的信号进行整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,如下所示
集线器
- 集线器的英文称为“Hub”,就是中心的意思,属于五层参考模型中的
- 集线器数据纯硬件底层设备,不具备交换机的记忆和学习能力,也没有Mac地址表,发送数据都是采用广播方式,任何一个设备发送数据,集线器都会对所有连接到的设备广播数据,没有“智商”;用集线器链接起来的局域网,是半双工通讯,同一时间只能由一台设备发送数据,不然就会发生冲突,属于同一个”冲突域“
四、网桥
-
网桥就是不同局域网之间的桥梁,美名其曰网桥,因为网桥可以通过自学习得知每个接口那侧的Mac地址,从而有隔绝冲突域的作用,如下图所示,计算器6给计算机7发送数据,由于通过集线器发送,数据就会以广播的形式,发送给每一个链接集线器的设备,包括了网桥0,而网桥会记录所有的mac地址,分析出来你的mac地址不属于另一侧,就会把数据拦截下来,不向另一侧传递了
网桥
-
- 由于网桥会记录mac地址,所以网桥是工作在
数据链路层
的,网桥与hub的区别在于,网桥会过滤mac,只有目的mac地址匹配的数据才会发送到出口
- 由于网桥会记录mac地址,所以网桥是工作在
五、交换机
- 交换机可以简单的理解为多个网桥的集合,有多个端口,每个端口都具有网桥的功能,采用
全双工
通讯,可以记录Mac地址,记录好Mac地址以后,通讯就不需要广播了,直接“设备->交换机->设备”,点对点传输
交换机
- 交换机可以简单的理解为多个网桥的集合,有多个端口,每个端口都具有网桥的功能,采用
- 在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。
- 交换机在接收到数据帧以后,会记录数据帧中的
源MAC地址和对应的接口
到MAC表
中,然后检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则将数据点对点单播出去,如果没有,则会将该数据帧广播出去
- 交换机在接收到数据帧以后,会记录数据帧中的
六、路由器
-
1.路由器的作用是给每个经过路由器的数据包寻找一条最佳的传输路径,并将该数据传送到目标
设备,路由器工作于五层模型中的网络层
,路由器内部存放着路由表,路由表存放的信息如下,主要看加粗的即可,其他了解一下就好:- 目标IP地址,例如:192.168.12.1
- 子网掩码,例如:255.255.255.0 或者 /24,代表一共有24个1,11111111.11111111.11111111.00000000,翻译成10进制,也就是255.255.255.0
- 下一跳的IP地址,一般计算机的下一跳就是网关的IP地址
- 发送的物理端口,也就是数据包离开路由器去往目的地将经过的接口
- 路由信息的来源(Owner),表示该路由信息是如何学习到的,路由表可以由管理员手工建立(静态路由表);也可以由路由选择协议(OSPF)自动建立并维护
- 路由优先级(pri),决定了来自不同路由来源的路由信息的优先权.
- 度量值(metric),度量值用于表示每条可能路由的代价,度量值最小的路由就是最佳路由.
- 路由器有多个网关,每个网关都有自己的
Mac地址
,可以给这些网关配置IP地址,如下所示,配置好以后,计算机就可以给路由器通讯了,由于计算机0和路由器0左侧网关在同一个网段,所以计算机0是可以给路由器的左侧网关通讯的
路由器
- 路由器有多个网关,每个网关都有自己的
- 路由器可以在不同网段之间转发数据,隔绝广播域,路由器只能给不同网段的通讯,如果路由器两端链接的是同一个网段的,会把数据拦截下来,没法通过路由器传递数据
- 计算机再跟其他计算器通讯之前,会先判断下是否在同一个网段,如果是同一个网段则不需要路由器转发;如果不是同一个网段就需要路由器转发;
补充知识:
-
网段其实就是某一段IP地址的范围,所谓的同一个网段,就是用
IP地址
与子网掩码
做了一个按位与&
运算后得出一个值,两个IP地址的的得出来的值相同,就认为这两个IP地址是在同一个网段里;这里计算有个小技巧:跟1按位与原来是1就还是1,原来是0就还是0;跟0按位与肯定全是0,所以192.168.1.10 & 255.255.255.0 = 192.168.1.0,这要这个值相同就说明在同一个网段,例如:
-
网段其实就是某一段IP地址的范围,所谓的同一个网段,就是用
//下面24的意思是24位1,也就是11111111.11111111.11111111.00000000,转化为10进制就是255.255.255.0
192.168.1.10/24的网段:192.168.1.10 & 255.255.255.0 = 192.168.1.0
192.168.1.12/24的网段:192.168.1.12 & 255.255.255.0 = 192.168.1.0
所以192.168.1.10/24和192.168.1.12/24在同一个网段
//再例如:
192.168.1.10/16的网段:192.168.1.10 & 255.255.0.0 = 192.168.0.0
192.168.2.22/16的网段:192.168.2.22 & 255.255.0.0 = 192.168.0.0
所以192.168.1.10/16和192.168.2.22/16也是在同一个网段
七、路由器和交换机的区别
- 路由器负责跨网段的数据传递,交换机负责同一个网段的数据传递
- 路由器工作在网络层,会记录IP地址;交换机工作在数据链路层,会记录Mac地址;
- 路由器有自己的网卡,可以给各个网卡配置IP地址;而交换机没有网卡,没有mac地址,也不能配置IP地址
网友评论