7 --> IP 协议

1、IP协议

1.1 概念

IP协议用于连接多个分组交换网,他提供在具有固定地址长度的主机之间传送数据报,以及根据各个数据包大小的不同,在需要时进行分段和重组大数据报的功能。IP协议仅限于将数据从源端传送到目的端,而不提供可靠的传输服务。在传送出错时,IP协议通过互联网控制消息协议(ICMP, Internet Control Message Protocol)报告。

1.2 功能

IP协议最基本的两个功能:寻址和分段

寻址:IP协议根据数据报头中所包含的目的地址将数据报传输到目的端,传送过程中对道路的选择称为路由
分段:当一些网络只能传送小数据报时,IP协议将数据报分段并在报头里面注明。数据包也可以被标记为“不可分段”,如果一个数据报被如此标记,那么在任何情况下都不准对他进行分段,如果因此到不了目的地,那么数据包就会在中途被丢弃。

1.3 IP协议数据报的头:

1.3.1 IP协议头部格式

在这里插入图片描述- 版本:记录数据报属于哪个版本的协议,例如可以用此区分出IPv4和IPv6,这个字段可以使得在不同版本间传递数据变得可行。

  • 头部长:标明IP协议报头有多长,其单位是32bit即4个字节,其最小值为5(5 x 4 = 20 byte,这个长度是除去可选项的长度),从上图中看出,其规定头部长为 4 bit,所以最大值为 15, 15 x 4 = 60 byte 可以算出可选项长度最大为40个字节(即 60 byte - 20 byte = 40 byte)

  • 服务类型:用来指示当数据报在一个特定网络中传输时对实际服务质量的要求是什么,服务类型字段从左到右由一个3位的优先顺序字段、三个标志位(D、T、R)和两个保留位组成。优先顺序字段用于标志该数据报的优先级,D、T、R三个标志位分别代表是否对低延迟(Delay)、高吞吐量(Throughput)、高可靠性(Reliability)有要求,不过实际上,现在的路由器都忽略服务类型这个字段。

  • 总长:是指整个数据报的长度,包括头部和数据部分,单位是 1 个字节,从图上可以看出,规定总长位数为16bit,能存储最大数据为65535个字节的数据报。如长的数据报对大部分主机和网络来说是不现实的。所有主机必须能够接收长达576个字节的数据报(不管他们是以整个数据报到达还是以分片到达),源端主机在确认目的地址能够接收大数据报的情况下才发送大于576字节的数据报。

  • 标识:该标识由发送者设定值,主要为了目的主机组装分段时判断新到的报文分段属于哪个分组,所有属于同一分组的报文分段都包含相同的标识。

  • 标记:长度为3bit,从前到后分别是保留位、不可分段位(DF, Don’t Fragment)和分段位(MF,More Fragment)。
    保留为始终为 0
    DF位为 1 时表示该分组不能被分段
    MF位为 1 时表示后面还有该分组的分段,在有分段的情况下,除了最后一个分段该位为 0 外,其他 分段该位都为 1

  • 分段偏移:标记该分段在数据报的位置,单位是8个字节,第一个分段的偏移是 0

  • 生命期:用来限制分组生命周期的计数器,单位是秒,该字段长度为 8bit ,说明存储的最大数值是 255 ,在实际的应用过程中是以经过的节点计数的,每经过一个节点计数减 1 ,计数减到 0 时,分组要被丢弃。

  • 协议:指明IP层所封装的上层协议类型,如ICMP -> 1、IGMP -> 2 、TCP -> 6、UDP -> 17、EIGRP -> 88 、OSPF -> 89等

  • 头部效验和:只对头部进行效验,由于头部的一些字段始终在变化(例如:生命期字段),头部效验和在每个节点都得重新进行计算。

  • 源地址:发送报文段的IP地址

  • 目的地址:接收报文段的IP地址

  • 可选项:可选项对于主机和网关的IP模块来说都是必须实现的,可选是指它们在特定数据报中是否出现是可选的,而不是指他们的实现,每个可选项都以 1 个字节表明它的类型。其长度从1~40个字节之间不固定,主要取决于设置的可选项数目,最终数据长度不够32位的倍数要填充 0 补齐,主要是为了让报头长度是32位的整数倍,一般正常的IP报文头部都是没有可选项的。
    目前已定义的可选项有 5 个,分别是安全性(指明数据报的机密程度)、严格路由选择(后面给出所规定的完全路由)、宽松路由选择(后面给出必须要经过的路由)、记录路由(记录下所经路由器附上其IP地址)、时间戳(要求所经路由器都附上其IP地址和时间标记)。

1.3.2 IP协议头部数据

下面是我用抓包工具抓到的一个TCP断开的四次握手,其他的咱不管,先看第一次发送FIN类型数据包的IP报头部分

在这里插入图片描述最下面的是数据,去掉以前面太网首部的14个字节开始是IP数据报头部分,
先单独把IP报头数据粘贴下来

