TCP/IP详解卷一之Internet 协议

1 IP提供了一种尽力而为、无连接的数据报交付服务
—“尽力而为”的含义是不保证IP数据报能成功到达目的地。
—“无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理;也意味着IP数据报可不按顺序交付。
·
2 IPv4头部和IPv6头部
—正常的IPv4头部大小为20字节,除非存在可选项;IPv6头部大小固定为40字节,无可任何可选项,但是它可以有扩展头部。
—高位优先字节序(也称网络字节序):是TCP/IP头部中所有二进制整数在网络中传输时所需的字节顺序。一个32位值的4字节按以下顺序传输:首先是0-7位,然后是8-15位,接着是16-23位,最后是24-31位。
(1)IPv4头部字段包括:
在这里插入图片描述
· 版本字段:4位,表示IP数据报的版本号,值为4。
· Internet头部长度字段(IHL):4位,保存IPv4头部中32位字的数量,包括可选项。由于该字段只有4位,因此IPv4头部被限制为最多60字节。当头部没有可选项时,该字段值为5。
· DS字段:6位,区分服务字段,用于支持Internet上不同类型的服务。
· 显式拥塞通知(ECN)字段或指示位:2位。
· 总长度字段:16位,表示数据报的总长度(以字节为单位),其值最大为65535字节。
—注1:尽管可发送一个65535字节的IP数据报,但大多数链路层不能携带这么大的数据,除非将它拆分成更小的片。
—注2:主机不需要接收大于576字节的IPv4数据报。
· 标识字段:16位,用于标识由IPv4主机发送的数据报,对实现分片很重要。
· 标志字段:3位,用于分片。
· 分片偏移字段:13位,用于分片。
· 生存期字段(TTL):8位,用于设置一个数据报可经过的路由器数量的上限。发送方将它初始化为某个值,每台路由器在转发数据报时将该值减1,当该字段值为0时,数据报被丢弃,并使用一个ICMP消息通知发送方。这可以防止由于出现不希望的路由环路而导致数据报在网络中永远循环。
· 协议字段:8位,表示数据报有效载荷部分的数据类型,常用值有17(UDP)和6(TCP)。
· 头部校验和字段:16位,仅计算IPv4头部。
· 源IP地址:32位。
· 目的IP地址:32位。
(2)IPv6头部字段包括:
在这里插入图片描述
· 版本字段:4位,表示IP数据报的版本号,值为6.
· DS字段:6位,区分服务字段。
· ECN字段:2位,显式拥塞通知字段或指示位。
· 流标签字段:20位。
· 负载长度字段:16位,提供IPv6数据报长度,不包括头部长度,但扩展头部包括在负载长度中。在IPv6中,负载长度被限制为64KB,而不是整个数据报。
· 下一个头部:8位,类似于IPv4的协议字段,用于指出IPv6头部之后的头部类型。
· 跳数限制:8位,与IPv4的TTL字段类似。
· 源IP地址:128位。
· 目的IP地址:128位。

3 Internet 校验和
—Internet校验和是一个16位的数字和,能以相当高的概率确定接收的消息或其中的部分内容是否与发送的相匹配。
—计算步骤:
· 第一、将数据报的校验和字段值设置为0。
· 第二、将整个头部划分为许多16位字的序列,如果被计算的字节数为奇数,在序列尾部用一个字节的0填充。
· 第三、用反码算术运算计算所有16位字二进制反码和。
· 第四、对二进制反码和取反码即可得到校验和。
在这里插入图片描述
—当一个IPv4数据报被接收时,对整个头部计算出一个校验和,包括校验和字段自身的值,如果计算出的校验和值不为0,则说明该头部出现差错,将丢弃接收到的数据报。

