IP分类

IP地址分为网络号和主机号,5类不同的IP地址格式如下:

A类地址每个网段内最多有224个,也就是16,777,214个。

B类地址每个网段内最多有216个,也就是65535个。

C类地址每个网段内最多有28个,也就是255个。

子网寻址

现在的主机都要求支持子网编址,不再把IP看成单纯的网络号和主机号组成,而是把主机号再分为子网号和主机号。

子网对外部路由来说隐藏内部网络组织。而且子网划分大大减少路由表的规模。

子网掩码

IP地址分类的本质是区分网络标识和主机标识,另一种更加灵活、细粒度的区分方法是使用子网掩码。子网掩码长度也是32位,由一段连续的1和一段连续的0组成。1的长度就表示网络标识的长度,0代表主机号的长度。

给定IP地址和子网掩码后,主机就可以确定IP数据报的目的是:(1)本子网上的主机;(2)本网络上其他子网的主机;(3)其他网络的主机

IP报文分割

在数据链路层,不同的数据链路层有不同的最大传输单元(MTU),因此IP协议的一个任务就是对数据进行分片和重组。

分片由发送端主机和路由器负责,重组有接收端主机负责。

路径MTU

分片会加重路由器的负担,因此只要条件允许,我们都不希望路由器对数据报进行分片处理。而且,如果一个数据片丢失,整个数据报都会作废。

解决以上问题的技术是“路径MTU发现”。主机会首先获取整个路径中所有数据链路的最小MTU,并按照整个大小将数据分片。因此传输过程中的任何一个路由器都不用进行分片工作。

为了找到路径MTU,主机首先发送整个数据包,并将IP首部的禁止分片标志设为1.这样路由器在遇到需要分片才能处理的包时不会分片,而是直接丢弃数据并通过ICMP协议将整个不可达的消息发回给主机。

主机将ICMP通知中的MTU设置为当前MTU,根据整个MTU对数据进行分片处理。如此反复下去,直到不再收到ICMP通知,此时的MTU就是路径MTU。

重组

接收端根据IP首部中的标志(Flag)和片偏移(Fragment Offset)进行数据重组。

IP首部

普通的IP首部长20个字节,除非含有选项字段,IP数据报格式如下:

  • 4位版本:目前的协议版本号为4,因此IP也称为IPV4

  • 4位首部长度:首部占4字节的数据,包括任何选项。由于它是一个4比特字段,因此首部最长为60(4* (2- 1))个字节。普通IP数据报(没有任务选项)字段的值为5.

  • 8位服务类型:目前不使用,全为0

  • 16位总长度:整个IP数据报的长度,以字节为单位。利用首部长度和总长度,就可以知道数据内容的起始位置和长度。由于该字段场16比特,所有IP数据报的最长为65535个字节。

  • 用于分片和重组
  1. 16位标识:标识字段唯一的标识主机发出每一份数据报。用户分片和重组。

  2. 3位标志:由3个比特位组成:

    • 第一个标识未使用,目前必须是0;

    • 第二个标识标识是否分片,0标识分片,1标识不分片;

    • 第三个标识表示分片时是否最后一个包,0表示是最后一个包,1表示不是最后一个包。

  3. 13位偏移量:表示被分片的段相对于原始数据的位置,单位为8字节,

  • 8位生存时间:表示包可以经过多少路由器的中转,每经过1个路由器,TTL减1

  • 8位协议:表示IP首部的下一个首部属于哪个协议。比如TCP协议的编号为6,UDP编号为17

  • 16位首部校验和:用于检查IP首部是否损坏

  • 32位源IP地址:

  • 32位目的IP地址:

IP选路

netstat命令

对于一个给定的路由器,可以打印出五种不同的标志( f l a g):
U 该路由可以使用。
G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该
标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网
络号与子网号的组合。
D 该路由是由重定向报文创建的( 9 . 5节)。
M 该路由已被重定向报文修改( 9 . 5节)。
标志G是非常重要的,因为由它区分了间接路由和直接路由(对于直接路由来说是不设置
标志 G的) 。其区别在于,发往直接路由的分组中不但具有指明目的端的 I P地址,还具有其链
路层地址(见图 3 - 3 )。当分组被发往一个间接路由时, I P地址指明的是最终的目的地,但是
链路层地址指明的是网关(即下一站路由器) 。
理解 G和 H标志之间的区别是很重要的。 G标志区分了直接路由和间接路由,如上所述。
但是 H标志表明,目的地址( n e t s t a t命令输出第一行)是一个完整的主机地址。没有设置
H标志说明目的地址是一个网络地址(主机号部分为 0)。当为某个目的 I P地址搜索路由表时,
主机地址项必须与目的地址完全匹配,而网络地址项只需要匹配目的地址的网络号和子网号
就可以了
参考记数 R e f c n t( Reference count)列给出的是正在使用路由的活动进程个数。
下一列(“ u s e”)显示的是通过该路由发送的分组数。

