IP协议解读(二)

IP协议是TCP协议栈中的核心协议,也是网络编程的基础之一。

我们接着在IP协议解读(一)继续学习

网络层作用

IP分片:

  • IP数据报的长度超过帧的MTU时,将会被分片传输。分片可能发生在发送端,也可能发生在中转路由器上,并且可能在传输过程中被多次分片。最终会在接收器上被IP模块重新组装。
  • IP协议解读(一)中讲述了16位数据报标识、3位的标识,13位的片偏移给分片和重组提供了足够的信息。一个IP数据报的每个分片都具有自己的头部。他们具有相同的标识值,但具有不同的片偏移。
  • 以太网的MTU位1500字节,因此它能携带的最大字节量位1480字节,因为IP头部包含20个字节。假如我们使用以太网帧传输用IP数据报封装的1481个字节的ICMP数据报。这个时候>1480字节,所以就会出现分片现象

    那么1481个字节的数据+20字节的IP头部=1501字节的IP数据报=IP分片(1500字节)+IP分片(21字节)

    结构如图所示:

从以上的图片我可以分析出来,ICMP头部的8个字节被分配到第一个分片中,其中1472字节的ICMP的数据也被分配到第一个分片中,这样IP头+ICMP头部结构+部分ICMP数据组成了最大的IP分片(1500字节),剩下的一个个字节的ICMP数据被分配到第二个IP分片中(21字节)

下面我们用实例演示:

我们使用ping命令指定每次发送的大小位1473个字节

ping www.baidu.com -s 1473

我们使用tcpdump命令抓取ping过程中的icmp数据包

tcpdump -ntv -i eth0 icmp

===============查看分析抓去结果=====================

结果如图所示:

从图片中我们可以看出,前两个数据报的ip分片id(标识值)都是27300,说明这两个是同一个分片,第一个分片的offset(偏移值)为0,第二个分片的offset(偏移值)为0位1480.根据信息显示,第一个ICMP占1480个字节,第二个长度为21.

IP路由选择机制:

路由选择是IP协议的核心任务,指定了发送数据报到目标路径的途径

  • 当IP模块接受到来自网络驱动程序发来的IP数据报时,首先对头部进行CRC校验,确定这个数据包在传输过程中没有被损坏。
  • 如果发现IP头部信息中带有源站选路选项,那么IP模块调用数据报转发子模块处理这个数据报。
  • 如果这个IP数据报头部结构中目标IP地址是本机的IP地址或是广播地址,就是说明这个数据报是发送给本机的IP模块就必须根据数据报的头部结构协议字段将它发给哪个上层应用。
  • 如果IP模块发现这个数据报不是发送给本机的,同样也掉中转发子模块处理这个数据报,转发子模块首先需要检验这个数据报是否被允许转发。不允许的话这个数据报就会被丢弃。允许的话数据报转发子模块将对这个数据报进行一系列的操作,然后将它交给IP数据报输出子模块。
  • 其实呢,IP数据报应该发送到哪一个吓一跳路由,经过哪个网卡来发送,是计算吓一跳路由这个模块完成的。
  • IP模块实现数据报路由的核心数据结构就是路由表,这个表是按照目的IP进行分类。
  • IP输出队列中是所有等待发出的数据报。
  • 虚线箭头是整个路由表的更新过程

IP路由选择过程:

  • 查找完全匹配的主机地址,如果找到就是用该路由项,如果未找到,进入下一个步骤
  • 查找相同网络ID的网络IP地址,如果找到就是用该路由项,如果未找到,进入下第三个步骤
  • 选择默认路由项,这意味着下一跳的路由地址是网关

IP转发过程:

路由器转发模块的执行过程如下:

  • 检查数据报头部的TTL值(TTL为0丢弃这个数据报)。
  • 查看数据包的严格源路由的选择选项,如果被设置,检测数据报的目的IP地址是否和本机的某个IP地址相同,如果不是,发送一个ICMP差错报文。
  • 给源端发送一个ICMP重定向报文(下一个文章分享)。
  • 将TTL值减1
  • 处理IP头部选项
  • 如果有必要,执行IP分片操作

路由表更新:

路由表必须具备更新,反应网络中的连接的变化,这样IP模块才能准确,高效的转发数据报。

进行实例演示。

Linux下使用明route命令查看当前主机下的路由表信息。

第一行表示子系统下的默认路由

使用route命令添加路由表

删除对应项

删除默认路由项,这样做的后果就是无法访问因特网。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 10:16:44

IP协议解读(二)的相关文章

SD3.0协议解读二

在阅读本文章之前,请先思考一下什么是总线,总线的作用是什么?相信大家都学过I2C总线,它由SCL和SDA两条线组成,通过这两条线就能完成各种通信.同样地,SD卡通信也需要有自己的总线模式.SD卡还比较牛逼,支持SD总线和SPI总线,老衲接触的比较多的是SD总线,所以这篇文章仅介绍SD总线,对于SPI总线老衲以后有机会再介绍. SD总线: 大家都知道总线一般支持多种频率,在默认的频率下,SD总线支持一(主)对多(从)的模式,即支持一个HOST对多个SD卡的模式.但是,在高速和UHS-I,SD总线只