4 IPv6扩展头部
—扩展头部仅由终端主机处理(仅有一个例外)。
—逐跳选项是唯一由分组经过的每个路由器处理的选项。
(1)路由头部
在这里插入图片描述
—IPv6路由头部为发送方提供了一种IPv6数据报控制机制,以控制数据报通过网络的路径。
—路由类型字段:8位,对于RH0,该值为0;对于RH2,该值为2。RH0已被废弃。
—剩余部分字段:8位,指出还有多少段路由需要处理,即在到达最终目的地之前仍需访问的中间节点数。
—IP地址列表反映转发数据报的节点地址。
—IP路由头部在转发过程中不会被处理,直至目的IP地址字段中包含的地址所在的节点。
—剩余部分字段用来确定来自地址向量的下一跳地址,并将该地址与IPv6头部中的目的IP地址字段交换。
—RH2和RH0的区别在于,RH2只容纳一个地址而且路由类型字段中的值不同。
(2)分片头部
在这里插入图片描述
—在IPv4中,如果数据报大小超过下一跳MTU,任何主机和路由器可将该数据报分片;在IPv6中,仅数据报的发送者可以执行分片操作,此时需要添加一个分片头部。
—保留字段和Res字段都为0,并且都会被接收方所忽略。
—分片偏移字段:13位,表明数据以8字节为单位的偏移量放置在分片头部之后。
—M字段:1位,值为1表示在数据报中包含更多分片,值为0表示该分片是原始数据报的最后一个分片。
—标识符字段:32位,用来确保网络中不同的原始数据报在其生存期内不会被分配相同的标识符字段值。
—“原始数据报”包括两部分:
· “不可分片部分”:包括IPv6头部和任何在到达目的地之前需由中间节点处理的扩展头部(即包括路由头部之前的所有头部,如果有逐跳选项扩展头部,则是该头部之前的所有头部);
· “可分片部分”:包括数据报的其余部分,即目的选项头部、上层头部和有效载荷数据。
—每个分片都包含一个原始数据报中不可分片部分的副本,但是需要修改每个IPv6头部的负载长度字段,以反映它所描述的分片大小。
—分片可能不按顺序到达接收方,但接收方在对分片进行重组之前,必须确保已接收原始数据报的所有分片.

5 IP转发
—简单方案:如果目的地是直接相连的主机或共享网络,IP数据报直接发送到目的地,不需要使用路由器;否则,主机将数据报发送到一台路由器,由该路由器将数据报交付到目的地。
—主机与路由器处理IP数据报的区别在于:主机不转发那些不是由它生成的数据报,但是路由器会这样做。
—转发表理论上应包含下列字段:
· 目的地:32位字段(IPv6为128位),用于与一个掩码操作结果相匹配。针对涵盖所有目的地的“默认路由”的情况,目的地被设置为0。
· 掩码:32位字段(IPv6为128位),用作数据报目的IP地址按位与操作的掩码,结果与转发表中的目的地进行比较。
· 下一跳:下一个IP实体(路由器或主机)的32位IPv4地址或128位IPv6地址,数据报将被转发到该地址。
· 接口:它包含一个由IP层使用的标识符,以确定将数据报发送到下一跳的网络接口。
—当一台主机或路由器中的IP层需要向下一跳的路由器或主机发送一个数据报时,它首先检查数据报中的目的IP地址,在转发表中使用该值来执行最长前缀匹配算法。
—如果在本地出现无法交付的数据报,通常向生成数据报的应用程序返回一个“主机不可达”错误;如果在一台路由器上,通常给发送数据报的主机返回一条ICMP消息。

6 主机模式
—主机模式包括两种:
· 强主机模式:只有当目的IP地址字段中包含的IP地址与数据报到达的接口配置的IP地址匹配时,才同意将数据报交付到本地协议栈。
· 弱主机模式:一个数据报携带的目的地址与它到达的任何接口的任何本地地址匹配时,无论它到达哪个网络接口,它都会被接收的协议栈处理。
—主机模式也适用于发送行为,即,在强主机模式下,只有当接口配置的地址与发送数据报的源IP地址字段匹配时,主机才可以从这个特定接口发送数据报。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值