2022-12-23 TCP/IP 协议栈_5


前言

IP协议是TCP/IP协议栈的基础, TDP, UDP, ICMP都是以IP数据报格式封装传输.

但IP协议是无状态,无连接,不可靠的. 无状态是指通信双方不同步传输数据的状态信息, 导致所有IP数据包的发送,传输和接受都无前后关系, 完全独立.

如果没有上层协议支持, 难免会乱序和重复. 虽然IP数据报头部提供一个标识字段标识唯一一个IP数据包,但其只被用来处理IP分片和重组, 不指示接受顺序.

网络协议中, UDP和HTTP协议都是无状态协议.

无连接是指通信双方不会一直维持对方的任何信息, 上层协议每次发送数据都必须明确指定对方IP地址.

不可靠意味着IP协议不保证数据包准确的达到接收端. 比如超时丢弃, 校验不过丢弃等. 并且发送端检测到数据发送失败, 只通知上层协议, 但不会试图重传. 所以上层协议, 如TCP协议, 需要自己实现数据确认, 超时重传, 以达到可靠传输的目的.


一、IPv4头部结构分析

我们还是打开Windows终端和WSL终端.

打开WSL的telnet服务:

$ sudo /etc/init.d/xinetd restart
[sudo] password for lhb:
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.

获取WSL端IP地址:

~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.48.170  netmask 255.255.240.0  broadcast 172.30.63.255

打开wireshark, 捕获WSL的网卡信息.

从Windows终端登录WSL端的telnet:

E:\clangC++>telnet 172.30.48.170

输入用户名, 密码进入.

转到 wireshark, 查看捕获信息:

我们随意进入一条TCP捕获:

