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位源IP | 32位目的IP |
---|---|---|---|---|---|---|---|---|---|---|---|
0100 | 0101 | 0000 0000 | 0028 | 262b | 010 | 0 0000 0000 0000 | 80 | 06 | 0000 | ac 1e 30 01 | ac 1e 30 aa |
v4 | 20 bytes | 最小延时, 最大吞吐, 最高可靠, 最小费用, 至多一项为1, 全0为默认 | IP数据包长度40 | 唯一标识每个数据报, 每发送一个数据报加一, 该值在数据报分片时被复制到每个分片中 | 第一位保留, 第二位表示禁止分片, 第三位表示更多分片 | 分片相对于原始IP数据报开始处(数据部分)的偏移, 每个IP分片的数据部分的长度必须是8的整数倍(除最后一个IP分片) | 数据报到达目的地之前允许经过的路由器跳数, TTL一般初始为64, 每过一个路由减一, 减为0时丢弃, 防止陷入路由循环 | TCP协议(ICMP:1, TCP:6,UDP:17) | 检验IP报头部是否损坏 | 172.30.48.1 | 172.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地址匹配路由表中的项, 分三步:
- 查找路由表中和数据报的目标IP地址完全匹配的主机IP地址, 如找到, 就使用该路由项, 否则到下一步.
- 查找路由表中和数据报的目标IP地址具有相同网络id的网络IP地址, 如果找到, 就使用该路由项, 否则转到下一步.
- 选择默认路由项, 通常意味着数据报的下一跳路由是网关.
路由表能够更新, 反应网络连接变化, 可以通过 route 命令或其它工具手工修改路由表, 即静态路由更新. 而大型路由器, 通常通过 BGP(border gateway protocol, 编辑网关协议), RIP(routing information protocol, 路由信息协议), OSPF等协议来发现路径, 并更新自己的路由表, 即动态更新.
四、IP 转发
路由器可执行数据报转发, 主机一般只发送和接受数据报.
对于IP数据报转发系统, 对期望转发的数据报执行如下操作:
- 检查数据报头部生存时间TTL值, 如果为0, 则丢弃.
- 查看数据报头部的严格源路由选择选项. 如该选项被设置, 则监测数据报的目标IP地址是否是本机的某个IP地址,如果不是,则发送一个ICMP源站选路失败报文给发送端.
- 如有必要, 则给源端发送一个ICMP重定向报文, 告诉它一个更合理的下一跳路由器.
- 将生存时间 TTL 值减一.
- 处理IP头部选项.
- 如有必要, 进行IP分片操作.
以上我也不太理解, 暂时死记硬背吧.
五、重定向
ICMP重定向报文是ICMP控制报文中的一种。当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据包向它的目的地转发。
发生ICMP重定向通常有两种情况:
- 当路由器从某个接口收到数据还需要从相同接口转发该数据时;
- 当路由器从某个接口到发往远程网络的数据时发现源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位源IP | 128位目的IP |
---|---|---|---|---|---|---|---|
0110 | 0000 0000 | 0x8747a | 137 | 17 | 1 | fe80::b379:ad4f:a361:f962 | ff02::fb |
IPv6 | 指示数据流通信类型或优先级和IPv4中的TOS类似 | IPv6新增字段, 用于某些对连接服务质量有特殊要求的通信,如音视频 | IPv6扩展头部和应用程序数据长度之和, 不包括固定头部长度 | 紧跟IPv6固定头部后的包头类型,如扩展头或上层协议(TCP 6, UDP 17或ICMP 1) | 和IPv4的TTL相同 | 省略了中间的0, 零压缩法 | 省略了中间的0,零压缩法 |
可变长的扩展头部使得IPv6可支持更多选项, 以及未来的扩展需要. 其长度可以是0, 表示没有扩展头部. 一个数据报可以包含多个扩展头部, 每个扩展头部的类型有前一个头部(固定头部或扩展头部)中的下一个包头字段指定, 目前有6中扩展头部: 逐跳选项报头、目的选项报头、路由报头、分段报头、认证报头、加密报头。
这些暂时没有用到, 参考文献也没有太具体的说明, 就不详细介绍了.
总结
以上就是IP协议的内容.
IP协议是TCP/IP协议栈的基础, 非常重要, 需要认真掌握.