MAC帧格式:

wKioL1c4SkyxlPO_AACeAAFC2xs838.png

       以太网帧格式由5个字段组成,前两个字段分别是6字节长的目的地址和源地址字段,是指网卡的硬件地址(MAC地址)。第三个字段是2字节的类型字段,用来标识上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,当类型字段的值是0X0800时,就表示上层使用的是IP数据报。第四个字段是数据字段,其长度在46~1500字节之间。最后一个字段是4字节的帧检验序列FCS(CRC检验)。最大值1500称为以太网的最大传输单元(MTU),如果数据报长度大于这个长度,需要对数据报进行分片。MTU指数据帧中有效载荷的最大长度,不包括帧首部的长度。

       我们可以发现,在MAC帧格式中,没有一个帧长度字段,MAC子层怎么知道从接收的以太网帧中取出多少字节的数据交付上一层呢?我们知道以太网发送的数据都使用曼彻斯特编码信号的,在曼彻斯特编码的每一个码元的正中间一定有一次电压的转换,当发送方把一个以太网帧发送完毕后,就不在发送其他码元了,因此发送方网络适配器的接口上的电压也就不再变换了。这样接收方就可以知道以太网帧的结束位置了。

ARP数据报格式:

wKioL1c4VTKxxyMAAACE1iq9ZS8239.png

下面我们解释一下数据报格式中的部分字段:

       帧类型为:ARP协议类型

       硬件类型:指链路层网络类型,1为以太网;

       协议类型:指要转换的地址类型,例0X0800为IP地址;

       后面两个地址长度:相对于以太网地址和IP地址分别为6字节和4字节;

       op字段:op为1表示ARP请求,op为2表示应答;


       在我们实际已经知道了一个机器(主机或路由器)的IP地址,需要找到其相应的硬件地址,地址解析协议ARP就是帮我们解决这个问题的。它是为了从网络层使用的IP地址解析出在数据链路层使用的硬件地址。每个主机都维护一个ARP缓存表,里面有本局域网上的各个主机和路由器的IP地址到硬件地址的映射表。

       当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。当查不到主机B的IP地址时,主机A自动运行ARP,然后按下面的方法找到主机B的硬件地址:

        1.ARP进程在本局域网上广播发送一个ARP请求分组;

        2.在本局域网上的所有主机上运行的ARP进程都能收到此ARP请求分组;

        3.主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A 发送ARP响应分组,并在这个ARP响应分组中写上自己的硬件地址。其他所有的主机IP地址都与请求分组中查询的IP地址不一致,不予回应这个ARP请求分组。

        4.主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。


IP数据报格式:

wKioL1c4W-mQypD9AADpFh1snXk363.png

        IP数据报格式能够说明IP协议具有什么功能。一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。后面是一些可选字段,其长度是可变的。下面我们来说下各字段的意义:

        4位版本:对于IPv4,4位版本字段是4;

        首部长度:占4位,首部长度字段所表示数的单位是32位子。因此,首部长度字段的最小值是5.也就是说,首部长度最小是20字节,4位能表示的最大值是15,也就是首部长度最大是60字节。

        8位服务类型:有3个位用来指定IP数据报的优先级,还有4个位表示可选的服务类型,还有一个位总是0.

        16位总长度:是整个数据报的字节数。

        16位标识:每传送一个数据报,计数器就加1

        3位标识和13位片移用于分片

        生存时间:TTL,表明数据报在网络中的寿命。由发出数据报的原点设置这个字段。其,其目的是防止无法交付的数据报无限制的在因特网中逗留而白白消耗网络资源;

        8位协议字段指出此数据包携带的数据是何种协议,以便使目的主机IP层知道应将数据部分上交到那个处理过程

        16位首部校验和:这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部校验和。数据的校验由更高层协议负责。