IP协议介绍

  1、IP协议是TCP/IP协议族中最为核心的协议。IP协议将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。IP协议承载所有上层的TCP、UDP、ICMP数据都以IP数据报格式进行传输。

  2、IP提供不可靠、无连接的数据报传送服务。不可靠(unreliable)意为它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制,如果出错可以通过ICMP报告,ICMP在IP模块中实现,任何需要可靠传输的数据都需要TCP来提供无连接(connetionless)意为它不维护任何后续数据报的状态信息,每个数据报的处理是相互独立的,数据报可以不按发送顺序接收。

  

  IPv4协议结构

  

  1、版本(4bit):目前的协议版本号是4,IP也称为IPv4。

  2、首部长度(4bit):指的是包括IP首部固定部分和可变部分的总长(不含数据部分)。由于首部长度占4bit,可以表示的最大数值为15(二进制数为1111),那它能表示的最长首部长度为60字节。这60字节是怎么计算的呢?因为规定是1bit位代表32bit,那么15 * 4B(32bit/8bit) = 60B(字节)。这也就说明了IP首部的长度最小值是5最大值是15,可以表示的最小长度是20B(字节)最大长度是60B(字节)。

  3、区分服务(8bit):包括一个3位的优先字段,4位的TOS字段和1位的保留字段(必须置0)。

    优先字段3位:设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)- 7(网络控制),延迟字段:1位,取值:0(正常)、1(期特低的延迟)。

    流量字段:1位,取值:0(正常)、1(期特高的流量)。

    可靠性字段:1位,取值:0(正常)、1(期特高的可靠性)。

    成本字段:1位,取值:0(正常)、1(期特最小成本)。

  4、总长度(16bit):总长度是指数个IP数据报的长度,以字节为单位。利用IP首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。该字段长16bit,因此数据报的最大长度为2^16-1=65535字节。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

  5、标识(16bit):IP协议在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中,因此同一个数据报的所有分片都具有相同的标识值。

  6、标志(3bit):第一位保留。第二位(Don’t Fragment,DF)表示“禁止分片”。如果设置了这个位,IP模块将不对数据报进行分片,在这种情况下,如果IP数据报长度超过MTU的话,IP模 块将丢弃该数据报并返回一个ICMP差错报文,第三位(More Fragment,MF)表示“更多分片”,除了数据报的最后一个分片外,其他分片都要把它置1。

  7、片偏移(13bit):较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始,片偏移以8个字节为偏移单位,这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。

  8、生存时间(8bit):(Time To Live,TTL)是数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置(常见的值是64)。数据报在转发过程中每经过一个路由,该值就被路由器减1。当TTL值减为0时,路由器将丢弃数据报,并向源端发送一个ICMP差错报文。TTL值可以防止数据报陷入路由循环。

  9、协议(8bit):用来区分上层协议,其中,ICMP是1,TCP是6,UDP是17。

  10、首部检验和(16bit):这个字段只检验数据报的首部,但不包括数据部分,这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和。(交换机是二层设备不识别IP数据报文这要注意)

  11、源地址(32bit):

  12、源端IP地址和目的端IP地址:用来标识数据报的发送端和接收端。一般情况下,这两个地址在整个数据报的传递过程中保持不变,而不论它中间经过多少个中转路由器

  13、可选字段(40bit):这部分最多包含40字节,因为IP头部最长是60字节(其中包含固定部分20字节)。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目,某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。可选包括:

    记录路由(record route),告诉数据报途经的所有路由器都将自己的IP地址填入IP头部的选项部分,这样我们就可以跟踪数据报的传递路径。

    时间戳(timestamp),告诉每个路由器都将数据报被转发的时间,填入IP头部的选项部分,这样就可以测量途经路由之间数据报传输的时间。

    松散源路由选择(loose source routing),指定一个路由器IP地址列表,数据报发送过程中必须经过其中所有的路由器。

    严格源路由选择(strict source routing),和松散源路由选择类似,不过数据报只能经过被指定的路由器。

 

  IP路由选择(实例 )

  测试路由的走向,我用H3c模拟器做了实验,整个环境中有R1、R2、R3三台路由器,路由器的MAC、IP都标识如下:

  

  测试项目

    1、目标IP与本地IP是同一地址段(如172.16.1.1 -> 172.16.1.2),不需要网关转发,即可通信,

      请求时,源MAC地址(78:51:7b:21:0f:05)、源IP地址(172.16.1.1) 向 目标MAC地址(78:51:84:11:10:05)目标IP地址(172.16.1.2)发请求包;

      回复时,目标MAC地址(78:51:84:11:10:05)、目标IP地址(172.16.1.2)向 源MAC地址(78:51:7b:21:0f:05)、源IP地址(172.16.1.1) 发回复包。

    2、目标IP与本地IP是不同地址段(如172.16.1.1 -> 172.16.2.2),需要网关转发,才可通信,

      请求时,源MAC地址(78:51:7b:21:0f:05)、源IP地址(172.16.1.1) 向 目标MAC地址(78:51:84:11:10:05)目标IP地址(172.16.2.2)发请求包;

      回复时,目标MAC地址(78:51:84:11:10:05)、目标IP地址(172.16.2.2)向 源MAC地址(78:51:7b:21:0f:05)、源IP地址(172.16.1.1) 发回复包。

    注:通过观查测试结果可以知道,当目标IP与本地IP是不同地址段时,请求和回复时,都需要通过R1路由器上的网关R2上的接口地址请求和回复,也就是需要网关来完成数据报的转发,而IP地址无论是请求还是回复两种测试项目中都无变化(没有做NAT的情况)。

