目录
[五、重要应用层协议DNS(Domain Name System)](#五、重要应用层协议DNS(Domain Name System))
一、数据链路层概念
从微观角度来看,关心两个节点之间具体怎么传输
一句话定位: 负责把网络层的数据包,在同一网段、相邻节点之间可靠 / 不可靠地传输
二、以太网
1、以太网概念
以太网是目前最主流、应用最广 的数据链路层 + 物理层技术标准,用于局域网内设备之间的通信,最常见到的插网线的网络就是以太网
2、以太网帧格式
- 目的地址:长度6字节,接收方的MAC地址,用于定位目标地址
- 源地址:长度6字节,发送方的MAC地址,用于标识发送设备
- 类型:长度2字节,标识数据字段中承载的上层协议类型(如 IP、ARP、RARP)
- CRC:长度4字节,校验码,用于检测在传输过程中是否发生错误
- PAD(填充字段):18字节,用于将总长度补充到 46 字节
3、MAC地址的理解
- 目前,MAC地址不需要 " 动态分配 ",也不需要 " NAT "
- 长度为48位(6字节),一般用16进制数字加上冒号来表示,例如:
- MAC地址在网卡出厂时就确定了,通常不能修改,MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的,可能会冲突)
- MAC地址还可以作为电脑的一个身份标识
注意:
IP 地址描述的路途是总体的起点和终点,而 MAC 地址描述的是每个区间的起点和终点
例如:购买车票从太原到洛阳,总体路线为 太原到郑州再到洛阳,IP地址一直为 太原 - 洛阳,而MAC地址在太原到郑州区间为太原-郑州,在郑州到洛阳区间为郑州-洛阳
三、MTU (最大传输单元)
1、理解MTU
MTU 是数据链路层对载荷长度的最大限制
- 以太网帧中的数据长度规定最小为46字节,最大为1500字节,ARP数据包的长度不够46字节,要在后面填补充位
- 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
- 如果一个数据包从以太路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片
- 不同的数据链路层标准的MTU是不同的
2、MTU对IP协议影响
- **触发分片:**当 IP 数据包超过链路 MTU 时 IPv4 路由器会将其进行分片传输 ,这会降低效率和可靠性;而 IPv6 则禁止路由器分片,直接丢弃过大的数据包
- 重组失败:在进行传输之前进行分片,在到达对端后会根据16位标识、3位标志、13位片偏移进行数据重组,一旦这些小包中有一个丢失 ,接收端的重组就会失败,但 IP 层不负责重新传输数据
3、MTU对UDP协议影响
- **分片:**一旦UDP携带的数据报超过 1472(1500 - 20 ( IP 首部 ) - 8( UDP 首部 )),那么就会在网络层分成多个IP数据报
- **重组:**如果UDP数据报在网络层被分层,整个数据被丢失的概率就增大了
4、MTU对TCP协议影响
TCP对MTU做了大量适配,通过MSS(TCP能发送的最大纯数据段)
- TCP的数据包也不能无限大,受限于MTU,TCP的单个数据报的最大消息长度称为MSS(Max Segment Size)
MSS协商:
- TCP建立连接的过程中进行协商,最理想情况下MSS正好是在IP不会分片处理的最大长度(受限于链路层的MTU)
- 双方在发送SYN的时候在TCP头部写入自己可以支持的MSS值
- 从中选取较小的MSS值作为最终MSS
影响:
- 自动分片,在正常情况下不会出现 IP 分片,应用层数据在TCP层自动拆成多个MSS包
- MTU太小的话会导致数据吞吐量变小
四、ARP协议作用及工作流程
ARP协议(Address Resolution Protocol)是介于数据链路层和网络层的协议,功能属于网络层,但报文封装在以太网帧里,核心:IP地址 -> MAC地址的映射协议,只在同一局域网内(同一广播域内)有效
作用:
ARP协议建立了主机IP地址和MAC地址的映射关系
- 在网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
- 数据包首先是被网卡接收到再去处理上层协议的,如果收到的数据包硬件地址与本机不符,则会直接丢弃,因此在通信前必须获得目的主机的硬件地址
ARP协议工作流程:
- 源主机发出ARP请求,询问 "IP地址是192.168.100.1的主机硬件地址是多少",并将这个请求广播到本地网段
- 目的主机接收到广播的ARP请求,发现其中的IP地址与本机的IP地址相符,则发送一个ARP应答数据包给源主机(包中包含自己的硬件地址)
- 每台主机都维护一个ARP缓存表,缓存表中有一表项为过期时间,如果超时再次访问,那么还需要发ARP请求来获取主机的硬件地址
五、重要应用层协议DNS(Domain Name System)
DNS 是一整套从域名映射到 IP 的系统,域名是通过一串单词,表示一个IP地址,像:
早期的DNS是一个文本文件(.host),里面存放着主机名和IP地址之间的关系,但是不方便维护和更新(依旧存在)
现在使用DNS服务器代替文件
DNS服务器会承担非常高的并发量?实际解决:
- 本机在DNS解析后会做缓存(将域名对应的IP记录到本地硬盘中),在短时间内不需要再次访问DNS服务器
- DNS系统是分布式的,全世界有好多DNS的服务器,并不是只有一个






