1、链路层的目的:
网络层Ip解决的跨网络发送数据,传输层TCP解决的是提供一系列策略保证数据能够可靠的发送,链路层解决的是两台主机之间的通信问题。
2、
以太网所有主机共享一个通信信道,当局域网中一台主机发送数据后,该局域网中所有的主机都能收到该数据。只要其他主机发现其所发数据不是给我的就丢弃。一旦出现两台主机所发数据在网络中碰撞,执行碰撞避免算法,只允许一台主机发送数据。
目的地址和源地址指的是网卡的Mac地址,长度48位,是在网卡出厂时固化的
如何将Mac帧的有效载荷和报头进行分离?
以太网MAC帧的帧头和帧尾都是固定长度的,去掉固定长度的帧头帧尾剩下的就是有效载荷了。
MAC帧如何决定将有效载荷交予上层哪一个协议?
在 MAC帧当中有两个字节的类型字段,因此在分离出报头和有效载荷后,根据该字段将有效载荷交付给上层的协议即可。
A主机把mac帧发送给局域网网中其他主机,本身也能收到,对CRC进行校验,如果产生了碰撞,执行碰撞算法避免,后续再发。如果没有,对应的接收方发现接受的是我自己,ok提取即可。其他人发现不是自己,舍去即可。
长度48位,6个字节。一般出厂就设置好了。
3、MAC地址和IP地址
实际数据在路由过程中会存在两套IP地址 ,源IP和目的IP,源MAC和目的MAC。
IP地址,描述的是总体的起点和终点。MAC地址描述的是一个区间的起点和终点。
源IP和目的IP可以理解为不变(NAT技术使得源ip会变),源MAC和目的MAC一直在变。
4、MTU:Maximum Transmission Unit,最大传输单元,描述的是底层数据帧一次最多可以发多少数据,不同数据链路层对应的物理层不一样。
以太网规定最大不超过1500字节,如果超过,ip分片从发。如果小于46字节,需要在数据后面填上填从位。
MTU对Ip的影响:分片
MTU对UDP的影响,一旦超过了MTU,ip分片,报文丢一个的概率增加,但UDP没有重发机制所以丢就丢了。
MTU对TCP的影响:分片后,也容易使得报文丢失,TCP可以重传,但是不分片丢的概率就小所以最好不分片。
所以TCP的最大报文长度MSS(Max Segment Size),应该受限于MTU。TCP通信双方建立链接的过程中就经过MSS协商,选取双方较小的MSS作为最终的MSS。MSS值实际就是TCP首部40字节的选项字段中的(kind=2)。
5、数据跨网络传输的一般过程
主机A想要跨网络把数据交给主机B,首先主机A对数据在添加一层MAC帧,交给局域网中的路由器A。 局域网其他主机也能收到,但一看MAC地址不是自己就不管了就丢弃。路由器一看MAC地址是自己,那就解开MAC帧。将包交给上一层,上层IP解开一看,查询路由表给路由器B。
再次封装MAC帧,将自己的MAC填成源MAC,下一个路由器B填成目的MAC。接着发。
相同过程只有B接受到,其他的一看不是自己就丢弃了,接着路由器C拿到,经过许多相似过程,最终B主机拿到了。
总结:数据在跨网络传输过程中,其对应的源IP和目的I一般不变,数据的源MAC和目的
MAC却一直在变化的,根本原因就是因为该数据对应的上一跳主机和下一跳主机在变,
数据链路层就是主机到主机之间的通信。
6、
ARP协议(Address Resolution Protocol),是根据IP地址获取MAC地址的一个TCP/IP协议。
ARP是MAC的上层协议。
ARP是MAC帧协议的上层协议,ARP数据格式中前3个字段和最后一个字段对应的就是以太网首部,由于包装ARP后MAC不足46字节,所以需要补上18位填充字段。
ARP请求流程:
ARP缓存表:
每次发起ARP请求后,都会建立对应主机的IP地址和MAC地址的映射关系,每台主机都维护了一个ARP缓存表,可以使用arp-a命令进行查看。20多分钟后就会失效
mac帧的报头中已经涵盖了源和目的MAC地址,为什么ARP包头中还要有这样的字段?
MAC帧和ARP虽然都在数据链路层,但毕竟是上下层关系,因此不会关心彼此包头中的数据。
此外,如果底层网络不是以太网,而是其他类型的网络,此时ARP地址就是必要的了
为什么不采用广播方式发送呢?
最好在数据链路层知道不是发给自己的就结束掉。都给ip层(属于系统层)浪费资源。
什么是RARP协议?
叫做Reverse Address Resoluton Protocol,反向地址转换协议,是根据mac地址获取ip的一个协议。
数据如何从服务器发回来,因为在使用NPT的时候将自己的IP替换成WAN口IP,回来时又将响应数据包中的目的换成局域网中的对应主机的IP。
NAT路由器是如何判断,应该从外网收到的响应数据包转发给局域网中的那一台主机呢?
查表: