目录

IP协议:全称:Internet Protocol(网际互连协议)

IP协议的特点:

IP头部结构:

IP分片:

IP路由:

IP转发:


IP协议:全称:Internet Protocol(网际互连协议)

IP协议的特点:

IP协议是TCP/IP协议族的动力,它为上层协议提供无状态,无连接,不可靠的服务。
    无状态是指IP通信不同步传输数据,发送、传输和接收都是相互独立、没有上下文的。接收方只要收到了完整的IP数据包,就要交付上层协议,所以这些数据包可能是无序的、重复的。IP数据包虽然也有唯一标识,但是不是用来指示接收顺序的,而是用来处理IP分片和重组的。这种无状态的优点是:简单,高效。无需为保持通信状态而分配内核资源,传输数据也无需携带状态信息。
    无连接是指IP通信不维持对方的信息。但在每次发送数据时,必须明确对方的IP地址。
    不可靠是指IP协议不能保证数据包准确到达。发送失败的原因很多,比如:某个中转路由器发现IP数据包的存活时间太长(TTL),就丢弃此数据包,并返回一个ICMP超时错误给发送端;再比如接收端通过校验机制发现数据包不正确,就丢弃,并返回一个ICMP错误信息给发送端。 发送端IP模块检测到IP数据包发送失败,就通知上层协议发送失败,而不会试图重传。所以传输层协议需要自己实现数据确认、超时重传等机制,已达到可靠传输的目的。

IP头部结构:

4位版本号指定IP协议的版本,有IPv4,SIP,PIP。
4位头部长度是指该IP头部有多少个4字节,因为4位能表示的最大数是15,所以IP头部最长60字节。
8位服务类型,说明了IP数据包的服务需求,包括:最小延时、最大吞吐量、最高可靠性和最小费用。比如ssh和telent这样的登录程序需要的是最小延时服务,文件传输ftp需要最大吞吐量服务。
16为总长度指IP总长度。 MTU(帧的最大传输单元)绝对了1500字节内。
16位标识能唯一标识主机发送的每一个数据报,初值随机,每发送一个,其值就加一,用于分片和重组。同一个数据报的所有分片具有相同的标识值。
3位标志字段,第一位保留,第二位可以设置禁止分片DF,第三位标识数据报的更多分片MF。
13位分片偏移是指相对于原数据报的偏移。
8位生存时间TTL是数据报到达目的地之前允许经过的路由器跳数。
8位协议用来区分上层协议: 1是ICMP 6是TCP 17是UDP
16位头部校验和由发送端填充,接收端用来检查头部是否损坏。
32位源端IP地址和目的端IP地址,传输过程中保持不变。
选项字段: 记录路由(记录途径的路由器)、时间戳(测量途径路由器之前数据报传输的时间)松散源路由选择和严格源路由选择(必须经过这些和仅能通过这些)

IP分片:

分片可能发生在发送端,也可能发生在中转路由器,但是只有在目标机器上才会重组。
一个数据报的每个分片都具有自己的头部信息,其中有相同的标识,不同的片偏移。
帧的最大传输单元是1500字节,IP头部20字节,所以数据部分最多1480字节。

如下一个1501字节的IP数据报的分片示意图:

IP路由:

IP的路由是指决定发送数据报到目标机器的路径

IP模块的工作流程:

从右往左看,收到来自数据链路层的IP数据报时,先检验,在查看是发送本机的,还是需要转发的。IP输出队列中等待发送的数据报除了转发的,还有本机上层协议(ICMP、TCP、UDP)的IP数据报。

路由表:
路由表按照数据报的目标IP地址分类,同一类型的IP数据报将被发送相同的下一跳路由器。

IP路由机制:
    1.查找路由表中和数据报的目标IP地址完全匹配的主机IP地址,如果找到,就是用该路由项,没找到转步骤2.
    2.查找路由表中和数据报的目标IP地址具有相同网路ID的网络IP地址(比如局域网),如果找到,就使用该路由项,否则转步骤3.
    3.选择默认路由项,这通常意味着数据报的下一跳路由是网关。

路由表的更新:
    静态更新:通过route命令修改路由表。
    动态更新:使用OSPF(开放最短路径优先)等协议来自动更新路由表。ICMP重定向报文更新路由表。

IP转发:

