目录
[1.1 概念](#1.1 概念)
[1.2 以太⽹帧格式](#1.2 以太⽹帧格式)
[1.3 MAC地址](#1.3 MAC地址)
[1.4 MTU](#1.4 MTU)
[2.1 概念](#2.1 概念)
[2.2 ARP协议工作流程](#2.2 ARP协议工作流程)
[2.3 ARP数据报的格式](#2.3 ARP数据报的格式)
⽤于两个设备(同⼀种数据链路节点)之间进⾏传递.
应用层:传输数据是手段,交换应用层报文,完成应用是目的
传输层:解决相关传输的问题,可靠性
网络层:解决长距离传输,路径选择问题
数据链路层:解决子网通信问题
1.以太⽹
1.1 概念
• "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物
理层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等;
• 例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等;
• 以太⽹是当前应⽤最⼴泛的局域⽹技术; 和以太⽹并列的还有令牌环⽹, ⽆线LAN等;
1.2 以太⽹帧格式

• 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的;
• 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
• 帧末尾是CRC校验码
•如何进行分离以太网的协议字段是固定的
•如何分用
帧类型,如果类型为0800,就代表有效载荷是IP数据,交给上层的处理IP层,其他类型这里就不叙述
1.3 MAC地址
在网路通信中,不仅有IP地址还有MAC地址
• IP地址描述的是路途总体的 起点 和 终点;
• MAC地址描述的是路途上的每⼀个区间的起点和终点;
• MAC地址⽤来识别数据链路层中相连的节点;
• ⻓度为48位, 及6个字节. ⼀般⽤16进制数字加上冒号的形式来表⽰(例如: 08:00:27:03:fb:19)
• 在⽹卡出⼚时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些⽹卡⽀持⽤⼾配置mac地址).

主机A经过路由来吧数据交个主机E
1.4 MTU
局域网其实是一个碰撞域,一个时刻只能发送一个数据帧,而以太网就是一个共享资源,因此对于数据帧来说,数据帧不能太长也不能太多,对此就有MTU
• 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填充位;
• 最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;
• 如果⼀个数据包从以太⽹路由到拨号链路上,数据包⻓度⼤于拨号链路的MTU了,则需要对数据包进⾏分⽚(fragmentation);
• 不同的数据链路层标准的MTU是不同的;
使⽤ifconfig命令, 即可查看ip地址, mac地址, 和MTU;

MTU对IP协议的影响
由于数据链路层MTU的限制, 对于较⼤的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);
真正在网络物理层上流动的数据其实就是数据帧
2.ARP协议
在上文了解到,网络通信中不仅要知道IP地址还要知道MAC地址,那如何得知对方的MAC地址?此时ARP协议(地址解析协议),把IP转换成为对应的MAC地址
2.1 概念
ARP不是⼀个单纯的数据链路层的协议, ⽽是⼀个介于数据链路层和⽹络层之间的协议;
ARP协议建⽴了主机 IP地址 和 MAC地址 的映射关系.
在⽹络通讯时,源主机的应⽤程序知道⽬的主机的IP地址和端⼝号,却不知道⽬的主机的硬件地址;
数据包⾸先是被⽹卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
因此在通讯前必须获得⽬的主机的硬件地址;
2.2 ARP协议工作流程

• 源主机发出ARP请求,询问"IP地址是192.168.0.1的主机的硬件地址是多少", 并将这个请求⼴播到本地⽹段(以太⽹帧⾸部的硬件地址填FF:FF:FF:FF:FF:FF表⽰⼴播);
• ⽬的主机接收到⼴播的ARP请求,发现其中的IP地址与本机相符,则发送⼀个ARP应答数据包给源主机,将⾃⼰的硬件地址填写在应答包中;
• 每台主机都维护⼀个ARP缓存表,可以⽤arp -a命令查看。缓存表中的表项有过期时间(⼀般为20分钟),如果20分钟内没有再次使⽤某个表项,则该表项失效,下次还要发ARP请求来获得⽬的主机的硬件地址,这是由于有些主机的MAC地址会进行变化
2.3 ARP数据报的格式

• 注意到源MAC地址、⽬的MAC地址在以太⽹⾸部和ARP请求中各出现⼀次,对于链路层为以太⽹的情况是多余的,但如果链路层是其它类型的⽹络则有可能是必要的。
• 硬件类型指链路层⽹络类型,1为以太⽹;
• 协议类型指要转换的地址类型,0x0800为IP地址;
• 硬件地址⻓度对于以太⽹地址为6字节;
• 协议地址⻓度对于和IP地址为4字节;
• op字段为1表⽰ARP请求,op字段为2表⽰ARP应答。
在局域网中,任何主机可能收到APR请求,也有可能收到应答
•由于某个主机要得到目标主机的MAC地址,就会进行ARP请求,这个请求在当前局域网中,所有主机都会收到,若目标主机收到对应的请求,同样也会对当前局域网的所有主机发起ARP应答,处理任何ARP(请求和应答),直接先看OP
