IP层八股文

上古伪神

共 2148字,需浏览 5分钟

 · 2021-04-11


前言

上一篇记录了一下链路层相关的知识点,其中包括链路层的作用、ARP、RARP等。

今天来记录一下IP层相关的知识点,当然也是八股文。

IP:网际协议

IP是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。

IP提供的是不可靠、无连接的数据报服务。

「不可靠」

不能保证IP数据报能成功发送到目的地,IP仅提供最好的传输服务。

如果发生某种错误比如某个路由器暂时用完了缓冲区,

处理方法就是丢弃该数据报,然后发送ICMP消息报给信源端。

任何要求的可靠性必须有上层(如TCP)来提供。

「无连接」

IP并不维护后续数据报的状态信息。每个数据报的处理都是相互独立的。

IP首部

普通的IP首部长度为20字节

「首部长度」

首部占32bit的数目,由于是一个4比特的字段,因此首部最长为60个字节。

「总字段长度」

整个IP数据报的长度,以字节为单位。

利用首部长度字段和总长度字节,就可以知道IP数据报中数据内容的起始位置和长度。

该字段长度为16bit,所有IP数据报最长为65535字节。2^16-1

「TTL生存时间字段:」

数据报可以经过的最多路由器数,指定了数据报生存时间。

经过一个路由器,值就减1,当值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

「网络字节序:」

4个字节的32bit值以下面的次序传输:

首先是0~7bit,

其次是8~15bit,

然后16~23bit,

最后是24~31bit。

TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序传输。

传输数据之前必须把首部转换成网络字节序。

每一份数据报都包含源IP地址和目标IP地址。

IP路由选择

IP可以从TCP、UDP、ICMP、IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。

「路由表」

IP层在内存中有一个路由表,当收到数据报并进行发送时,都要对该表搜索一次。

当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址,

如果是,数据报就被送到由IP首部协议字段所指定的协议模块进行处理,

反之,如IP层被设置有路由转发的功能,则将数据报转发,否则将丢弃数据报。

路由表中的每一项都包含如下信息:

  • 目的IP地址
  • 下一个路由器的IP地址,或有直连网络IP地址。
  • 标志:其中一个标志指明目的IP地址是网络还是主机地址,另一个标志指明下一个路由器是否为真正的下一站路由器,还是一个直连接口。
  • 为数据报的传输指定一个网络接口。

IP路由选择是逐跳地进行的,IP并不知道到达任何目的的完整路径,所有的IP路由选择只为数据报传输提供下一站路由器的IP地址。

IP路由选择主要完成以下功能:

(如果下面的步骤都没有成功,那么该数据报就不能被传送。)

(1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配),找到则把报文发送给该表目指定的下一站路由器或直连的网络接口。

(2)搜索路由表,寻找能与目的网络号相匹配的表目,找到则把报文发送给该表目指定的下一站路由器或直连的网络接口。目的网络上的所有主机都可以通过这个表目来处置。

(3)搜索路由表,寻找默认的表目,找到则把报文发送给该表目指定的下一站路由器。

看枯燥的文字不如直接看下图

子网寻址

子网编址,不是把IP地址仅仅看成一个网络号和一个主机号,而是把主机号再分成一个子网号和一个主机号。全0或全1的主机号都是无效的。

比如一个B类网络140.252,在剩下的16bit中,8bit用于子网号,8bit用于主机号,这样就有254个子网,每个子网又有254台主机。

子网对外部路由器来说隐藏了内部网络组织的细节,子网对于子网内部的路由器是不透明的。可以缩小Internet路由表的规模。

一份来自Internet的数据报到达gateway,它的目的地址是140.252.57.1。路由器gateway需要知道子网号是57,然后把它送到kpno。同样,kpno必须把数据报送到R55,最后由R55把它送到R57。

子网掩码

除了IP地址以外,主机还需要知道有多少比特用于子网络号及多少bit用于主机号,这是通过子网掩码来确定的,子网掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,值为0的比特留给主机号。

例如:

子网掩码一般用十六进制表示,是一个比特掩码。

给定IP地址和子网掩码以后,主机就可以确定IP数据报的目的是:

  • 本子网上的主机。(最后的主机号不一致)
  • 本网络中的其他子网的主机。(子网号不一致)
  • 其他网络的主机(网络号不一致)

当然,根据前一篇所说的CIDR(无类型域间选路)可以获取到网络号、子网掩码、网络中的第一个地址、广播地址信息。



往期推荐:

CV工程师用不到的链路层知识点

星巴克气氛组电脑是如何获取IP的

浏览器发起HTTP请求后经历了什么?

推荐一个生产环境问题排查利器

MySQL系列文章

k8s全系列文章汇总

浏览 82
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报