IP协议

引言

Internet协议即IP协议。所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种尽力而为,无连接的数据包交付服务。

“尽力而为”: 不保证IP数据报成功到达目的地,任何可靠性需要上层提供。

“无连接“: IP不维护网络单元中数据报相关的任何连接状态信息,每个数据报独立于其它数据报来处理。两个连续的数据报可能乱序到达目的地

IP数据报格式

IPv4.png

长度信息:一个常规的IPv4头部大小为20字节,除非存在选项字段(很少见)。IPv6头部长度是它的两倍,但是没有任何选项。

网络字节序: 与计算机术语:大端对齐同一个意思。低位存在低地址,高位存在高地址。如数字 0xff10, 计算机的CPU存储为小端对其,即: 10 ff H. 而将其通过网络传输时,必须转换为 ff 10 H(网络字节序)才能传输,即高位字节优先。

字段解释:

  • 版本: ipv4 为4, ipv6为6
  • IHL(Internet 头部长度): 有多少个32bits. 正常情况是5, 即前面谈过的20字节。IPv6没有这个字段,其长度固定为40字节。
  • ToS(服务类型字段):被分为DS(区分服务字段)和ECN(显示拥塞通知字段)。
  • 总长度:是整个IP数据报的总长度,通过这个字段和IHL字段,我们知道数据部分从哪里开始。该字段长度为16bits,所以IP报文最大可为65535字节。但是链路层协议往往不能携带这么大的数据,所以要对其进行分片。
  • 标识字段: 为了避免不同数据报分片之间的混淆,主机维护计数器,将值赋予该字段。该字段对分片的实现非常重要。
  • TTL(生存周期):数据报可以经过的路由器的总数量。通常为64,也有128,255等。当这个字段达到0,该数据报被丢弃,并产生一个ICMP消息通知发送者.
  • 协议字段: 表示数据报有效载荷部分的数据类型。UDP(17),TCP(6)。
  • 头部校验和: 只计算IPv4头部的校验和,不保证有效载荷的正确性

DS字段和ECN

  • DS字段的数字被称为DSCP(区分服务代码点),用于支持IP协议上不同类型的服务:即不只是尽力而为的服务。
  • 2位的ECN是数据报的拥塞标识符,一个具有ECN感知能力的路由器在持续拥塞的状态下会设置这两位,TCP协议会发现这种情况并且将其通知发送方,发送方随后会降低发送速度。

IP选项

IP支持一些可供选择的选项,其中大部分是不再实用或可取,在IPv6中,大部分选项被删除或者改变,而且不再是IPv6头部的一部分。这些选项有:列表结尾,没有操作,源路由,安全和处理标签,记录路由,时间戳,流ID,EIP,跟踪,路由器警告,快速启动。

IPv6扩展头部

IPv6.png

IPv6头部固定为40字节,IPv6通过扩展头部来实现IPv4选项的部分功能。扩展头部和更高层的协议(TCP/IP)与IPv6头部构成一个级联头部,它们之间通过下一个头部字段连接起来。

各个选项的详细说明这里不细说,请查阅相关资料。

IP转发

当主机收到一个数据报时,首先检查目的地址:

  • 如果是自己(自己某一个接口所配置的IP地址或IP广播或者组播地址),则交给协议字段或者IPv6头部的下一个头部字段指定的协议模块处理。
  • 如果不是:
    • 如果IP层被配置为路由器,则转发该数据报。
    • 否则默默丢弃,必要时生成ICMP报文给发送者。

转发不会改变数据报的IP地址,只是通过设置链路层地址来完成交付的过程:

  • 发送者定义好源IP和目的IP,如果目的IP不在本地,则将链路层的目的MAC地址设置为路由器,由路由器代为转发。
  • 每一跳路由器在转发时,都会将源MAC地址设置为自己,目的MAC地址设置为下一跳路由器。

转发表

当需要转发一个数据报时,必须与转发表匹配,从而知道下一跳和输出端口。转发表的组成如下:

  • 目的地址: 用于与一个掩码操作的结果向匹配。如果该字段为全0,表示默认路由
  • 掩码:将报文先进行掩码,再与目的地址比较。
  • 下一跳:下一个IP实体(路由器或者主机)的IP地址。数据报将被转发到该地址。
  • 接口:从哪一个网络接口发出去。

可以看到,路由器不包含到任何目的地的完整转发路径。IP转发只提供数据报文发送的下一跳的地址。它有以下假设:

  • 假设下一跳更接近目的地
  • 假设下一跳路由器与自己直接连接
  • 假设实体之间没有环路

完成这些假设需要路由协议,多种路由协议能够做好这项工作:RIP,OSPF,BGP,IS-IS。

IP 分片和重组

链路层对可传输的每一个帧的大小有着限制,比如以太网限制为1500字节。而一个IP数据报的大小可能又65535字节。要保持IP数据报抽象与链路层细节的一致和分离,IP引入了分片和重组。

在网络层发送数据报时,会检测所发送接口的MTU(最大传输),如果超出则进行分片。分片既可以在端上进行,也可以在路径上的任意一点进行。

分片

将一个IP数据报,分割成多个满足MTU限制的IP子数据报。每个数据报都有完整的:ETH + IP + 网络层负载的结构,只不过原来大数据报的负载被均分在分片的负载当中。

虽然每一个IP分片也都有IP头部,但是每个头部都是有标识的,例如将某一个数据报分为下面3个部分:

  • 分片1 : ETH + IP + 负-------------载

  • 分片2 : ETH + IP + 负-------------载

  • 分片3 : ETH + IP + 负----载

IPv4头部的标识分片偏移更多分片(MF) 标识着不同的分片,也为重组作基础。

各个字段的作用如下:

  • 标识:同一数据报的所有分片均相同,用于区分不同数据报的分片,由发送方设置。
  • 分片偏移:用于重组时回复顺序。
  • MF:有后续分片标识为1,没有后续分片标识为0。

IPv4中的总长度要修正为分片的总长度。

重组

重组依据标识,分片偏移,MF来重组数据报即可,但是也要注意下面两个事情:

  • 任何一个分片的丢失,都将导致整个数据报重发。所以TCP尽量不让IP分片发生。
  • 重组超时: 任何数据报的任何一个分片首先到达目的地,IP层就启动一个计时器。超时一般是30秒后或者60秒。如果重组超时,目标机器回复一个ICMP消息告诉发送方重组超时,请求重发。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容