每日一课&(数据链路层与IP包头)

第三课:数据链路层与IP包头。

数据链路层:传输数据帧,数据帧的报文格式是:D.MACS.MACTYPEDATAFCS。日常说的二层通信实际上指的就是在数据链路层的通信,数据链路层通信是基于源MAC学习,基于目的MAC转发。数据链路层的主要作用就是提供MAC寻址。

数据帧的封装过程:在数据包中添加上帧头--目的MAC,源MACTYPE类型和帧尾FCS校验字段,将数据包封装成一个数据帧。数据的封装过程是由里到外,也就是从上层到下层;数据解封装是从外到里,也就是从底层到高层。

报文字段详解:

目的MAC:数据帧中的目标网络的MAC地址,也就是需要将数据传给该MAC地址。

源MAC:数据帧中的源MAC地址,当数据传递给对方时,对方可以根据数据帧中的源MAC地址进行数据回复。

TYPE:类型字段,标识上层使用的是何种协议,比如数据链路层的上层是网络层,如果在TYPE字段中显示值为0x0800则表示在上层使用的是IP协议则上层是网络层。如果是0x0806表示上层使用的是ARP协议,早期网络中并没有定义ARP属于哪层,只能说是数据链路层之上,但是不属于网络层。

DATA:数据信息,上层进行封装需要传输的数据信息。

FCS:帧校验字段,在接收到一个数据帧时先进行数据帧的校验(查看数据是否被篡改或损坏),校验通过后再进行处理。

MAC地址分类:在第一个节字中的第8位是0则表示该MAC是单播MAC。8位是1则表示该MAC是组播MAC,如果MAC的6个字节全为F则表示MAC是广播形的

IP包头报文格式:

Vs:版本号4个(bit),现在使用的是IPV4,使用二进制表示就是  0000 0100;以后会是IPV6 0000 0110.

Header length:头部长度4(bit),代表IPV4的包头长度。

DSF: 8个bit。也称为TOS,在早期使用3bit进行取值,可以提供0-7共8种取值,由于8种取值无法满足使用则扩展到6bit,0-63共64种取值,该取值类型称为DSCP值。只要用于QOS进行区分服务的。

Total length:总长度16bit,代表整体报文的总长度。总长度-包头长度=数据长度

Identification:标志字段共16bit,用来标记同一组数据包。数据在分片后就需要使用到该字段标识出相同的一组数据包。

Flags:标示符3bit,里面有三种类型,有一种用于保留没被使用,另外两种是 DFMFDF1后表示该数据包不允许分片。MF1后表示该数据包后面还有更多分片。

Fragment offse:段偏移量13bit,用来标记该分片排在整个数据包中哪个位置。比如MTU规定了最大数据包为1500,那么发送数据时IP包头占了20字节也就是数据只能发1480,当该字段值显示为4440则代表偏移了31480,也就是在分片中排在第4,没有偏移的分片0排在第一,偏移了1480排第二,偏移了2960排第三。

TTL:生存时间8bit,一种防环机制,每经过一台三层设备就-1,默认是255.

Protocol:协议号8bit,用来表示上层使用的是什么服务,如网络层的上层是传输层,那这个字段就用来表示这个数据包在传输层是使用TCP还是UDP,如果显示为6则表示数据包在传输层使用的是TCP协议,如果是17则表示使用的是UDP协议。

Header Checksum :校验和16bit,这个和数据链路层的数据帧的校验不一样,数据帧是校验整个数据,而IP报文中这个字段只是校验IP包头。

IP32bit,发送端的源IP地址,在网络层是通过IP寻址方式进行数据通信,与数据链路层的源MAC地址使用方式类似。

目的IP32bit,接收端的IP地址,在网络层是通过IP寻址方式进行数据通信,与数据链路层的目的MAC地址使用方式类似。

IP Opti:可选项,用来封装一些其他数据。最大时占40个字节,IP包头是20字节,也就是整个IP包头就是20-60个字节。

 

猜你喜欢

转载自blog.51cto.com/14171218/2680384