IPv4
维基百科,自由的百科全书
应用层 | DNS, FTP, ENRP,HTTP, IMAP, IRC, NNTP, POP3, RTP, SIP, SMTP, SNMP, SSH, Telnet, BitTorrent, DHCP ... |
传输层 | DCCP, SCTP, TCP, UDP, IL, RUDP, ... |
网络层 | IP(IPv4, IPv6),ICMP,ARP,RARP,IGMP... |
数据链路层 | Ethernet, Wi-Fi, Token Ring, MPLS, PPP ... |
物理层 | RS-232, EIA-422, RS-449, EIA-485, 10BASE2, 10BASE-T ... |
IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP。
目录 |
[编辑] TCP/IP协议栈
[编辑] 地址格式
IPv4使用32位地址,因此最多可能有4,294,967,296(=232)个地址。一般的书写法为4个用小数点分开的十进制数。也有人把4個位元組的數字化成一個巨型整數,但這種標示法並不常見。另一方面,目前还并非很流行的IPv6使用的128位地址所採用的位址記數法,在IPv4也有人用,但使用范圍更少。
過去IANAIP地址分为A,B,C,D 4类,把32位的地址分为两个部分:前面的部分代表网络地址,由IANA分配,后面部分代表局域网地址。如在C类网络中,前24位为网络地址,后8位为局域网地址,可提供254个设备地址(因为有两个地址不能为网络设备使用: 255为广播地址,0代表此网络本身) 。网络掩码(Netmask) 限制了网络的范围,1代表网络部分,0代表设备地址部分,例如C类地址常用的网络掩码为255.255.255.0。
一些特别的IP地址段:
- 127.x.x.x给本机地址使用。
- 224.x.x.x为多播地址段。
- 255.255.255.255为通用的广播地址。
- 10.x.x.x,172.16.x.x和192.168.x.x供本地网使用,这些网络连到互连网上需要对这些本地网地址进行转换(NAT)。
但由於這種分類法會大量浪費網路上的可用空間,所以新的方法不再作這種區分,而是把用者需要用的位址空間,以2的乘冪方式來撥與。例如,某一網路只要13個ip位址,就會把一個 16位址的區段給他。假設批核了 61.135.136.128/16 的話,就表示從 61.135.136.129 到 61.135.136.142 的網址他都可以使用。
[编辑] IP包长
IP包由首部(header)和实际的数据部分组成。数据部分一般用来传送其它的协议,如TCP, UDP,ICMP等。数据部分最长可为65515字节(Byte)(=2xx16 - 1 - 最短首部长度20字节) 。一般而言,低层(链路层) 的特性会限制能支持的IP包长。例如以太网(Ethernet)协议,有一个协议参数,即所谓的最大传输单元(Maximum Transfer Unit, MTU) ,为1518字节,以太网的帧首部使用18字节,剩给整个IP包(首部+数据部分)的只有1500字节。
还有一些底层网络只能支持更短的包长。这种情况下,IP协议提供一个分割(fragment)的可选功能。长的IP包会被分割成许多短的IP包,每一个包中携带一个标志(Fragmentid)。发送方(比如一个路由器) 将长IP包分割,一个一个发送,接送方(如另一个路由器)按照相应的IP地址和分割标志将这些短IP包再组装还原成原来的长IP包。
[编辑] IP路由
Ipv4并不区分作为网络终端的主机(host) 和网络中的中间设备如路由器中间的差别。每台电脑可以即做主机又做路由器。路由器用来联结不同的网络。所有用路由器联系起来的这些网络的总和就是互联网。
IPv4技术即适用于局域网(LAN) 也适用于广域网。一个IP包从发送方出发,到接送方收到,往往要穿过通过路由器连接的许许多多不同的网络。每个路由器都拥有如何传递IP包的知识,这些知识记录在路由表中。路由表中记录了到不同网络的路径,在这儿每个网络都被看成一个目标网络。路由表中记录由路由协议管理,可能是静态的记录比如由网络管理员写入的,也有可能是由路由协议动态的获取的。有的路由协议可以直接在IP协议上运行。
常用的路由协议有
- 路由信息协议(Routing Information Protocol, RIP),
- 开放式最短路径优先协议,Open Shortest Path Fast, OSPF) ,
- 中介系统对中介系统协议(Intermediate System – Intermediate System, IS-IS) ,
- 边界网关协议(Border Gateway Protocol, BGP) .
在网络负荷很重或者出错的情况下,路由器可以将收到的IP包丢弃。在网络负荷重的时候,同样一个IP包有可能由路由器决定走了不同的路径。路由器对每一个IP包都是单独选择路由的。这也提高了IP通信的可靠性。但单是IP层上的包传输,并不能保证完全可靠。IP包可能会丢失; 可能会有重复的IP包被接受方收到; IP包可能会走不同的路径,不能保证先发的先到; 接受方收到的可能是被分割了的IP包。在IP之上再运行TCP协议则解决这些缺点提供了一个可靠的数据通路。
[编辑] ICMP
互联网控制消息协议(Internet Control Messages Protocol,ICMP) 用于查错和控制(如),是IP协议不可能缺少的帮手。几乎任何的IP协议的实施(Implementation)都伴随一个ICMP协议的实施。ICMP协议实现在IP之上,即ICMP包是作为IP的数据部分来传送的。
ICMP的一个重要的应用是网络拥塞控制: 路由器丢弃一个IP包时,一般会用ICMP发一个消息给这个IP包的原发送者,原发送者可以相应的降低IP包的发送频率,以降低或避免IP包再被丢弃的可能性。
ICMP的另一个重要的应用在於,将传送ICMP消息的IP包禁止分割位(Don't Fragment-Bit)设置上,就可以利用ICMP的来测量一段网络的最大传输单元(MTU) 。
[编辑] IPOE
Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。
一个用于IP包的以太网数据帧,在IP包首部前有一个14字节的以太网帧首部,在IP数据部分后添加了一个32位(4字节) 的CRC校验。
除了1518字节的最大传输单元(MTU) 限制外,以太网还有最小传输单元的限制: 总帧长不能小於64字节。如果IP包太短,比如IP数据部分短于26字节,那么后面会添0(Padding) ,这时IP首部中的'包长度'指示了真正的包长。
以太网使用48位的地址。每个以太网网卡都有一个独一无二的48位的硬件地址。所有的位均为1的地址是以太网广播地址。发送数据的以太网网卡必须知道数据接送方的以太网地址才能把数据发给它。
地址解析协议ARP(Address Resolution Protocol) 用于将IP地址转换成以太网地址。每台计算机上都有一个ARP列表,里面存储了以太网中不同的IP地址与以太网地址的对应关系。如果一台计算机发现某个目标IP地址没有对应的以太网地址,它会发一个ARP请求(Request) 到以太网中询问,拥有该IP地址的计算机就会发一个ARP应答(Reply)来通知它自己的以太网地址。
[编辑] IP包首部格式
IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展)
0 | 4 | 8 | 12 | 16 | 19 | 24 | 31 |
版本 | 首部长度 | 服务类型 | 长度 | ||||
标识 | 标志 | 段偏移量 | |||||
TTL | 协议 | 校验和 | |||||
源IP地址 | |||||||
目的IP地址 | |||||||
选项 ... |
[编辑] IP包头字段说明
版本:4位,指定IP协议的版本号。
包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。
服务类型:定义IP协议包的处理方法,它包含如下子字段
-
- 过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制)
-
- 延迟字段:1位,取值:0(正常)、1(期待低的延迟)
-
- 流量字段:1位,取值:0(正常)、1(期待高的流量)
-
- 可靠性字段:1位,取值:0(正常)、1(期待高的可靠性)
-
- 成本字段:1位,取值:0(正常)、1(期待最小成本)
-
- 未使用:1位
长度:IP包的总长
标识:唯一地标识主机所发送的一个数据段,通常每发送一个数据段后加一。但IP包被分割后,分割得到的IP包拥有相同的标识
标志:是一个3位的控制字段,包含:
-
- 保留位:1位
-
- 不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段)
-
- 更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
段偏移量:当数据段被分割时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。
TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。
协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。
校验和:16位,是IPv4数据报包头的校验和。
源IP地址:
目的IP地址:
[编辑] 高层协议
IP 是TCP/IP参考模型中网络层的核心协议。在IP之上有许多高层协议。重要的如传输层协议TCP和UDP,应用层的域名服务协议DNS等。
[编辑] 过去和未来
IPv4从出生到如今几乎没什么改变的生存了下来。1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不敷用,并由此导致了IPv6 的开发。
[编辑] 参看
[编辑] 参考文献
[RFC 791] Internet Protocol.