网络层数据包的结构分析

今天在学习网络层的知识,记录一下数据包的结构格式。
在这里插入图片描述
在这里插入图片描述
对照一下,接下来看看各个部分:
1,版本就不说了,不是4就是6,头长是一般是20bytes。

2,区分服务(服务类型):在各种数据的传输过程中,有些数据可能是对带宽要求比较严格的,如我们在ip通话、视频聊天的时候,这个时候给区分服务加个标志,代表这个数据可以优先享受通信。

3,总长度:就是整个数据包的长度。可以看到总共占16个bytes,即2的16次方65535。也就是说总长度可以传输65535个bytes的数据。但是,我们知道在数据链路层中最多只能传输一千多(好像是,具体忘记了),于是这个时候就会产生分片,也就是说从网络层下来的数据要分片才能被数据链路层接收。

4,如第三点所说,数据包被分片后,要怎么知道他们是同一个数据包呢?方法就是通过标识来识别,比如我们可以给分片的数据包的标识都设置为100。

5,那么标志呢?标志是用来识别这个数据包是分片的还是没有分片的。占3位,最后1位是1的话代表后面还有分片数据包,0的话代表是最后一个数据包了。中间一位是0的话,代表允许分片,是1的话代表不允许分片(Dont Fragment)。第一位是保留位,还没有具体设置。

6,段偏移量:
在这里插入图片描述
看一下上图,可以看到每个数据包的段偏移量都是首个数据的起点的字节大小除以8,即得到段偏移量。

7,生存时间:即TTL,数据包每经过一个路由的时候TTL都会减一,当TTL为0的时候,则数据包丢失,一般这种情况发生在路由器环路(现在路由器应该没这么愚蠢了吧)。各个系统的TTL时间不一样,一般Windows128,Linux64,Unix255(这里操作系统指的是目的主机,不是我们自己的主机,比如我ping baidu.com,然后返回的TTL为40的话,就说明经过了24个路由,一般服务器都是Linux。

8,协议代码:代表网络层中的数据是什么数据,比如是UDP还是TCP、ICMP等等。如果是ICMP的话,那么数据直接交给网络层去处理就好了,如果是TCP,那么就交给传输层,如果是OSPF,也是网络层。(其实这里有点不太理解,以后全弄明白了再来补一下)。
不同协议号:
ICMP:1
IGMP:2
TCP:6
UDP:17
IPv6:41
OSPF:89

9,首部检验和:是为了检测首部数据在传输过程中是否出错的。具体计算方式以后有机会说一下。计算结果出错则丢弃。

10,源地址和目的地址就不说了。

11,可选选项:有可选字段和填充,为了增加ip4的功能,而ipv6就没有这个部分。

12,前面说了首部有20字节,所以第11点不包含在里面的哦。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值