一、IP服务的的特点

IP协议是TCP/IP协议族的动力,他为上层协议提供的无状态无连接,不可靠的服务。

  无状态是指IP通信双方不同步传输数据的状态信息,因此所有的ip数据报的发送,传出和接受都是相互独立的,没有上下文的联系。这种服务最大的缺点就是无法处理乱序和重复的IP数据报。比如,发送端发送出的第N个数据包可能逼第N+1个报文段后到达接收端,而同一个IP数据报也可能经过不同的路径多次到达接收端。IP数据报头部提供了一个标识字段用以唯一的标识一个 IP数据报,但它是被用来处理IP分片和重组的,而不是用来指示接受顺序的。

  无状态的优点也有,简单高效,我们无须为保持通信的状态而分配一些内核资源,也无需每次传输数据是都携带上状态信息。网络协议中,无状态是很常见的,比如UDP协议和HTTP协议就是无状态连接。以HTTP协议为例,一个浏览器连续俩次网页请求之间没有任何关系,他将被web服务器独立的处理。

  无连接是指IP通信双方都不长久的维持对方的任何信息,这样,上层协议每次发送数据报的时候,都必须明确指定对方的ip地址。

  不可靠是指IP协议不能保证数据报准确的到达接收端,他只是承诺尽最大努力。导致IP数据报发送失败。

二、IPV4头部结构。

  iPV4头部结构如下图,其长度通常为20字节,除非含有可变长的选项部分。

4位版本号 4位头部长度 8位服务类型 16位总长度(字节数)
8位生存时间TTL 8位协议 16位头部校验和
32位源端IP地址
32位目的端IP地址
选项,最多40个字节

4位版本号:制定IP协议的版本。

4位头部长度:标识该IP头部有多少个32bit字,因为4位是最大能表示15,所以IP头部最长是60字节。

8位服务类型:

16位总长度是指整个UP数据包的长度。

16位标识唯一标识主机发送的每一个报文段。

三、IP分片。

   前面提到,当IP数据报长度超过帧MTU时候,他将被分片传输。分片可能发送在发送端,也可能发生在中转的路由器上,而且可能在传输过程中被多次分片,但是只有在最终的目标机器上,这些分片才会被内核中的IP这些分片才会被内核中的IP模块重新组装。

  IP数据包头部:数据报标识,标志和片偏移。一个IP数据报的每个IP数据分片都有自己的IP头部,他们具有相同的标识值,但是具有不同的片偏移。并且除了最后一个分片外,其它分片都将设置MF标志。此外,每个分片的IP头部的总长度将被设置为该分片的长度。

  以太网,帧的长度为MTU1500字节,因此他携带的IP数据报的数据部分最多是1480字节,(IP头部需要占20字节)。考虑,用IP数据报文封装一个长度为1481字节的ICMP报文(包括ICMP头部8字节,所以长度是1473字节),则该数据报在使用以太网帧传输的时候必须被分片。

四、IP路由。

  IP协议的一个核心任务就是数据包的路由,即确定发送数据报到目标机器的路径。为了理解IP路由过程,我们先简要分析IP模块的基本工作流程。

1、IP模块工作流程:当IP模块接受来自数据链路层的IP数据报的时候,他首先对该数据报进行CRC校验,确认无误之后就分析其头部的具体信息。如果该数据包头部设置了源站选路选项,则,IP模块调用数据包转发子模块来处理该数据报。如果该IP数据报的头部中目标IP地址是本机的某个IP地址,或者广播地址,就是该数据报是发送给本机的,则IP模块就根据数据包头部中的协议字段来决定发给那个上层应用。如果IP模块发现这个数据包不是发送给本机的,则也调用数据包转发子模块来处理该数据报。

  数据包转发子模块将首先检测系统是够允许转发,如果不允许,IP模块就将数据包丢弃。如果允许,数据包转发子模块将对该数据包执行一些操作,然后将它交给IP数据报输出子模块。

  IP数据报应该发送给哪个下一跳路由(或者目标机器),以及经过那个网卡来发送,就是IP数据报路由过程。IP模块实现数据包路由的核心数据结构是路由表。这个表按照数据报的目标IP地址分类,同一类型的IP数据报将被发送往相同的下一跳路由(或是目标机器)。

  IP输出队列中存放的是所有等待发送的IP数据报,其中除了需要转发的IP数据报之外,还包括封装了本机上层数据(ICMP报文,TCP报文段和UDP数据报)的IP数据报。