IP网际协议的更多相关文章

  1. 《TCP/IP详解 卷1:协议》第3章 IP:网际协议

    3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输(见图1-4).许多刚开始接触TCP/IP的人对IP提供不可靠.无连接的数据报 ...

  2. IP 网际协议

    1. IP数据首部长度: 4位版本号 : 4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6.目前常见的是 IPv4. 4位首部长度: 首部长度是占4位,可表示的最大十 ...

  3. IP网际协议 - IP首部,IP路由选择,子网掩码

    IP首部 4个字节的32 bit值以下面的次序传输:首先是0-7 bit,其次8-15 bit,然后1 6-23 bit,最后是24~31 bit.这种传输次序称作big endian字节序.由于T ...

  4. TCP/IP 笔记 1.3 IP:网际协议

    ---恢复内容开始--- I P是T C P / I P协议族中最为核心的协议.所有的 T C P.U D P.I C M P及I G M P数据都以I P数据报格式传输. 不可靠( u n r e ...

  5. TCP/IP基础

    TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...

  6. 温故知新--计算机网络 iso/osi七层模型 tcp/ip四层模型

    ISO七层模型由下至上为1至7层,分别为: 应用层(Application layer) 表示层(Presentation layer) 会话层(Session layer) 传输层(Transpor ...

  7. 《TCP/IP详解 卷1:协议》读书笔记

    第一章 概述 协议栈 应用层 HTTP,FTP   运输层 TCP, UDP 段(Segment) 网络层 IP, ICMP, IGMP 数据报(Datagram) 链路层   帧(Frame) 物理 ...

  8. 计算机网络自学之路------IP协议(1)

    1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...

  9. c++游戏服务器编程学习笔记(一)TCP/IP

    1. c++游戏服务器编程c++运行效率非常高2. TCP传输控制协议IP网际协议Socket 3.Linux 乌班图开源第三方库BOOST 4.80%游戏服务器端用C++工作量最大的地方是具体的游戏 ...

随机推荐

  1. pycharm设置主题

    步骤很简单: 1.下载皮肤主题(jar) 去 http://www.themesmap.com/ 选择自己喜欢的主题下载 2.导入皮肤主题 导入方法:file–>Import Setting–& ...

  2. ESXI 6.5安装详细步骤

    网址:http://blog.51cto.com/laotang6/2044861 ESXi是专为运行虚拟机.最大限度降低配置要求和简化部署而设计.只需几分钟时间,客户便可完成从安装到运行虚拟机的全过 ...

  3. 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】

    题目链接 [洛谷传送门] 题解 很显然,当这个点不是割点的时候,答案是\(2*(n-1)\) 如果这个点是割点,那么答案就是两两被分开的联通分量之间求组合数. 代码 #include <bits ...

  4. position:sticky

    使用sticky定位可以简洁的实现固定功能 例如,左右布局页面,左侧菜单,右侧内容,内容区域滚动时,不希望菜单区域滚动,而是固定不动 以往要实现这个功能,需要使用fixed定位菜单,菜单脱离文档流,布 ...

  5. 洛谷P1880 石子合并(环形石子合并 区间DP)

    题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...

  6. jmeter笔记(2)--组件介绍

    1.测试计划 测试计划(Test Plan)是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器. 2.Threads(Users)-线程组 每个测试需求的必备组件,是用来模拟用户并发 ...

  7. linux服务器间文件夹拷贝

    要求,在A机器执行脚本,把A机器的某个目录文件拷贝到B机器. 第一版ftp实现: 1.A 机器先安装 ftp 客户端 $ sudo yum install ftp 2.B机器安装ftp服务端 $ su ...

  8. 为什么要使用50ohm阻抗?

    对于接收机我们期望同轴线的损耗越低越好 对于发射机同轴线的功率效率则是越大越好 所以在二者性能最优时阻抗并不相等 https://www.sohu.com/a/109536765_335274

  9. 3537. 【NOIP2013提高组day2】华容道(搜索 + 剪枝)

    Problem 给出一个类似华容道的图.\(q\)次询问,每次给你起始点,终止点,空格位置,让你求最少步数 \(n,m\le 30, q\le 500\). Soultion 一道智障搜索题. 弱智想 ...

  10. 爬虫保存cookies时重要的两个参数(ignore_discard和ignore_expires)的作用

    两个参数的作用: 官方的解释: ignore_discard: save even cookies set to be discarded. ignore_expires: save even coo ...