//字节为单位 Hex+ASCII方式显示
45 00 00 28 a2 ad 40 00 39 06 0f 71 b7 83 87 91 0a 16 46 87

//二进制 bit流显示为
01000101 00000000 00000000 00101000 
10100010 10101101 01000000 00000000 
00111001 00000110 00001111 01110001 
10110111 10000011 10000111 10010001 
00001010 00010110 01000110 10000111

下面我们对着上面的格式来解析下:

字段位置含义
版本0-30100属于IPv4版本
头部长4-70101表示头部长度为20个字节(5 x 4 byte = 20 byte)
服务类型8-3100000000
总长32-4700000000 00101000IP数据报总长(不包括以太网首部) 为 40 个字节(40 x 1 byte = 40 byte)
标识48 - 50010保留位为 0 , 不可分段数据报
分段偏移51 - 6300000 00000000数据偏移为0,数据报属于分组的第一个分段(其实这个数据包是不允许分段的,这里只是一个理论解释)
生命期64 - 7100111001生命期值是57,理论解释是还可以经过57个节点
协议72 - 7900000110值为6,表示上层为TCP协议
头部效验和80 - 9500001111 01110001
源地址96 - 12710110111 10000011 10000111 10010001因为IP地址在网络中传播是用网络排序(大端)表示,所以直接按顺序解析,16进制表示:b7.83.87.91,转换成十进制表示为:183.131.135.145
目的地址128 - 15900001010 00010110 01000110 10000111十进制点形式表示为:10.22.70.135
可选项~~没有可选项

1.4 IP地址分类

1.4.1 IP地址分类

IP地址包含网络号和主机号两部分,网络号代表一个子网络,主机号则表示该子网络下某一台具体的主机标号,IP地址根据功能和用途的不同可以划分为五类。
A 类地址:1 . 0 . 0 . 0 ~ 126 . 255 . 255 . 255,前 8 位为网络号,后 24 位为主机号
B 类地址:128 . 0 . 0 .0 ~ 191 . 255 . 255 . 255,前16位为主机号,后16位为主机号
C 类地址:192 . 0 . 0 . 0 ~ 223 . 255 . 255 . 255,前24位为网络号,后8位为主机号
D 类地址:224 . 0 . 0 .0 ~ 239 . 255 . 255 . 255
E 类地址:240 . 0 . 0 . 0 ~ 254 . 255 . 255 . 255

A、B、C三类地址是根据网络规模大小来分配给用户的,例如A类地址有24位的主机号,同一个网络下,一个 A 类地址可以容纳 2^24 - 2 = 16777213 台主机,但是A类地址一共只能分配 126 个网络(这里只是做一个理论上的运算,并不代表实际分配情况),所以这类地址一般分配给那些为数不多的大网络。D类地址用来多播,E类地址做保留地址。
另外还有一些特殊地址:
①. 例如主机号全为 1 是该网络的广播地址(例如在一个C类地址的网络中,192. 192 . 192 . 255 , 网络号是前面三个字节, 主机号是后面的一个字节,8位全为1,那么这个地址则是 网络号位 192.192.192.0这个网络的广播地址)。其中 255 . 255 . 255 . 255也是主机所在网络的广播地址;
②. 主机号全为 0 则是该网络的网络地址;
③. 127 . 0 . 0 . 0 ~ 127 . 255 . 255 . 255是主机会送地址,通常用来做网络测试,调试主机与路由是否连接畅通;
④. 其中 10 . 0 . 0 . 0 ~ 10 . 255 . 255 . 255、172 . 16 . 0 . 0 ~ 172 . 31 . 255 . 255、192 . 168 . 0 . 0 ~ 192 . 168 . 255 . 255保留给内部网络使用。

1.4.2 子网掩码、超网

  • 子网:
    传统的IP地址分类确定是不能在网络内部使用路由,这样对于较大的网络,例如一个A类网络,由于主机数太多而变得难以管理,为此引入了子网掩码以从一个大网络上划分成一些小网络。子网掩码由一系列 0 和 1 构成,通过与IP地址做与运算来得到一个IP地址的网络号,
    例如
    A类地址的子网掩码是 255 . 0 . 0 . 0,
    B类地址的子网掩码是 255 . 255 . 0 . 0,
    C类地址的子网掩码是 255 . 255 . 255 . 0。
    要是想将一个B类地址(例:129 . 145 . 0 . 0)划分为多个小的C类网络,只需要将其子网掩码设为 255 . 255 . 255 . 0就可以了,这样 129 . 145 . 1 . 0和 129 . 145 . 2 . 0就属于不同网络了,因为虽然是B类地址,但是与给定的子网掩码做与运算出来的网络号不一样了,就属于不同网络。像这样通过子网掩码将一个大网络划分成若干个小网络叫做划分子网。
  • 超网:
    与子网功能相反,将若干个小网络划分成一个大网络。例如一个单位分配到了8个C类(前三个字节为网络号)地址:202 . 120 . 224 . 0 ~ 202 . 120 . 231 . 0,只要将其子网掩码设置为 255 . 255 . 248 . 0 就能使这些C类网络相通。

