数据链路层主要是用的是以太网:
ARP协议:
介于网络层与数据链路层之间的协议,建立了ip地址与Mac地址之间的转换。
重点:缓存表中的表项存在过期时间
例如:唐僧取西经
- HTTP:将请求进行封装
- TCP:找到原端口与目标端口
- IP:找到原ip与目标ip,根据路由表及目标ip找到下一跳ip。
- ARP:根据下一条ip找到下一跳mac
注意:一个路由器均两个网卡,源ip与目标ip必须在同一个网络内
根据目标ip找下一跳ip时,跨局域网,一定是下一个路由器,不可能为同一个
MTU协议
MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制。如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片
- MTP对IP的影响:进行分片的依据(红色框)
- 每个包IP协议头的 16位标识(id) 都是相同的;
- 每个包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片,第3位来表示结束标记(当前是否是最后一个包, 是的话置为1, 否则置为0);
- 到达对端时再将这些小包, 会按顺序重组,拼装到一起返回给传输层;
- 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据
2.MTU对UDP的影响:
- 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.
- IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了
3.MTU对TCP的影响:
TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);
TCP的一个数据报也不能无限大, 还是受制于MTU.
- TCP在建立连接的过程中, 通信双方会进行MSS协商.
- 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.
- 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
- MSS的值就是在TCP首部的40字节变长选项中(kind=2);
DNS协议(应用层):
主要是根据域名换ip,主要工作在TCP/UDP中
NAT协议:
私有ip与全局ip之间的转换,解决ip地址不够用的情况
- 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;
- 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表,因为公网ip只有一个,需要记住转换前的ip地址;
NAT的缺陷:
- 无法从NAT外部向内部服务器建立连接;
- 装换表的生成和销毁都需要额外开销;
- 通信过程中一旦NAT设备异常, 即使存在热备,所有的TCP连接也都会断开
NART
局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的.NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
NAPT来解决这个问题了. 使用IP+port来建立这个关联关系