1.检查数据头部的TTL值。如果TTL值已经是0,则丢弃该数据报。
  2.检查数据报头部的严格路由选择选项。如果该选项被设置,则检测数据报的目标IP地址是否是本机的某个IP地址。如果不是,发送一个ICMP源站选路失败报文给发送端。
  3.如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器。
  4.将TTL值减一
  5.处理IP头部选项
  6.如果有必要,则执行IP分片操作。

IP协议详解【IP报文头部结构、IP分片、IP路由、IP转发】相关推荐

  1. IP协议详解之IPv6头部结构简介

      IPv6协议是网络层技术发展的必然趋势,因为它不仅解决了IPv4地址不够用的情况,还做了很大的改进,比如,增加了多播和流的功能,为网络上多媒体内容的质量提供精细的控制,引入自动配置功能,使得局域网 ...

  2. 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    目录 简介 报文格式 IPv4地址 分类 网络地址转换NAT 子网划分与子网掩码 CIDR 实战 参考 简介 IP(网际互连协议,Internet Protocol)是TCP/IP协议族中最为核心的协 ...

  3. SOME/IP协议详解「总目录」

    SOME/IP协议详解「总目录」 欢迎大家来到雪云飞星的<SOME/IP协议详解>,开始前博主先列出本专栏学习的大纲,同时这也可以作为大家学习SOME/IP协议知识点的参考.下面蓝字都是传 ...

  4. TCP/IP协议详解、TCP三次握手

    TCP/IP协议详解:TCP/IP协议详解_王佳斌-CSDN博客_tcp/ip协议认识HTTP协议它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本 ...

  5. SOME/IP协议详解「3.1.1·服务发现报文的格式」

    SOME/IP协议详解「3.1.1·服务发现报文的格式」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「3.1.1·服务发现报文的格式」 1 SD的SOME/IP格式头 ...

  6. IP协议详解---Linux学习笔记

    网络层概述: IP服务的特点: IP协议为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通讯双方不同步传输状态的信息,因此所有IP数据报发送.传输.接收都是相互独立的,没有上下文关系.这样同 ...

  7. 《TCP IP协议 详解》思考总结 · 三

    前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将<TCP/IP协议详解 卷一>书中TCP相关章节前面的内容做一个结束,在下一篇文章专心的去 ...

  8. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  9. IP协议详解及IPv4与IPv6协议的区别

    IP协议是在TCP/IP协议模型中的重要组成部分,目前我们使用最多的是IPv4协议,IPv6协议的用户量也在慢慢增加,苹果在几年之前就已经开始支持IPv6协议了.我们先来了解一下IPv4和IPv6协议 ...

  10. TCP/IP协议详解---概述

    工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本书,希望 ...

最新文章

  1. DataGridView设置单元格的提示内容ToolTip详解
  2. 智能车竞赛技术报告 | 单车拉力组 - 沈阳航空航天大学 - 青梅绿茶队
  3. oracle java连接配置
  4. elastic-job详解(一):数据分片
  5. 全球云数据中心发展预测白皮书2016~2021
  6. nginx服务器带宽_Nginx限制带宽配置示例
  7. jqGrid,REST,AJAX和Spring MVC集成
  8. java集合迭代器_java集合迭代器
  9. Golang入门~搭建Beego
  10. xilinx sdk串口打印helloworld如何打开SDK terminal查看
  11. 孙鑫VC学习笔记:第十七讲 (二) 用匿名管道实现进程间的通信
  12. 关于虚拟机virtualbox使用无线卡上网的设置
  13. neovim内置lsp实现Java语言补全
  14. 基于北斗卫星的输电杆塔在线监测系统
  15. mysql 1093_mysql ERROR 1093 (HY000)
  16. 罗振宇4小时跨年演讲精华版:大环境里的7个行动策略
  17. java utc时间_Java获得UTC时间
  18. 《天下无谋》读后感 --- 度心术卷1度心篇
  19. sudo rm-rf引发的惨案——Linux硬盘的分区和挂载
  20. 网络中的pvid与native vlan(本征vlan)区别以及详解

热门文章

  1. html字母分别代表什么,HTML 编码
  2. Axapta multi records selected and operated:多行操作
  3. Android拉起拼多多
  4. 四十五、Kafka生产者(Producer)API介绍
  5. bat脚本中如何多次键盘输入并判断_bat教程[282] @
  6. python批量图片文字识别_利用Python批量进行图片文字识别
  7. 谷歌插件学习必备准备知识代码提示插件调试
  8. Android调用QQ加群代码
  9. Leetcode 每日一题——860. 柠檬水找零
  10. 债券收益率建模(时间序列建模)时间序列相似度度量