网络层IP协议描述了通信中的起点到终点,但是数据不是飞过去的,是经过了大量的中间节点转发完成的。
一、以太网协议
1、MAC地址
物理硬件地址,是每一块网卡在出厂时设定的地址,固定且不可修改(早期,现在可以修改但没必要)
48位对端&48位源端MAC地址:描述了相邻的俩个指定物理硬件设备
16位上层协议:描述的是以太网帧中数据所使用的协议,用于数据分用时协议选择
32位数据帧尾:包含了校验和
2、ARP协议
介于链路层与网络层之间的一个协议,作用就是通过IP地址获取指定设备的mac地址
- 广播ARP请求:将目的端MAC地址设置为全1(广播地址),其中包含了自己的IP和MAC地址,以及指定设备的IP地址
- 收到ARP请求的主机,会验证目标IP地址是否与自己一致,不一致则丢弃,一致则组织ARP响应填充自己的MAC地址进行回复
3、ARP欺骗攻击
在局域网中有个恶意主机,不断地给局域网每个主机大量进行发送ARP响应,覆盖主机上的ARP映射表中的信息,告诉主机自己是网关,然后给网关发送ARP响应自己是主机。(设置防火墙,局域网中mac白名单)
4、MTU链路层限制最大传输单元:以太网默认是1500
对上层协议的影响:
4.1tcp
MSS——最大数据段大小,他就是根据MTU计算得到,tcp在传输层发送数据时,就是从缓冲区中取出不大于MSS大小的数据封装报头进行传输。(tcp传输数据时,在网络层不会出现数据分片)
MSS = MTU - 最小IP报头 - 最小TCP报头大小
4.2udp
没有MSS的协商,只要数据封装报头后大小小于64k就可以发送,但是在网络层若封装IP报头后大于MTU就会分片,然而一旦数据在网络层进行了数据分片,在对端主机上的网络层就需要进行分片重组(源端传输层交给网络层什么数据,对端网络层就要交给传输层什么数据)
然而一旦传输过程中,某个分片丢失,会导致分片重组失败,则整个报文就会被丢弃(udp不保证可靠传输-丢了就没了)
意味着分片越多,传输风险越大
因此tcp通信咱们程序员通常不用多管,但是udp通信时,程序员在应用层最好就要考虑更多要素,就是数据如果较大,就要在应用层,最好分包,分包大小就要考虑MTU,尽可能的减少分片的可能。