不同的路由器效果是不一样的,路由器端口不需要设IP的,可以支持同网段通信。
不同网段之间第一个数据包会丢失的原因:
因为不同网段之间第一次发送ICMP的时候,不知道对方的MAC地址,所以要发送ARP请求,当获取到自己网关的MAC地址时,才会发送ICMP。但是路由器另一个端口却不知道目标IP的MAC地址,一边要处理ICMP,一边还要发送ARP询问目标MAC地址,实在是忙不过来,它就会把ICMP丢掉,先去处理ARP请求,学习并且记录目标的MAC地址,这就是第一个数据包会丢失的原因。
网络互连模型
客户端到服务器的过程是层层封装,层层解封装
网络分层
物理层( Physical)
◼ 物理层定义了接口标准、线缆标准、传输速率、传输方式等
集线器工作在物理层,因为它不会去判断MAC地址
数字信号、模拟信号
◼ 模拟信号(Analog Signal)
连续的信号,适合长距离传输
抗干扰能力差,受到干扰时波形变形很难纠正
◼ 数字信号(Digital Signal)
离散的信号,不适合长距离传输,一会在上面,一会在下面,用0和1来标识
抗干扰能力强,受到干扰时波形失真可以修复
数据通信模型
◼ 局域网通信模型
注意:网线不能超过100米,超过100米就不能通信了,如果距离真的超过100米,只能在加一台交换机
广域网通信模型
注意:为了解决远距离传输,引入电话线/光纤,通过调制解调器/光电转换器来进行信号转换
信道(Channel)
◼ 信道:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
◼ 单工通信
信号只能往一个方向传输,任何时候都不能改变信号的传输方向
比如无线电广播、有线电视广播
◼ 半双工通信
信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输
比如对讲机
◼ 全双工通信
信号可以同时双向传输
比如手机(打电话,听说同时进行)
数据链路层( Data Link)
◼ 链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
集线器没有智商,所以计算机0到路由器0算一条链路,不同的链路因为MAC地址不一样,所以其数据包是不一样的
交换机是二层设备(物理层、数据链路层),因为它会处理MAC地址
◼ 数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输
不同类型的数据链路,所用的通信协议可能是不同的
✓ 广播信道:CSMA/CD协议(比如同轴电缆、集线器、交换机等组成的网络)
✓ 点对点信道:PPP协议(比如2个路由器之间的信道)
◼ 数据链路层的3个基本问题
封装成帧
透明传输
差错检验
数据链路层 —封装成帧
注:帧的首部和尾部,谁前谁后无所谓。
◼ 帧(Frame)的数据部分
就是网络层传递下来的数据包(IP数据包,Packet)
◼ 最大传输单元MTU(Maximum Transfer Unit)
每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
以太网(暂时理解为CSMA/CD协议)的MTU为1500个字节
数据链路层—透明传输
使用SOH(Start Of Header)作为帧开始符,使用EOT(End Of Transmission)作为帧结束符,当数据部分当中出现EOT时,接收端会误认为帧结束,从而导致数据传输出现问题。为了解决这个问题,我们采用数据部分一旦出现了SOH、EOT、ESC,就用ESC进行转义。
因为接收端感觉不到我们对他进行了转义,所以理解为是透明传输
数据链路层 —差错检验
FCS是根据数据部分 + 首部计算得出的
数据在信道传输过程中受到干扰,信号有可能会失真,接收端在接收到数据时会根据数据部分 + 首部进行计算,与FCS进行比较,一样就接收,不一样就丢弃
CSMA/CD协议
◼ CSMA/CD(Carrier Sense Multiple Access with Collision Detectio)
载波侦听多路访问/冲突检测(主要是交换机之前使用的)
◼ 使用了CSMA/CD的网络可以称为是以太网(Ethernet),它传输的是以太网帧
以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准
使用最多的是:Ethernet V2标准
◼ 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
因为只有这样才可以保证发送的数据帧,过去遇到冲突回来的时候仍然在发送,这样子PC才会知道到底是对方发送回来的数据还是遇到了冲突
◼ 用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧,所以,用交换机组建的网络,依然可以叫做以太网
局域网技术又叫以太网技术。用的是同一种技术,所以协议也应该是一样的
Ethernet V2帧的格式
◼ 首部:目标MAC +源MAC + 网络类型
◼ 以太网帧:首部 + 数据 + FCS
◼ 数据的长度至少是:64 – 6 – 6 – 2 – 4 = 46字节
以太网使用曼彻斯特编码,接收端接收过程只要发现没有信号跳变,就认为帧结束,以太网帧使用了该编码后,就不需要开始符和结束符。当帧到达物理层时就会加入帧开始定界符、前同步码,前同步码可以获取时钟同步。
因为走的是广播信道,要确认到底谁可以收,谁不可以收,所以要标注MAC地址。
Ethrenet V2标准
◼ 当数据部分的长度小于46字节时,数据链路层会在数据的后面加入一些字节填充,接收端会将添加的字节去掉。
◼ 长度总结
以太网帧的数据长度:46~1500字节
以太网帧的长度:64~1518字节(目标MAC +源MAC + 网络类型 + 数据 + FCS)
PPP协议(Point to Point Protocol)
◼ Address字段:图中的值是0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址
因为传输道路上只有我和你
◼ Control字段:图中的值是0x03,目前没有什么作用
◼ Protocol字段:内部用到的协议类型
◼ 帧开始符、帧结束符:0x7E
不同协议传输的数据是不一样的,但是大家封装的网络层的数据是一样的
传输的协议发生了变化,代表着帧的首部和尾部发生了变化
PPP协议—字节填充
◼ 将0x7E替换成0x7D5E
◼ 将0x7D替换成0x7D5D
网卡(工作在物理层、数据链路层)
◼ 网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃
◼ Wireshark抓到的帧没有FCS ,因为它抓到的是差错校验通过的帧(帧尾的FCS会被硬件去掉,因为已经没用了。)
Wireshark抓不到差错校验失败的帧