前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络层协议:IP协议详解

网络层协议:IP协议详解

作者头像
用户7557625
发布2020-07-15 10:47:09
2K0
发布2020-07-15 10:47:09
举报

简介:

IP协议属于网络层协议,所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种不可靠,无连接的数据包交付服务。依赖其他层的协议进行差错控制。 不可靠: IP数据报不保证能成功的到达目的地,如果出现错误则选择丢弃该数据,然后发送ICMP消息报给信源端 无连接: IP不提供任何后续数据报的状态信息,每个数据报处理都是独立的。如果一个信源发送了连续的两个数据报,每个数据报选择独立的路由,两个数据可能不同时到达。IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。

ipv4数据报

ipv4数据报
ipv4数据报

1.版本号:占四位,就是IP协议的版本,通信双方的IP协议必须要达到一致,IPv4的版本就是4.

2.首部长度:占四位,因为长度为四比特,所以首部长度的最大值为1111,15,又因为首部长度代表的单位长度为32个字(也就是4个字节),所以首部长度的最小值就是0101,当然,也确实如此,大部分的ip头部中首部字节都是0101.也就是5*4=20个字节,如果是最大值15的话,ip首部的最大值就是60个字节,所以记好了,ipv4首部长度的最大值就是60,当然当中我们又能发现,IPv4的首段长度一定是4字节的整数倍,要是不是怎么办呢?别急,后面的填充字段会自动填充补齐到4字节的整数倍的。

3.区分服务:这个没有什么用处,也没有什么好讲的了,只要自动这玩意占八位,一个字节就可以了。

4.总长度:占16位,这个的意思就是ip数据报中首部和数据的总和的长度,因为占16位,所以很好理解,总长度的最大值就是2的16次方减一,65535,这玩意也对应着还有一个很简单的概念,最大传输单元mtu,意味着一个IP数据报的最大长度就只能装下65535个字节,要是传输的长度超过这个怎么办,很简单,分片。

5.标识:占16位,标识这玩意很好理解,IP在存储器中维持一个计数器,每产生一个 数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是平常的序号,因为IP是 无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分 片时,这个标识字段的值就被复制到所有的数据报片的标识字段中,等到重组的时候,相同标识符的值的数据报就会被重新组装成一个数据报。

6.标志:占三位,一般有用的是前两位, 最低位叫做MF,MF=1表示后面还有若干个数据报,MF=0表示这已经是最后一个数据报了。 中间位叫做DF,DF表示不能进行分片,DF=0才可以进行分片操作。

7.片偏移:占13位,片偏移就是,在原来的数据报分片以后,该片在原分组中的相对位置,片偏移中的基本单位是8字节,所以,也就是说,只要是分片,每个分片的长度都是8字节的整数倍,最后一个分片不够八字节的一样是填充。

8.生存时间ttl:占8位,(time to live),表明数据报在网络中的寿命,这个值被设定成跳数,顾名思义,就是这个数据报可以经过多少个路由器的数量,每经过一个路由器,该值就减一,减到为零的时候就被抛弃,显而易见,这个跳数的最大值就是2的8次方减一,255.

9.协议:就是用来指明数据报携带了哪种协议,占8位。

10.首部效验和:占16位,这个字段用来效验数据报首段,下面给出简单的计算方法:

首先在发送端的时候,将效验和全部置为0,然后把数据报首段数据全部进行反码相加,得到的值为效验和,放入首段效验和里面,然后接收端将数据报首段数据和效验和一起全部反码相加,最后若是得到零,则保留,若是不为零,则说明数据报在传输的过程中发生了改变,则丢弃该数据报。

11.IP源地址:占32位,将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

12.目的地址:也占32位,转换方法和来源IP地址一样。

13.选项:可变长的可选信息,最多包含40字节。选项字段很少被使用。可用的IP可选项有:   a. 记录路由: 记录数据包途径的所有路由的IP,这样可以追踪数据包的传递路径   b. 时间戳: 记录每个路由器数据报被转发的时间或者时间与IP地址对,这样就可以测量途径路由之间数据报的传输的时间   c. 松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器   d. 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器   e. 上层协议(如TCP/UDP)的头部信息

