设为首页收藏本站language 语言切换
查看: 24146|回复: 7
收起左侧

[原创] 以太网帧头部、IP头部报文深度分析

[复制链接]
发表于 2013-4-8 10:37:37 | 显示全部楼层 |阅读模式
以太网帧头:
以太网帧头,这个说法不是很确切,因为以太网帧还包括一个4个字节的CRC尾部校验和。
所以以太网帧包括的字段为:
1、目的MAC:6个字节(这个地方有一个小知识,因为后来源IP 目的IP 源端口 目的端口信息中,源始终是放在前面的,而这里目的MAC放在了前面,原因在于现在转发形式为存储转发,而在这里还有一条转发方式叫做快速转发,即只查找目的MAC地址,即直接转发,所以将目的MAC放在前面查找的过程中速度会加快)。
2、源MAC地址:6个字节。
3、协议类型(作用是标识高层协议),2个字节,这里我们只说以太网帧(Ethernet Ⅱ),下面介绍一些常用的协议标识:

       IPv4               0x0800
       IPX                 0x8137
       ARP                0x0806
       Pause Control 0x8808
       IPv6               0x86DD

下面我来说一些IP头部的报文结构内容:
这个的IP头部的主要内容指的是IPv4头部信息,IPv4的报文头部最小为20字节,最长为60字节,这个我会在一会儿讲头长度信息中根据报文内容解析:

首先我们讲按照IPv4的20字节首部来解析:以下所说的IP头部均代表IPv4的头部信息。IP头部是以4字节(32位)为单位排列:

1、第一个四字节(32位):

VERSION(版本)信息,4位,常用的有两种IPv4和IPv6:由于为4位,所以该处的信息为0100和0110两种情况。

HEADER LENGTH(头部长度)信息,4位,所以能表示的范围是十进制是0到15之间。这里可能有人有疑问,为什么IP首部长度最短为20字节,这里表示范围却只有0到15之间,原因在于真正的长度字段为mutiple of 4,即为4的倍数,所以这里能表示的范围是0到60字节,所以你在报文中该字段可以看到二进制数为0101,十进制为5,即为首部长度为20字节。

TOS字段(TYPE OF SERVICE)服务类型,8位:这里的8位用于QOS模式:

8位中的前三位为优先级字段:一共有8种可能

000  ROUTINE
001  PRIORITY
010  IMMEDIATE
011  Flash
100  FLASH OVERRIDE
101  CRITIC/ECP
110  INTERNET CONTROL
111  NETWORK CONTROL

后五位为表示数据在传输过程中的要求信息:这些信息分别为延迟、吞吐量、可靠性、代价和保留。
其中前四个位:分别可以分别为0和1:其中0代表正常,1代表低。

TOTAL LENGTH(总长度)字段:16位,可以表示的范围是0到65535之间。这里的总长度字段不包括帧头和帧尾,只是IP报文的总长度(包括IP头部)。

2、第二个四字节(32位):

首先为16位的标识字段(IDENTIFIER):该字段的表示范围是0到65535之间,标识在长报文分片后,该报文位于分片中的第几片信息。

然后为3位的FLAG字段,该字段的标记字段,第1位 保留不使用,第2位为不分片位(DF位),当该位被设置为1时,当DF位被置1,表示路由器不能对数据报文进行分片处理,如果报文由于不能被分片而不能被转发,那么路由器将丢弃这个数据包,并向源地址发送错误报告。第三位MF位,当路由器对数据进行分片时,除了最后一个分片的MF位为0外,其他所有的MF为全部为1,表示其后面还有其他的分片。

3、第三个四字节(32位):

首先8位为生存时间位:(TTL字段):字段长度为8位,在最初创建报文时,TTL就被设定为某个特定值,当报文沿路由器传送时,每经过一个路由器TTL的值就会减小1,当TTL为零的时候,就会丢弃这个报文,同时向源地址发送错误报告,促使重新发送。默认值为64,在某些特殊的报文中,如组播报文,该位会被置1.

协议――字段长度为8位,它给出了主机到主机或者传输层的地址或者协议号,协议字段中指定了报文中信息的类型。这里介绍一些常用的协议报文:如1 代表ICMP 2代表IGMP  6是TCP 17是 UDP 等。

16位的首部校验和信息:注意该字段的检验和主要针对的是IP头部校验,而对数据的校验主要由TCP UDP ICMP协议中的内容对其进行校验。

4.第四个四字节(32位):

32位的源IP地址。

5.第五个四字节(32位):

32位的目的IP地址。

其它IP报文的可选项中还有很多其它强大的功能,这些功能就不在这里介绍了,有兴趣的人可以 看一个 用TCP/IP进行网际可联这本书的内容。

以上的内容如有错误,欢迎指正,共同进步。


发表于 2013-4-12 15:09:12 | 显示全部楼层
学习了
沙发 2013-4-12 15:09:12 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-4-22 13:16:50 | 显示全部楼层
谢谢,O(∩_∩)O哈哈~
板凳 2013-4-22 13:16:50 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-4-27 22:55:24 | 显示全部楼层
谢谢分享,谢谢分享
地板 2013-4-27 22:55:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-4-27 22:56:53 | 显示全部楼层
谢谢分享,谢谢分享
5# 2013-4-27 22:56:53 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-4-27 22:57:38 | 显示全部楼层
谢谢分享,谢谢分享
6# 2013-4-27 22:57:38 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-5-23 10:33:35 | 显示全部楼层
谢谢分享
7# 2013-5-23 10:33:35 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-11 20:54:17 | 显示全部楼层
8# 2013-8-11 20:54:17 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-28 01:45 , Processed in 0.170780 second(s), 26 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表