2、路由机制:;路由表是如何按照IP地址分类的?

(1)查找路由表中和数据包的目标IP地址,完全匹配的主机ip地址。如果找到,就使用该路由项,没找到则转步骤2。

(2)查找路由表中和数据包的目标IP地址具有相同的网路ID的网络IP地址。如果找到,就使用该路由项;没找到则跳转步骤3.

(3)选择默认路由项,这通常意味着数据包的下一跳路由是网关。

3、路由表更新。

  路由表必须能够更新,以反映网络连接的变化,这样的IP模块才能更准确,高效的穿法数据报。route命令可以修改路由表。

五、IP转发。

不是发送给本机的IP数据报转发子模块来处理。路由器都能执行数据包的转发操作,而主机一般只发送和接受数据报,这是因为主机上的讷河参数默认被设置为0,。我们可以通过修改他来使能主机的数据报转发功能。

六、重定向。

1、ICMP重定向报文。

8位类型 8位代码 16位校验和
应该使用的路由器的IP地址
原始IP数据报的头部信息(包括可选字段)+数据部分的前8个字节

ICMP报文头部的三个固定字段,8位类型,8位代码,16位校验和。ICMP重定向报文的类型是5,代码段由4个可选值,用来区分不同的重定向类型。

转载于:https://www.cnblogs.com/yjds/p/8848862.html

第二章、IP协议详解相关推荐

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

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

  2. TCP/IP协议详解卷一:Chapter21 笔记

    TCP/IP协议详解卷一:Chapter21 笔记 Chapter 21 TCP的超时与重传 21.3 往返时间测量 21.5 拥塞举例 21.6 拥塞避免算法 21.7 快速重传与快速恢复算法 21 ...

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

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

  4. 第四章 Http协议详解

    第四章 Http协议详解 1.http协议简介: (1)WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议. (2)HTTP是hypertext trans ...

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

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

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

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

  7. JavaWeb --第三章 HTTP协议详解

    JavaWeb --第三章 HTTP协议详解 Http 什么是HTTP HTTP: 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常 ...

  8. SOME/IP协议详解「2.0·服务化通信概述」

    SOME/IP协议详解「2.0·服务化通信概述」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.0·服务化通信概述」 1 SOME/IP服务的组成 2 Method| ...

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

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

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

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

最新文章

  1. SAP PM 初级系列21 - 一个技术关闭的维修工单不能再被修改了!
  2. python教育学_使用Python处理教育学领域的数据——以某篇期刊论文为例
  3. python 项目自动生成requirements.txt文件
  4. flex 单独一行_简述flex布局
  5. C/C++: C++可调用对象详解
  6. Linux学习笔记2 - 字符界面
  7. 类似熊猫金花挖词的SEO查询工具包
  8. EtherCAT总线运动控制器中简单易用的直线插补
  9. youtube上下载vr立体声视频及其处理
  10. linux终端如何分栏,动态分栏布局实现
  11. 计算机突然无法连接网络,win7电脑突然不能上网的四种解决方案
  12. 总结iPhone、iPad各机型对应的iOS 系统版本(最全)
  13. 【Hive】Hive练习题(二)
  14. python衡量数据分布的相似度/距离(KL/JS散度)
  15. Ubuntu 18.04 LTS 安装wine 、exe程序安装和卸载
  16. IP公有地址和私有地址划分
  17. 新手学网站建设解疑与技巧1200例
  18. bash grep 判断_bash 退出状态与条件判断
  19. STM32-SPI的NSS详解
  20. 制作企业网站一般要花多少钱

热门文章

  1. [转载]64位linux安装WPS
  2. Ubuntu 10.10系统安装手记
  3. C#2.0实例程序STEP BY STEP--实例二:数据类型
  4. 全面访问JavaScript的最佳资源
  5. redis最大储存512m_redis系列篇01
  6. 1013 Battle Over Cities(并查集解法)
  7. 【Python培训基础知识】Python生成器函数
  8. 小程序代理加盟实现月入1800到50K
  9. 软件破解工具整理收集
  10. C# 对应 Oracle 存储过程 的 SYS_REFCURSOR 应该 传入什么类型的参数?