数据链路层

数据链路层解决的是直接相连的主机之间的数据传输。

数据帧格式

数据帧在IP报文的基础上增加了目的MAC,源MAC,类型和CRC校验的内容

类型有三种,因为数据链路层的数据帧根据有效载荷内容分为三种,IP,ARP和RARP。IP的类型值为0800,ARP是0806,RARP是0835。

数据帧传输过程

最大传输单元MTU

以太网帧中的数据长度规定最小46字节,最大1500字节ARP数据包的长度不够46字节,要在后面补填充位;

最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片;

MTU对IP协议的影响

如果IP包很大,会将IP报文分成多个包,每个包的标签都是相同的。到达目标主机后,网络层再对小包按照顺序组装成一个大数据包。其中任何一个数据包丢失都会让数据失效,IP没有重传机制,效率很低不建议分包。

MTU对UDP的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报. 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在 网络层被分片, 整个数据被丢失的概率就大大增加了.

MTU对TCP的影响

TCP的一个数据报也不能无限大, 还是受制于MTU.

TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);

TCP在建立连接的过程中, 通信双方会进行MSS协商. 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU). 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值. 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP首部的40字节变长选项中(kind=2);

MSS和MTU的关系;

ARP协议

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网 络层之间的协议。ARP协议的作用就是建立MAC和IP地址之间的关系。

ARP数据报格式

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况 是多余的,但如果链路层是其它类型的网络则有可能是必要的。

硬件类型指链路层网络类型,1为以太网;

协议类型指要转换的地址类型,0x0800为IP地址;

硬件地址长度对于以太网地址为6字节;

协议地址长度对于和IP地址为4字节;

op字段为1表示ARP请求,op字段为2表示ARP应答。

工作流程

源主机发出ARP请求,询问目标IP主机的MAC地址是多少, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);

目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如 果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

相关推荐
阿巴~阿巴~1 分钟前
Cookie与Session:HTTP认证机制解析
服务器·网络·网络协议·http·cookie·session
袁煦丞 cpolar内网穿透实验室3 分钟前
node_exporter无需公网 IP 也能远程监控服务器!cpolar内网穿透实验室第 583 个成功挑战
服务器·网络协议·tcp/ip·远程工作·内网穿透·cpolar
谷粒.9 分钟前
API测试全解析:从基础到性能压测
java·运维·网络·人工智能·python·测试工具·自动化
TTc_14 分钟前
详细讲解Vue+Java的websocket通讯,整合进微服务,XXL Job调用通讯流程
websocket·网络协议·微服务
云计算小黄同学19 分钟前
CC攻击和DDOS的特征与防护(基于阿里云)
网络·安全·阿里云·ddos
阿巴~阿巴~22 分钟前
HTTP头部字段:高效通信的关键
服务器·网络·网络协议·http·http头部字段
木易 士心27 分钟前
EACCES: permission denied 的深度诊断与解决指南
网络协议·系统安全
xixixi7777728 分钟前
二值化——将具有丰富灰度或彩色信息的图像,转换为仅由两种像素值(通常是0和1,或0和255) 组成的图像,即黑白图像
网络·图像处理·人工智能·学习·计算机视觉·信息与通信
北京盛世宏博9 小时前
以太网温湿度传感器/变送器选型指南:从需求到落地的全流程决策框架
网络·以太网·poe·温湿度·供电
_dindong9 小时前
Linux网络编程:结合内核数据结构详谈epoll的工作原理
linux·服务器·网络