Linux--深入解析IP协议

IP协议属于网络层协议,它是网络层最终要的协议,没有之一!首先我们先从IP协议的报头格式看起
IP协议报头格式
这里写图片描述
下面我们一个一个分析这些字段的意思:

  1. 4位版本号:最常见的就是IPV4和IPV6了
  2. 4位首部长度:表示IP协议首部最大长度为15*4(字节)=60(字节)
  3. 8为服务类型:这里不多做介绍
  4. 16为总长度:表示IP数据报整体占多少个字节(包含首部和有效载荷)
  5. 16位标识:第二行是用来进行分片和组装的,因为底层(MTU最大传送单元的限制),所以发送的数据不能无限大,如果IP报文太大就可能会有分片的需求,分片是在数据链路层完成的,而组装是在对方的IP层完成的,如果要进行分片的话,就要对第二层的这些字段进行设置用来在对方IP层可以恢复,分片完成后,每一个报文的首部都和源报文差不多,16位标识唯一记录了一个IP包的ID(ipid),具有同一个ID的IP分片将会重新组装,因为对方可能会收到很多报文,就可以通过16位标识来识别同一台主机的同一个报文,即同台主机的同一个报文经过分片后,16位标识是相同的。
  6. 3位标志位:用来标识最后一个分片报文,因为对方不知道“你”到底分了多少片。
  7. 13位片偏移:可以通过13位片偏移的偏移量大小将分片的报文有序的组装起来,并且还可以判断出哪些报文丢失。
  8. 8位生存时间:(Time To Live)这里的时间不是我们理解的那种时间,更像是一种“计数器”, 他表示数据报到达目的地的最大报文跳数(通常为64),没经过一个路由,值就 -= 1;如果减到0还没到达目的地,就会丢弃该报文。
  9. 16位首部校验和:通过CRC校验,鉴别首部是否正确。
  10. 32位源IP地址和32位目的IP地址:表示发送端和接收端(从哪来到哪去)

    在网络上发送数据的时候,我们都知道,要通过目的IP地址在网络上找到对方主机,那么该怎么通过IP地址找呢?首先我们要知道IP地址都代表什么含义,其实IP地址分为两个部分,分别为网络号和主机号,是通过网段划分来将IP地址分为网络号和主机号,在找目标主机的时候,先通过网络号找到目标主机所在的目标网络,再根据主机号找到目标主机,那么为什么要划分呢?不能直接通过IP地址找吗?其实这里最主要的原因就是为了方便查找,试着想想,学校为了方便标识每一名学生,也是将学号(201506020925)划分为不同的字段,前面几个(2015)表示你的年纪,接下来(0602)表示你所在的学院和专业,最后为班级和编号,为什么这么做呢?还不是为了方便找到你,网段划分也是为了方便查找,所以划分。

当数据到达IP层后,它就要关注数据要怎么到目标主机,这个“怎么到”更像是为到目的地而找一条通往目的地的路线,而不是关心具体怎么到。而找一条通往目的地的路线就要通过路由器路由来完成了。主机也拥有路由的功能。

路由
路由的过程更像是“问路”的过程,当我们要去一个地方时当时并不知道它具体在哪,只是知道地名,可能就会去找一个路人问路,通常情况下,问一个陌生人可能会得到三种结果,第一种,他知道怎么去,他会告诉你,不能直接到,你得先去哪,再去哪……第二种,他不知道怎么去,但是他知道路边的另一个人知道怎么去目的地,然后你就去问那个人;第三种,他会告诉你,你已经到了。这三种情况就是对应路由的过程,在进行路由时,路由器会在自己的路由表上查找目的IP,有的话,就是第一种情况,数据包得先被发送到那个路由器上,才有可能到;如果没有,因为路由表上都会有一个缺省路由(他不知道,缺省路由肯定知道),这种情况对应第二种,最后一种,发现你要找的目标网络就是路由器所处得目标网络,他会告诉你“小伙子,你已经到了!”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值