0000   00 15 5d 49 0a bb 00 15 5d 98 7b 42 08 00 45 00   ..]I....].{B..E.
0010   00 28 26 2b 40 00 80 06 00 00 ac 1e 30 01 ac 1e   .(&+@.......0...
0020   30 aa 27 a2 00 17 d1 7f 81 8a bd 03 2e 06 50 10   0.'...........P.
0030   20 14 b9 02 00 00                                  .....

其中前14个字节是以太网封装, 包括6字节目的地mac地址: 00 15 5d 49 0a bb, 6字节源mac地址: 00 15 5d 98 7b 42, 2字节协议类型: 08 00 (IPv4).

剩下的是IP封装, 20 字节.

45 00 00 28 26 2b 40 00 80 06 00 00 ac 1e 30 01 ac 1e 30 aa
四位版本号四位头部长度八位服务类型(TOS)16位总长度(字节数)16位标识3位标志13位片偏移8位生存时间(TTL)8位协议16位头部校验和32位源IP32位目的IP
010001010000 00000028262b0100 0000 0000 000080060000ac 1e 30 01ac 1e 30 aa
v420 bytes最小延时, 最大吞吐, 最高可靠, 最小费用, 至多一项为1, 全0为默认IP数据包长度40唯一标识每个数据报, 每发送一个数据报加一, 该值在数据报分片时被复制到每个分片中第一位保留, 第二位表示禁止分片, 第三位表示更多分片分片相对于原始IP数据报开始处(数据部分)的偏移, 每个IP分片的数据部分的长度必须是8的整数倍(除最后一个IP分片)数据报到达目的地之前允许经过的路由器跳数, TTL一般初始为64, 每过一个路由减一, 减为0时丢弃, 防止陷入路由循环TCP协议(ICMP:1, TCP:6,UDP:17)检验IP报头部是否损坏172.30.48.1172.30.48.170

之后时TCP报文内容.

二、IP分片

当IP数据报长度超过帧的最大传输单元 MTU 时, 会被分片传输.

分片可以发生在发送端或中转路由上, 在终端目标设备会被内核IP模块组装.

IP头会有三个字段提供分片和重组信息: 数据报标识, 随后的标识, 紧接着的片偏移.

一个数据报的每个分片都有自己的IP头部, 它们有相同的标识值, 及不同的片偏移值. 并且除了最后一个分片, 其它分片的标识位都要设置更多分片. 同时, 每个分片的IP头部的总长度字段将被设置为该分片的长度.

我们做个抓包试验, 在WSL终端输入如下, MTU经查询是1500字节:

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

我们发送一个长1501字节的IP报文, 其中IP头20字节, 剩下1481字节, 我们用ICMP报文(ping 命令, 比较方便条件大小), ICMP头部8字节, 所以数据长度1473字节即可:

在Windows终端输入如下, 通过wireshark捕获WSL网络信息:

E:\clangC++>ping  172.30.48.107 -l 1473 #设置发送报文内容长度

正在 Ping 172.30.48.107 具有 1473 字节的数据:
来自 172.30.48.107 的回复: 字节=1473 时间<1ms TTL=64
来自 172.30.48.107 的回复: 字节=1473 时间<1ms TTL=64
来自 172.30.48.107 的回复: 字节=1473 时间<1ms TTL=64
来自 172.30.48.107 的回复: 字节=1473 时间<1ms TTL=64

172.30.48.107 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

抓到的报文为:

第一个分片:

0000   00 15 5d 49 04 51 00 15 5d 49 05 b4 08 00 45 00   ..]I.Q..]I....E.
0010   05 dc f2 85 20 00 80 01 00 00 ac 1e 30 01 ac 1e   .... .......0...
0020   30 6b 08 00 df 3d 00 01 00 09 61 62 63 64 65 66   0k...=....abcdef
0030   67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   ghijklmnopqrstuv
0040   77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f   wabcdefghijklmno
0050   70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68   pqrstuvwabcdefgh
0060   69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61   ijklmnopqrstuvwa
0070   62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71   bcdefghijklmnopq
0080   72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a   rstuvwabcdefghij
0090   6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63   klmnopqrstuvwabc
00a0   64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73   defghijklmnopqrs
00b0   74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c   tuvwabcdefghijkl
00c0   6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65   mnopqrstuvwabcde
00d0   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75   fghijklmnopqrstu
00e0   76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e   vwabcdefghijklmn
00f0   6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67   opqrstuvwabcdefg
0100   68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77   hijklmnopqrstuvw
0110   61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70   abcdefghijklmnop
0120   71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69   qrstuvwabcdefghi
0130   6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62   jklmnopqrstuvwab
0140   63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72   cdefghijklmnopqr
0150   73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b   stuvwabcdefghijk
0160   6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64   lmnopqrstuvwabcd
0170   65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74   efghijklmnopqrst
0180   75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d   uvwabcdefghijklm
0190   6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66   nopqrstuvwabcdef
01a0   67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   ghijklmnopqrstuv
01b0   77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f   wabcdefghijklmno
01c0   70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68   pqrstuvwabcdefgh
01d0   69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61   ijklmnopqrstuvwa
01e0   62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71   bcdefghijklmnopq
01f0   72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a   rstuvwabcdefghij
0200   6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63   klmnopqrstuvwabc
0210   64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73   defghijklmnopqrs
0220   74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c   tuvwabcdefghijkl
0230   6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65   mnopqrstuvwabcde
0240   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75   fghijklmnopqrstu
0250   76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e   vwabcdefghijklmn
0260   6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67   opqrstuvwabcdefg
0270   68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77   hijklmnopqrstuvw
0280   61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70   abcdefghijklmnop
0290   71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69   qrstuvwabcdefghi
02a0   6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62   jklmnopqrstuvwab
02b0   63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72   cdefghijklmnopqr
02c0   73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b   stuvwabcdefghijk
02d0   6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64   lmnopqrstuvwabcd
02e0   65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74   efghijklmnopqrst
02f0   75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d   uvwabcdefghijklm
0300   6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66   nopqrstuvwabcdef
0310   67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   ghijklmnopqrstuv
0320   77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f   wabcdefghijklmno
0330   70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68   pqrstuvwabcdefgh
0340   69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61   ijklmnopqrstuvwa
0350   62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71   bcdefghijklmnopq
0360   72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a   rstuvwabcdefghij
0370   6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63   klmnopqrstuvwabc
0380   64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73   defghijklmnopqrs
0390   74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c   tuvwabcdefghijkl
03a0   6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65   mnopqrstuvwabcde
03b0   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75   fghijklmnopqrstu
03c0   76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e   vwabcdefghijklmn
03d0   6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67   opqrstuvwabcdefg
03e0   68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77   hijklmnopqrstuvw
03f0   61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70   abcdefghijklmnop
0400   71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69   qrstuvwabcdefghi
0410   6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62   jklmnopqrstuvwab
0420   63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72   cdefghijklmnopqr
0430   73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b   stuvwabcdefghijk
0440   6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64   lmnopqrstuvwabcd
0450   65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74   efghijklmnopqrst
0460   75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d   uvwabcdefghijklm
0470   6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66   nopqrstuvwabcdef
0480   67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76   ghijklmnopqrstuv
0490   77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f   wabcdefghijklmno
04a0   70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68   pqrstuvwabcdefgh
04b0   69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61   ijklmnopqrstuvwa
04c0   62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71   bcdefghijklmnopq
04d0   72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a   rstuvwabcdefghij
04e0   6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63   klmnopqrstuvwabc
04f0   64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73   defghijklmnopqrs
0500   74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c   tuvwabcdefghijkl
0510   6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65   mnopqrstuvwabcde
0520   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75   fghijklmnopqrstu
0530   76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e   vwabcdefghijklmn
0540   6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67   opqrstuvwabcdefg
0550   68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77   hijklmnopqrstuvw
0560   61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70   abcdefghijklmnop
0570   71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69   qrstuvwabcdefghi
0580   6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62   jklmnopqrstuvwab
0590   63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72   cdefghijklmnopqr
05a0   73 74 75 76 77 61 62 63 64 65 66 67 68 69 6a 6b   stuvwabcdefghijk
05b0   6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64   lmnopqrstuvwabcd
05c0   65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74   efghijklmnopqrst
05d0   75 76 77 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d   uvwabcdefghijklm
05e0   6e 6f 70 71 72 73 74 75 76 77                     nopqrstuvw