13.到了可变部分IPv4的头部基本上就已经讲完了,增加头部的可变选项实际上就是增加了数据报的功能,可变选项在实际上是很少用到的。

分片

当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。 IP头部中的如下三个字段给IP的分片和重组提供了足够的信息:数据报标识、标志和片偏移。一个IP数据报的每个分片都具有自己的IP头部,它们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片外,其他分片都将设置MF标志。此外,每个分片的IP头部的总长度字段将被设置位该分片的长度。

IP路由

路由是什么: 我们知道,IP地址是网络世界里的门牌号。你可以通过IP地址访问远在天边的网站,那么数据是如何到达网站的呢?靠的就是路径上每个节点的路由。 路由,简单的说就是指导IP报文该去哪的指示牌。

一般说来,主机会在以下两个时机进行路由查询

  • 1.收到报文时,查询路由决定是上送本机(LOCAL IN),或者从哪个出接口转发(FORWARD)
  • 2.本机发送报文时,查询报文出接口 注意,转发需要开启 net/ipv4/ip_forward

路由表长什么样 以一个典型的主机为例,tristan有一个外部网卡enp1s0和一个内部还回网卡lo

在这里插入图片描述
在这里插入图片描述

通过route -n我们可以看到主机上简要的路由表信息(当然通过ip route也可以),那么上面的路由信息中的每一表项代表什么意思呢?

  • 如果报文的目的IP地址在164.69.136.0/24这个网段,那么它应该从enp1s0进行转发。
  • 如果报文的目的IP地址在169.254.0.0/8这个网段,那么它应该从enp1s0进行转发。
  • 其他情况下(0.0.0.0/0),报文从enp1s0转发,下一跳IP地址是192.168.99.254

IP转发

当主机收到一个数据报时,首先检查目的地址:

  • 如果是自己(自己某一个接口所配置的IP地址或IP广播或者组播地址),则交给协议字段或者IPv6头部的下一个头部字段指定的协议模块处理。
  • 如果不是:
    • 如果IP层被配置为路由器,则转发该数据报。
    • 否则默默丢弃,必要时生成ICMP报文给发送者。

转发不会改变数据报的IP地址,只是通过设置链路层地址来完成交付的过程:

  • 发送者定义好源IP和目的IP,如果目的IP不在本地,则将链路层的目的MAC地址设置为路由器,由路由器代为转发。
  • 每一跳路由器在转发时,都会将源MAC地址设置为自己,目的MAC地址设置为下一跳路由器。

IP地址介绍

ip地址组成 : IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开 这是点分2进制 如果换算为10进制我们称为点分10进制.每个ip地址由两部分组成网络地址(NetID)和主机地址(HostID).网络地址表示其属于互联网中的哪一个网络,而主机地址则表示其属于该网络中的哪一台主机.

在这里插入图片描述
在这里插入图片描述

A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。因此 A类地址的范围其实是从1-126之间。   如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。转换为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.1 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1千多万个主机(2的24次方的-2主机数目)。 以子网掩码来进行区别::255.0.0.0 127.0.0.0到127.255.255.255是保留地址,用做循环测试用的

B类地址:范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码。转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。(2的16次方-2) 以子网掩码来进行区别:255.255.0.0 169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。

C类地址:范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码为本地计算机的号码。转换为2进制来说,一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。(2的8次方-2) 以子网掩码来进行区别: 255.255.255.0

D类地址:范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 224.0.0.0-239.255.255.255 组播地址

E类地址:范围从240-254,以“11110”开始,为将来使用保留。 全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。 240.0.0.0-255.255.255.254 保留地址

子网掩码就是为了区分ip地址的中的网络号和主机号的。

私有地址 所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址 在A类地址中,10.0.0.0到10.255.255.255是私有地址 在B类地址中,172.16.0.0到172.31.255.255是私有地址。 在C类地址中,192.168.0.0到192.168.255.255是私有地址。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介:
  • ipv4数据报
  • 分片
  • IP路由
  • IP转发
  • IP地址介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档