转载于:https://www.cnblogs.com/PBDragon/p/10409657.html

TCP/IP协议 网络层相关推荐

  1. 一文带你看懂TCP/IP协议 (更新中 现更新至网络层部分)

    相信大家在编程的学习或应用中,对网络编程都有一定的需求.我们都知道http/https属于TCP/IP协议,也都用到过get,post等方法,但是想要真正的了解这些东西的原理.我认为TCP/IP协议还 ...

  2. TCP/IP 协议族 简介(应用层,传输层,网络层,链路层)

    互联网协议(Internet Protocol Suite [swi:t])是一个 网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构.它常被通称为TCP/IP 协议族(TCP/IP P ...

  3. TCP/IP协议簇之网络层

    文章目录 网络层 IP协议 基本概念 协议头格式 IP中的分片 分片与组装的需求 如何分片与组装 路径MTU发现 网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 NAT ...

  4. 网际互联及TCP/IP 协议OSI七层模型: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

    网际互联及TCP/IP 协议OSI七层模型: 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 物理层 作用:定义一些电器,机械,过程和规范,如集线器: PDU(协议数据单元):bit/比特 ...

  5. TCP/IP协议简介(三) 之 网络层

    IP 网际协议 IP 协议位于网络层,它是 TCP/IP 协议族中最为核心的协议,所有的 TCP.UDP.ICMP 及 IGMP 数据都以 IP 数据报格式传输.IP 协议提供的是 不可靠 . 无连接 ...

  6. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  7. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  8. TCP/IP协议分析

    一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体 ...

  9. 深入TCP/IP协议1---图解OSI参考模型

    首先我们看一下OIS参考模型各个层的作用 更具体一些图下图 字符集:一个国家或一个民族用到的全部字符的集合,美国用ASCII字符集,UTF8 传输层的功能:可靠传输 .流量控制 .拥塞避免,如果出现丢 ...

最新文章

  1. IntelliJ IDEA中用快捷键自动创建测试类
  2. matlab中nchoosek函数的用法
  3. 应用系统中交互式报表功能解析
  4. Kernel tasklet
  5. 树状数组(Binary Indexed Tree) 总结
  6. linux c 编译警告 warning: this decimal constant is unsigned only in ISO C90
  7. Struts2对象属性驱动
  8. docker 登陆mysql_启用登录docker mysql容器
  9. 这个库厉害了,自动补全Python代码,节省50%敲码时间
  10. 数据结构与算法的联系
  11. 不止承上启下,带你了解工业物联网关
  12. 尚硅谷大数据Hadoop(1)技术之Hadoop(入门)
  13. 小程序ios android差异,解决小程序textarea在安卓和ios上padding不一的问题
  14. iOS开发,第三方应用微信授权登录,获取微信unionid
  15. 对两个等长升序的序列查找中位数
  16. C# 将PDF文档转换成图片
  17. 数据驱动测试该怎么理解?真的像传说中的那么diao吗?
  18. Leetcode——四数之和问题
  19. 为实施了IFD的Dynamics 365更换自签名的SSL证书以符合Chrome的要求
  20. 阿里云无法 git clone 的解决

热门文章

  1. 【python】组合搜索
  2. Android SwipeRefreshLayout 官方下拉刷新控件介绍
  3. Win7 wifi热点设置( 转载)
  4. Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls、07版的xlsx)
  5. 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
  6. json schema多种形式_什么是JSON Schema?
  7. ckeditor缺少图像源文件地址_微软的模拟飞行带你开着飞机浏览世界附下载地址...
  8. pythonbreak可以跳出递归吗_怎样强制退出递归函数
  9. 使用了未经检查或不安全的操作_上溪镇开展压痕机使用企业安全生产专项检查...
  10. php mysql_query的的用法_PHP / MYSQL使用mysqli_query选择