IPv4
IPv4地址分类及特征
IP地址按作用范围可分成两类,一类是在大网使用的公共IP地址,另一类是只在内网使用的私有地址。
地址类型 | 特征 | 介绍 |
---|---|---|
A类地址 | 第一位为0 | 1、第1字节为网络地址,其它3个字节为主机地址 2、地址范围:1.0.0.1—126.255.255.254 3、10.X.X.X是私有地址,范围从10.0.0.0-10.255.255.255 4、127.X.X.X是保留地址,用做环回测试。 |
B类地址 | 前两位为10 | 1、第1字节和第2字节为网络地址,后2个字节为主机地址 2、地址范围:128.0.0.1—191.255.255.254 3、私有地址范围:172.16.0.0—172.31.255.255 4、保留地址:169.254.X.X |
C类地址 | 前三位为110 | 1、前三个字节为网络地址,最后字节为主机地址 2、地址范围:192.0.0.1—223.255.255.254 3、私有地址:192.168.X.X,范围从192.168.0.0-192.168.255.255 |
D类地址 | 前四位为1110 | 1、不分网络地址和主机地址。 2、地址范围:224.0.0.1—239.255.255.254 |
E类地址 | 前五位为11110 | 1、不分网络地址和主机地址 2、地址范围:240.0.0.1—255.255.255.254 |
特殊IP地址:
- 0.0.0.0只能做源地址
- 255.255.255.255是广播地址
- 127.x.x.x为环回地址,本机使用
专用地址:
* 10/8 地址范围:10.0.0.0——10.255.255.255,
* 172.16/12 地址范围:172.16.0.0——172.31.255.255,
* 192.168/16地址范围:192.168.0.0——192.168.255.255。
IPv4数据报的格式
版本
版本(Version)由4bit构成,标识IP首部的版本号。IPv4的版本号即为4,在这字段上的值也为4。
版本 | 简称 | 协议 |
---|---|---|
4 | IP | Internet Protocol |
5 | ST | ST Datagram Mode |
6 | IPv6 | Internet Protocol version 6 |
7 | TP/LX | TP/IX: The Next Internet |
8 | PIP | The P Internet Protocol |
9 | TUBA | TUBA |
报头长度
报头长度(IHL:Internet Header Length)由4bit构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设置为5,即没有可选项的IP包,首部长度为20字节(4*5=20)
服务类型
服务类型(TOS:Type Of Service)由8比特构成,用来表示服务质量。每一位的具体含义如下:
比特 | 含义 |
---|---|
0 1 2 | 优先度 |
3 | 最低延迟 |
4 | 最大吞吐量 |
5 | 最大可靠性 |
6 | 最小代价 |
(3~6) | 最大安全 |
7 | 未定义 |
这个值通常由应用指定。现在也鼓励这种结合应用的特性设定TOS的方法。
总长度
总长度(Total Length),表示IP首部与数据部分合起来的总字节数。该字段长为16bit。因此IP包的最大长度为65535(=2^16)字节。
标识
标识(ID:Identification),由16bit构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
标志
标志(Flags),由3bit构成,表示包被分片的相关信息。每一位的具体含义如下表所示。
比特 | 含义 |
---|---|
0 | 未使用。现在必须是0. |
1 | 指示是否进行分片 0- 可以分片 1- 不能分片 |
2 | 包被分片的情况下,表示是否为最后一个包(more fragment). 0- 最后一个分片的包 1- 分片中段的包 |
片偏移
片偏移(FO:Fragment Offset),由13bit构成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对于的值为0.由于FO占13位,因此最多可以表示8192(=2^13)个相对位置。单位为8字节,因此最大可以表示原始数据8*8192=65535字节的位置。
生存周期
生存周期(TTL:Time To Live),由8bit构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。实际中它指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,只至变成0则丢弃该包。
协议
协议(Protocol),由8bit构成,表示IP首部的下一个首部隶属于哪个协议。常见的协议编号如下:
分配编号 | 简称 | 协议 |
---|---|---|
1 | ICMP | Internet Control Message |
2 | IGMP | Internet Group Management |
6 | TCP | Transmission Control |
8 | EGP | Exterior Gateway Protocol |
17 | UDP | User Datagram |
41 | IPv6 | IPv6 |
132 | SCTP | Stream Control Transmission Protocol |
136 | UDPLite | UDP-Lite |
头部校验和
头部校验和(Header Checksum),由16bit构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程:首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所得到这个和的1补数赋给首部校验和字段。
源IP地址
源IP地址(Source Address),由32比特构成,表示发送端IP地址。
目标IP地址
目标IP地址(Destination Address),由32比特构成,表示接收端IP地址。
选项
选项(Options),长度可变,通常只在进行实验或诊断时使用。该字段包含如下几点信息:
* 安全级别
* 源路径
* 路径记录
* 时间戳
填充
填充(Padding),也称做填充物。在有可选项的情况下,首部长度可能不是32bit的整数倍。为此,通过向字段填充0,调整为32bit的整数倍。
数据
数据(Data),存入数据。将IP上层协议的首部也作为数据进行处理。
IPv6
IPv6地址结构
IPv6地址 = 前缀 + 接口标识
前缀:相当于v4地址中的网络ID
接口标识:相当于v4地址中的主机ID
例如:2001:A304:6101:1::E0:F726:4E58
IPv6地址表示方法
- 用十六进制表示,如: FE08:….
- 4位一组,中间用“:”隔开,如: 2001:12FC:….
- 若以零开头可以省略,全零的组可用“::”表示,如: 1:2::ACDR:….
- 地址前缀长度用“/xx”来表示,如: 1::1/64
IPv6地址分类
特殊地址
地址类型 | 二进制前缀 | IPv6标识 |
---|---|---|
未指定 | 00…0 | (128 bits) ::/128 |
环回地址 | 00…1 | (128 bits) ::1/128 |
组播 | 11111111 | FF00::/8 |
链路本地地址 | 1111111010 | FE80::/10 |
网点本地地址 | 1111111011 | FEC0::/10 |
全局单播 | (其他) | – |
IPv6数据报的格式
版本
版本(Version)由4bit构成,标识IP首部的版本号。IPv6的版本号即为6,在这字段上的值也为6。同IPv4。
通信量类
通信量类(Traffic Class),相当于IPv4的TOS(Type Of Service)字段,也由8bit构成。
流标号
流标号(Flow Label),由20bit构成,准备用于服务质量(QoS:Quality Of Service)控制。不使用QoS时每一位可以全部设置为0。
在进行服务质量控制时,将流标号设置为一个随机数,然后利用一种可以设置流的协议RSVP(Resource Reservation Protocol)在路由器上进行QoS设置。当某个包在发送途中需要QoS时,需要附上RSVP预想的流标号。路由器接收到这样的IP包后先将流标号作为查找关键字,迅速从服务质量控制信息中查找并做相应处理。只有流标号、源地址以及目标地址三项完全一致时,才被认为是一个流。
有效载荷长度
有效载荷长度(Payload Length),有效载荷是指包的数据部分。IPv4的TL(Total Length)是指包首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部,只表示数据部分的长度。由于IPv6的可选是指连接IPv6首部的数据,因此当有可选项时,此处包含可选项数据的所有长度就是Playload Length。
下一个报头
下一个报头(Next Header),相当于IPv4中的协议字段。由8bit构成。通常表示IP的上一层协议是TCP或者UDP。不过在有IPv6扩展首部的情况下,该字段表示后面第一个扩展首部的协议类型。
跳数限制
跳数限制(Hop Limit),由8bit构成。与IPv4中的TTL意思相同。为了强调“可通过路由器个数”,故将改为“Hop Limit”。数据每经过一次路由器就减1,减到0则丢弃数据。
源地址
由128bit(8个16位字节)构成。表示发送端IP地址。
目标地址
由128bit(8个16位字节)构成。表示接收端IP地址。
IPv6扩展首部
IPv6的首部长度固定,无法将可选项加入其中。取而代之的是通过扩展首部对功能进行有效扩展。扩展首部通常介于IPv6首部与TCP/UDP首部中间。在IPv4中可选项长度固定为40字节,但在IPv6中没有这个限制。
IP协议相关技术
DNS
DNS(Domain Name System)是维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。
ARP
ARP(Address Resolution Protocol)是一种解决地址问题的协议。以目标地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。
RARP(Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。
ICMP
ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置等。
ICMP消息类型
类型(十进制) | 内容 |
---|---|
0 | 回送应答(Echo Reply) |
3 | 目标不可达(Destination Unreachable) |
4 | 原点抑制(Source Quench) |
5 | 重定向或改变路由(Redirect) |
8 | 回送请求(Echo Request) |
9 | 路由器公告(Router Advertisement) |
10 | 路由器请求(Router Solicitation) |
11 | 超时(Time Exceeded) |
17 | 地址子网请求(Address Mask Request) |
18 | 地址子网应答(Address Mask Reply) |
DHCP
DHCP(Dynamic Host Configuration Protocol)
DHCP在分配IP地址有两种方法:一种是由DHCP服务器在特定的IP地址中自动选出一个进行分配;另一种方法是针对MAC地址分配一个固定的IP地址。而且这两种方法可以并用。
NAT
NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除转换IP地址外,还出现了可以转化TCP、UDP端口号的NATP(Network Address Ports Translator)技术,由此可以实现用一个全局IP地址与多个主机的通信。
NAT的潜在问题
由于NAT(NATP)都依赖于自己的转换表,因此会有如下几点限制:
* 无法从NAT的外部向内部服务器建立连接
* 转换表的生成与装换操作都会产生一定的开销
* 通信过程中一单NAT遇到异常需要重启时,所有的TCP连接都将被重置
* 即使备置两台NAT做容灾备份,TCP连接还是会被断开