个人主页:Lei宝啊
愿所有美好如期而遇
目录
以太网
以太网帧格式
Mac地址
对比IP地址和Mac地址
MTU
MTU对IP协议的影响
交换机
ARP协议
以太网
以太网是目前应用最广泛的局域网技术,和以太网并列的还有令牌环网以及无线LAN等。
以太网帧格式
第一行就是以太网帧格式,目的mac地址,源mac地址,类型指的是哪种协议将数据交给了他,他将来分用时,又要将数据交付给谁。这个类型字段有三种值,0800对应IP数据报,0806对应ARP协议,8035对应RARP协议。
Mac地址
Mac地址用来识别数据链路层中相连的节点,长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19),在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的。
对比IP地址和Mac地址
IP地址描述的是起点和终点,目的地址在传输过程中是不会改变的,源IP地址因为NAT技术,在传输过程中会替换为WAN口IP。
Mac地址在传输过程中,目的地址和源Mac地址一直会发生变化。
MTU
MTU叫做数据链路层的最大传输单元,不同的网络类型有不同的MTU,最大值1500称为以太网的最大传输单元。
简单来说,就是数据链路层要求以太网帧的数据长度最小是46字节,最大不超过1500字节,如果一个数据包交到数据链路层时超过了1500字节,就需要对数据进行分片。
MTU对IP协议的影响
我们上篇文章说到IP协议时,有三个字段没有解释,这里我们就可以解释那三个字段了。
当网络层向数据链路层交付的数据包大于他的MTU时,网络层就会进行分片,怎么分片?
IP报头的16位标识,用来标识主机发送的报文,如果这个报文被分片,那么每一片的这个字段都是相同的。
3位标志,第一位保留,第二位为1表示禁止分片,这时候如果报文长度超过MTU,那么这个报文就会被直接丢弃。第三位表示更多分片,如果分片了,那么最后一片报文设置为0,其他分片的报文设置为1.
13位片偏移,其实就是分片相对于原始IP报文开始处的偏移,实际偏移的字节数是这个字段乘以8,因此,除了第一个报文,其他报文的长度必须是8的整数倍,否则除8就可能除不清,报文也就不连续了。
我们从接收方角度来看看,报文是如何被组装的:
这里也就体现出了,为什么在Tcp传输层,滑动窗口中的数据不是一次全发到下层,而是分批次发送,就是为了减少下层的分片,尽量不使分片,因为分片是有危害的,一个就是增加了丢包概率,一个就是丢片后需要全部重传。
交换机
我们说在局域网主机间通信时,可能会发生数据碰撞,从而有碰撞避免策略,同时,一台主机发送消息,局域网内所有主机都会收到这个报文,只是丢不丢弃的问题,那么交换机就用来划分碰撞域。
当交换机中没有记录主机的位置时,同一侧的主机互相发送消息,另一侧的主机仍然会收到这个报文,然后丢弃,接下来,这两个主机的位置就被交换机记录下来,位于交换机的同一侧,下次他们再互相发送消息,这个报文不会到交换机的另一侧,直接就被拦截了,即使他们发生了数据碰撞,也不会影响到另一侧。
ARP协议
现在,整个网络通信,我们只剩下最后一个问题,那就是,在局域网下,以太网填充目的mac地址时填什么?他怎么知道对方的mac地址?
这就需要ARP协议将IP地址转换为Mac地址,怎么转换呢?
也就是说,主机A要向主机B发送消息,就在局域网中进行广播,向每一台主机发送ARP请求,当主机B收到这个ARP请求,与自己的IP地址核对,发现是发给自己的,就会发回ARP应答,也是这个格式,双方也就知道彼此的Mac地址了。
但是每一次发送消息都要发送ARP请求吗?不是,只是第一次发送时,之后就会将目标的IP地址和Mac地址建立映射关系进行保存。