TCP/IP协议简介(二) 之 链路层介绍

链路层介绍 一.简介 上一节已经介绍过,网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层. 为达到这一目的,数据链路必须具备一系列相应的功能,主要有: 将数据封装为帧(frame),帧是数据链路层的传送单位: 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配: 在两个网络实体之间提供数据链路通路的建立.维持和释放的管理. 数据帧的结构是这样的: 二.控制帧的传输

IP协议解读(一)

IP协议是TCP协议栈中的核心协议,也是网络编程的基础之一. 网络层概述 IP服务特点: IP协议为上层协议提供无状态,无连接,不可靠的服务. 无状态:IP通信双方不同步状态传输信息,因此所有IP数据报的发送和接收都是相互独立的,这样也就造成了它无法处理乱序,重复的IP数据报.相对于面向连接而设定的,例如TCP协议,它能够自己处理乱序,重复的报文段.他递交给上层的内容绝对是有序的正确的.但是IP协议的状态也是有优点的,它简单高效,因为我们无需为保证它的状态而分配一些内核数据结构. 无连接:通信双

IP协议解读(三)

今天我们来介绍网络层中的ICMP协议 ICMP报文格式 图一: 从图片上我们可以分析出,前三位的字段都是固定的,8位类型字段,8位代码字段,16位校验和字段.其他字段因ICMP报文类型不同而不同.8位类型和8位代码一起决定了报文的类型. ICMP查询格式 ICMP查询报文共有4种 回送请求和回答:由主机和路由器向一个特定的主机和路由器发送询问,收到请求的主机必须给源主机发送回送应答报文,用来测试目标主机是否可达以及了解其他状态 时间戳请求和回答:它允许系统向另一个系统查询当前的时间,该ICMP的

OSI模型和TCP/IP协议族(二)

OSI模型中的各层 物理层 物理层(physical layer)协调通过物理媒体传送比特流时所需要的各种功能.物理层涉及到接口和传输媒体的机械和电器规约.它还定义了这些物理设备即接口为了实现传输必须完成的过程和功能. 物理层负责把逐个的比特从一跳(结点)移动到下一跳. 物理层关心的是以下一些内容: 接口和媒体的物理特性物理层定义了设备与传输媒体之间的接口特性.它还定义了传输媒体的类型(见后面分享). 比特的表示物理层的数据由一串没有任何解释的比特(bit)流(0和1的序列)组成.发送时,比特必

IP协议的那些事(总结)

IP协议是TCP协议栈中的核心协议,也是网络编程的基础之一. 网络层概述 IP服务特点: IP协议为上层协议提供无状态,无连接,不可靠的服务. 无状态:IP通信双方不同步状态传输信息,因此所有IP数据报的发送和接收都是相互独立的,这样也就造成了它无法处理乱序,重复的IP数据报.相对于面向连接而设定的,例如TCP协议,它能够自己处理乱序,重复的报文段.他递交给上层的内容绝对是有序的正确的.但是IP协议的状态也是有优点的,它简单高效,因为我们无需为保证它的状态而分配一些内核数据结构. 无连接:通信双

TCP/IP知识总结(TCP/IP协议族读书笔记二)

接下来,总结一下网络层的协议,IP,ARP,RARP,ICMP,IGMP.当我们在网络传输的过程中,把分组交付到主机或路由器需要两级地址:物理地址和逻辑地址.而且我们需要能够把物理地址映射成为相应的逻辑地址,反过来的映射也是必要的. 这时候就涉及两个概念:静态映射与动态映射. 静态映射就是创建一个表,将逻辑地址与物理地址关联起来,这个表存储在网络的每一个机器上.可是存在于网络中的机器的物理地址是经常会发生改变的(更换网卡),这样静态映射表就得时常更新,影响网络的性能. 动态映射就是每当机器知道其

二:熟悉 TCP/IP 协议

一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机网络体系结构分层 计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别.OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”. 二. TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和

《Linux高性能服务器编程》学习总结(二)——IP协议详解

第二章      IP协议详解 IP协议是TCP/IP协议族中的核心协议,也是socket网络编程的基础之一.IP协议的特点是为上层提供无状态.无连接.不可靠的服务. 无状态是指IP通信双方不同步传输数据的状态信息,通俗一些说就是双方发送的IP数据报是相互独立的,没有任何上下文关系.这样的特性缺点在于无法处理重复和乱序的IP数据报,举个例子,假设由于网络原因或者IP选路的原因导致第N个数据报比第N+1个数据报晚到达目的主机或同一个IP数据报经过不同的路径多次到达目的端,此时接收端的IP模块无法检