目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4,v,version版本),它的下一个版本就是IPv6。IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。据国外媒体报道,欧盟委员会希望于2010年前将欧洲其成员国境内四分之一的商业和政府部门以及家用网络转换成IPv6标准。 美国已经开始对已经与网络服务商签订IPv6协议的政府部门给与有条件的奖励政策。而欧盟希望跟随美国的步伐,促使其成员国的政府部门在这次转型过程中起到带头作用。
IPv4(Internet Protocol version 4)
IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网(Ether)。
协议结构
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=1');return false;">编辑本段]Version - 4位字段,指出当前使用的 IP 版本。
IP Header Length (IHL) ― 指数据报协议头长度,具有32位字长。指向数据起点。正确协议头最小值为5。
Type-of-Service ― 指出上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。
Total Length ― 指定整个 IP 数据包的字节长度,包括数据和协议头。其最大值为65,535字节。典型的主机可以接收576字节的数据报。
Identification ― 包含一个整数,用于识别当前数据报。该字段由发送端分配帮助接收端集中数据报分片。
Flags ― 由3位字段构成,其中低两位(最不重要)控制分片。低位指出数据包是否可进行分片。中间位指出在一系列分片数据包中数据包是否是最后的分片。第三位即最高位不使用。
Fragment Offset ― 13位字段,指出与源数据报的起始端相关的分片数据位置,支持目标IP适当重建源数据报。
Time-to-Live ― 是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据包无止境的环路过程。
Protocol ― 指出在 IP 处理过程完成之后,有哪种上层协议接收导入数据包。
Header Checksum ― 帮助确保 IP 协议头的完整性。由于某些协议头字段的改变,如生存期(Time to Live),这就需要对每个点重新计算和检验。Internet 协议头需要进行处理。
Source Address ― 指定发送代码。
Destination Address ― 指定接收代码。
Options ― 允许 IP 支持各种选项,如安全性。
Data ― 包括上层信息。
TCP/IP协议栈
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=2');return false;">编辑本段]地址格式(按TCP/IP参考模型划分)
IPv4中规定IP地址长度为32,即有2^32-1个地址。一般的书写法为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包长
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=3');return false;">编辑本段]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路由
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=4');return false;">编辑本段]
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协议则解决这些缺点提供了一个可靠的数据通路。
IP包首部格式
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=5');return false;">编辑本段]
IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展) 。
IP包头字段说明
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=6');return false;">编辑本段]版本: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数据报包头的校验和。
IPv6与IPv4
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=7');return false;">编辑本段]IPv4从出生到如今几乎没什么改变的生存了下来。1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发 。
IPv6与IPv4相比有以下特点和优点:
(1)更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。
⑵更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
(3)增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。
(4)加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
(5)更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,这极大地增强了网络安全。
相关协议
[onclick="userLogin('http://baike.baidu.com/edit/id=21992&dl=8');return false;">编辑本段]IPv6、TCP、UDP、ICMP、SNMP、FTP、TELNET、SMTP、ARP、RARP、RPC、XDR、NFS