附加表: 协议编码表

协议号协议类型说明
0HOPOPTIPv6逐跳选项
1ICMPInternet控制消息
2IGMPInternet组管理
3GGP网关对网关
4IPIP中的IP(封装)
5ST
6TCP传输控制
7CBTCBT
8EGP外部网关协议
9IGP专用内部网关(Cisco将其用于IGRP)
10BBN-RCC-MONBBN RCC监视
11NVP-II网络语音协议
12PUPPUP
13ARGUSARGUS
14EMCONEMCON
15XNET跨网调试器
16CHAOSChaos
17UDP用户数据报
18MUX多路复用
19DCN-MEASDCN测量子系统
20HMP主机监视
21PRM数据包无线测量
22XNS-IDPXEROX NS IDP
23TRUNK-1第1主干
24TRUNK-2第2主干
25LEAF-1第1叶
26LEAF-2第2叶
27RDP可靠数据协议
28IRTPInternet可靠事务
29ISO-TP4ISO传输协议第4类
30NETBLT批量数据传输协议
31MFE-NSPMFE网络服务协议
32MERIT-INPMERIT节点间协议
33SEP顺序交换协议
343PC第三方连接协议
35IDPR域间策略路由协议
36XTPXTP
37DDP数据报传送协议
38IDPR-CMTPIDPR控制消息传输协议
39TP++TP++传输协议
40ILIL传输协议
41IPv6Ipv6
42SDRP源要求路由协议
43IPv6-RouteIPv6的路由标头
44IPv6-FragIPv6的片断标头
45IDRP域间路由协议
46RSVP保留协议
47GRE通用路由封装
48MHRP移动主机路由协议
49BNABNA
50ESPIPv6的封装安全负载
51AHIPv6的身份验证标头
52I-NLSP集成网络层安全性TUBA
53SWIPE采用加密的IP
54NARPNBMA地址解析协议
55MOBILEIP移动性
56TLSP传输层安全协议,使用Kryptonet密钥管理
57SKIPSKIP
58IPv6-ICMP用于IPv6的ICMP
59IPv6-NoNxt用于IPv6的无下一个标头
60IPv6-OptsIPv6的目标选项
61主机内部协议
62CFTPCFTP
63本地网络
64SAT-EXPAKSATNET与后台EXPAK
65KRYPTOLANKryptolan
66RVDMIT远程虚拟磁盘协议
67IPPCInternet luribus数据包核心
68分布式文件系统
69SAT-MONSATNET监视
70VISAVISA协议
71IPCVInternet数据包核心工具
72CPNX计算机协议网络管理
73CPHB计算机协议检测信号
74WSN王安电脑网络
75PVP数据包视频协议
76BR-SAT-MON后台SATNET监视
77SUN-NDSUN-ND PROTOCOL-Temporary
78WB-MONWIDEBAND监视
79WB-EXPAKWIDEBAND EXPAK
80ISO-IPISO Internet 协议
81VMTPVMTP
82SECURE-VMTPSECURE-VMTP
83VINESVINES
84TTPTTP
85NSFNET-IGPNSFNET-IGP
86DGP异类网关协议
87TCFTCF
88EIGRPEIGRP
89OSPFIGPOSPFIGP
90Sprite-RPCSprite RPC协议
91LARP轨迹地址解析协议
92MTP多播传输协议
93AX.25AX.25帧
94IPIPIP中的IP封装协议
95MICP移动互联控制协议
96SCC-SP信号通讯安全协议
97ETHERIPIP中的以太网封装
98ENCAP封装标头
99任意专用加密方案
100GMTPGMTP
101IFMPIpsilon流量管理协议
102PNNIIP上的PNNI
103PIM独立于协议的多播
104ARISARIS
105SCPSSCPS
106QNXQNX
107A/N活动网络
108IPCompIP负载压缩协议
109SNPSitara网络协议
110Compaq-PeerCompaq对等协议
111IPX-in-IPIP中的IPX
112VRRP虚拟路由器冗余协议
113PGMPGM可靠传输协议
114任意0跳协议
115L2TP第二层隧道协议
116DDXD-II数据交换(DDX)
117IATP交互式代理传输协议
118STP计划传输协议
119SRPSpectraLink无线协议
120UTIUTI
121SMP简单邮件协议
122SMSM
123PTP性能透明协议
124ISISOver IPv4
125FIRE
126CRTPCombat无线传输协议
127CRUDPCombat无线用户数据报
128SSCOPMCE
129IPLT
130SPS安全数据包防护
131PIPEIP中的专用IP封装
132SCTP流控制传输协议
133FC光纤通道
134-254未分配
255保留

参考链接:
https://www.iana.org/protocols
https://www.cnblogs.com/zafu/p/10710495.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值