第一个分片的解读:

长度1500, 有更多分片, 共2帧.

标识: 0xf285 (62085).

片偏移: 0

Internet Protocol Version 4, Src: 172.30.48.1, Dst: 172.30.48.107
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
    Total Length: 1500  #达到最大报文传输长度
    Identification: 0xf285 (62085)
    Flags: 0x20, More fragments
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..1. .... = More fragments: Set  #设置分片
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 128
    Protocol: ICMP (1)
    Header Checksum: 0x0000 [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 172.30.48.1
    Destination Address: 172.30.48.107
    [Reassembled IPv4 in frame: 2]

第二个分片:

0000   00 15 5d 49 04 51 00 15 5d 49 05 b4 08 00 45 00   ..]I.Q..]I....E.
0010   00 15 f2 85 00 b9 80 01 00 00 ac 1e 30 01 ac 1e   ............0...
0020   30 6b 61                                          0ka

第二个分片的解读:

长度21, 没有更多分片, 共2帧, 第一帧 1480 字节, 第二帧 1 字节.

标识: 0xf285 (62085)

片偏移: 1480

Internet Protocol Version 4, Src: 172.30.48.1, Dst: 172.30.48.107
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
    Total Length: 21
    Identification: 0xf285 (62085)
    Flags: 0x00
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    ...0 0101 1100 1000 = Fragment Offset: 1480
    Time to Live: 128
    Protocol: ICMP (1)
    Header Checksum: 0x0000 [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 172.30.48.1
    Destination Address: 172.30.48.107
    [2 IPv4 Fragments (1481 bytes): #1(1480), #2(1)]

三、IP路由

IP协议的核心任务是数据报的路由, 即决定发送数据报到目的主机的路径.

一般来讲, 对于主机来说, IP路由的选择比较简单, 如果目的主机与源主机处于同一共享网络 (以太网或令牌环网), 那么IP数据报就直接发送到目的主机. 否则, 主机把数据报发往一个默认的路由上, 由路由器转发该数据.

IP模块实现数据报路由的核心数据结构是路由表, 路由表按照数据报的目标IP地址分类, 同一类型IP数据报将被发往相同的下一跳路由器或目标机器.

IP路由的机制是用给定数据报的目标IP地址匹配路由表中的项, 分三步:

  1. 查找路由表中和数据报的目标IP地址完全匹配的主机IP地址, 如找到, 就使用该路由项, 否则到下一步.
  2. 查找路由表中和数据报的目标IP地址具有相同网络id的网络IP地址, 如果找到, 就使用该路由项, 否则转到下一步.
  3. 选择默认路由项, 通常意味着数据报的下一跳路由是网关.

路由表能够更新, 反应网络连接变化, 可以通过 route 命令或其它工具手工修改路由表, 即静态路由更新. 而大型路由器, 通常通过 BGP(border gateway protocol, 编辑网关协议), RIP(routing information protocol, 路由信息协议), OSPF等协议来发现路径, 并更新自己的路由表, 即动态更新.

四、IP 转发

路由器可执行数据报转发, 主机一般只发送和接受数据报.

对于IP数据报转发系统, 对期望转发的数据报执行如下操作:

  1. 检查数据报头部生存时间TTL值, 如果为0, 则丢弃.
  2. 查看数据报头部的严格源路由选择选项. 如该选项被设置, 则监测数据报的目标IP地址是否是本机的某个IP地址,如果不是,则发送一个ICMP源站选路失败报文给发送端.
  3. 如有必要, 则给源端发送一个ICMP重定向报文, 告诉它一个更合理的下一跳路由器.
  4. 将生存时间 TTL 值减一.
  5. 处理IP头部选项.
  6. 如有必要, 进行IP分片操作.

以上我也不太理解, 暂时死记硬背吧.

五、重定向

ICMP重定向报文是ICMP控制报文中的一种。当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据包向它的目的地转发。

发生ICMP重定向通常有两种情况:

  1. 当路由器从某个接口收到数据还需要从相同接口转发该数据时;
  2. 当路由器从某个接口到发往远程网络的数据时发现源ip地址与下一跳属于同一网段时。

那么ICMP重定向的意义就是滤除不必要的中继点, A发送IP报文经过B, B又发给C, 但A和C又在同一局域网, 那B就发给A一个ICMP报文, 告诉A, 如果再发那个目的IP, 就直接发给C, 别经过我B了, 浪费时间. 于是A调整路由表, 下次再发, 直接给C.

虽然是一种优化, 但经查阅资料, 发现这个报文也很容易让黑客利用, 通过伪造ICMP重定向报文, 诱使主机更新路由表, 让以后的IP报文发送到黑客想让你发送的地方, 偷取信息. 看来网络安全漏洞是防不胜防.

六、IPv6 头部结构

IPv6协议是网络层技术发展的趋势, 是IPv4的更新, 不仅解决IPv4地址匮乏问题, 还做了更多改进, 包括多播和流的功能, 引入自动配置功能, 增加专门的网络安全功能等. 以下我们只简要分析IPv6头部结构. IPv6数据报的以太网帧封装类型值是 0x86dd.

IPv6头部由40字节的固定头部和可变长的扩展头部组成, 以下是wireshark抓包的IPv6头部:

0000   60 08 74 7a 00 89 11 01 fe 80 00 00 00 00 00 00   `.tz............
0010   b3 79 ad 4f a3 61 f9 62 ff 02 00 00 00 00 00 00   .y.O.a.b........
0020   00 00 00 00 00 00 00 fb                           ........

具体内容如下:

Internet Protocol Version 6, Src: fe80::b379:ad4f:a361:f962, Dst: ff02::fb
    0110 .... = Version: 6
    .... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
        .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0)
        .... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    .... 1000 0111 0100 0111 1010 = Flow Label: 0x8747a
    Payload Length: 137
    Next Header: UDP (17)
    Hop Limit: 1
    Source Address: fe80::b379:ad4f:a361:f962
    Destination Address: ff02::fb
四位版本号八位通信类型二十位流标签十六位净荷长度八位下一个包头八位跳数限制128位源IP128位目的IP
01100000 00000x8747a137171fe80::b379:ad4f:a361:f962ff02::fb
IPv6指示数据流通信类型或优先级和IPv4中的TOS类似IPv6新增字段, 用于某些对连接服务质量有特殊要求的通信,如音视频IPv6扩展头部和应用程序数据长度之和, 不包括固定头部长度紧跟IPv6固定头部后的包头类型,如扩展头或上层协议(TCP 6, UDP 17或ICMP 1)和IPv4的TTL相同省略了中间的0, 零压缩法省略了中间的0,零压缩法

可变长的扩展头部使得IPv6可支持更多选项, 以及未来的扩展需要. 其长度可以是0, 表示没有扩展头部. 一个数据报可以包含多个扩展头部, 每个扩展头部的类型有前一个头部(固定头部或扩展头部)中的下一个包头字段指定, 目前有6中扩展头部: 逐跳选项报头、目的选项报头、路由报头、分段报头、认证报头、加密报头。

这些暂时没有用到, 参考文献也没有太具体的说明, 就不详细介绍了.


总结

以上就是IP协议的内容.

IP协议是TCP/IP协议栈的基础, 非常重要, 需要认真掌握.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停感叹的老林_<C 语言编程核心突破>

不打赏的人, 看完也学不会.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值