
Internet协定
Internet协定(Internet Protocol)是一个协定簇的总称,其本身并不是任何协定。一般有档案传输协定、电子邮件协定、超文本传输协定、通信协定等。
基本介绍
- 中文名:Internet协定
- 外文名:Internet Protocol
- 基本解释:一个协定簇的总称
- 内容:档案传输协定、电子邮件协定等
协定介绍
产生原因
IP协定是用于将多个包交换网路连线起来的,它在源地址和目的地址之前传送一种称之为数据包的东

西,它还提供对数据大小的重新组装功能,以适应不同网路对包大小的要求。
範围
IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协定来说很普通的服务。
接口
这个协定由主机到主机协定调用,而此协定负责调用本地网路协定将数据报传送以下一个网关或目的主机。例如TCP可以调用IP协定,在调用时传送目的地址和源地址作为参数,IP形成数据报并调用本地网路(协定)接口传送数据报。
操作
IP实现两个基本功能:定址和分段。IP可以根据数据报报头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能。如果有些网路内只能传送小数据报,IP可以将数据报重新组装并在报头域内注明。IP模组中包括这些基本功能,这些模组存在于网路中的每台主机和网关上,而且这些模组(特别在网关上)有路由选择和其它服务功能。对IP来说,数据报之间没有什幺联繫,对IP不好说什幺连线或逻辑链路。
IP使用四个关键技术提供服务:服务类型,生存时间,选项和报头校验码。服务类型指希望得到的服务质量。服务类型是一个参数集,这些参数是Internet能够提供服务的代表。这种服务类型由网关使用,用于在特定的网路,或是用于下下一个要经过的网路,或是下一个要对这个数据报进行路由的网关上选择实际的传送参数。生存时间是数据报可以生存的时间上限。它由传送者设定,由经过路由的地方处理。如果未到达时生存时间为零,抛弃此数据报。对于控制函式来说选项是重要的,但对于通常的通信来说它没有存在的必要。选项包括时间戳,安全和特殊路由。报头校验码保证数据的正确传输。如果校验出错,抛弃整个数据报。
IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模组中实现。
内容
档案传输协定
档案传输协定(File Transfer Protocol,FTP)是一套允许档案在不同的Internet计算机之间进行交换的规则。它与HTTP不同,后者供网页浏览器请求网页和相关档案以显示某一页面,FTP只是用来将档案从一台计算机传送到另一台。网站开发人员通常使用FTP将网页从他们自己的计算机传送到伺服器,FTP也常常用来将程式和档案从其他伺服器下载到个人计算机。请参阅附录中的“网页开发人员参考”之“FTP网页发布教程”,了解更多关于FTP的信息。
FTP协定

电子邮件协定
我们大部分人对电子邮件已经司空见惯,但它的顺利运行牵涉到两台伺服器:一台邮件接收伺服器和一台邮件传送伺服器。当你给别人传送邮件时,使用的是简单邮件传输协定(SMTP);当你接收邮件时,使用的是邮局协定(POP,现在是POP3)和Internet信息存取协定(IMAP)。
POP3工作模式图

超文本传输协定
超文本传输协定HTTP是一组在Web上传输档案的规则,例如文本、图形图像、声音、视频和其他多媒体档案。网页浏览器和网页伺服器通常使用这一协定。当网页浏览器用户以输入网址或点击超级连结的方式请求一个档案的时候,浏览器便建立一个HTTP请求并把它传送到伺服器,目标机器上的网页伺服器收到请求后进行必要的处理,再将被请求的档案和相关的媒体档案传送出去,进行应答。
HTTP传输模式图

通信协定
一、 通信协定的种类和特点
目前常见的通信协定主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协定中用得最多、最为複杂的当然还是TCP/IP协定,最为简单的是NetBEUI协定,它简单得不需要任何设定即可成功配置。
1、 NetBEUI协定
NetBEUI协定它的全称是:NetBIOS Extend User Interface,即用户扩展接口,它是由IBM于1985年公司开发的,它是一种体积小、效率高、速度快的通信协定,同时它也是微软最为喜爱的一种协定。它主要适用于早期的微软作业系统如:DOS、LAN Manager、Windows3.x和Windows for Workgroup,但微软在当今流行的WIN9X和WINNT中仍把它视为固有预设协定,由此可见它并不是我们所认为是“多余”的,而且在有的作业系统中连网还是必不可少的,如在用WIN9X和WINME组网进入NT网路时一定不能仅用TCP/IP协定,还必需加上“NetBEUI”协定,否则就无法实现网路连通,不信试试看!
因为它的出现比较早,也就有它的局限性,NetBEUI是专门为几台到百多机所组成的单段网路而设计的,它不具有跨网段工作的能力,也就是说它不具有“路由”功能,如果您在一伺服器或工作站上安装了多个网卡作网桥时,将不能使用NetBEUI作为通信协定,这一点必需记清楚!
NetBEUI通信协定的特点就是:a、体积小,因原来就要是DOS、LAN Manger等较低版本的作业系统,故它对系统的要求不高,运行后占用系统资源最少;b、上面已讲过,也恐是因为主要服务的对象较低版本的作业系统,它不具有路由功能,不能实现跨网路通信;c、因为简单,对系统要求低,也就适合初学组网人员学习使用。
2、IPX/SPX协定
IPX/SPX协定的全称为:Internetwork Packet Exchange/Sequences Packet Exchange,网际包交换/顺序包交换。它是NOVELL公司为了适应网路的发展而开发的通信协定,它的体积比较大,但它在複杂环境下有很强的适应性,同时它也具有“路由”功能,能实现多网段间的跨段通信。当用户接入的是NetWare伺服器时,IPX/SPX及其兼容协定应是最好的选择。但如在Windows环境中一般不用它,特别要强调的是在NT网路和WIN9X对等网中无法直接用IPX/SPX进行通信。
IPX/SPX的工作方式较简单,不需要任何配置,它可通过“网路地址”来识别自己的身份。在整个协定中IPX是NetWare最底层的协定,它只负责数据在网路中的移动,并不保证数据传输是否成功,而SPX在协定中负责对整个传输的数据进行无差错处理。在NT中提供了两个IPX/SPX的兼容协定:NWLink IPX/SPX 兼容协定、NWLink NetBIOS,两者统称为NWLink 通信协定。它继承了IPX/SPX协定的优点,更适应了微软的作业系统和网路环境,当需要利用Windows系统进入NetWare伺服器时,NWLink通信协定是最好的选择。
3、 TCP/IP协定
TCP/IP协定的全称是:Transmission Control Protocol /Internet Protocol,即传输控制协定/网际协定。它是微软公司为了适应不断发展的网路,实现自己主流作业系统与其它系统间不同网路的互连而收购开发的,它是目前最常用的一种协定(包括INTERNET),也可算是网路通信协定的一种通信标準协定,同时它也是最複杂、最为庞大的一种协定。TCP/IP协定最早用于UNⅨ系统中,现在是Internet的基础协定。
TCP/IP通信协定具有很灵活性,支持任意规模的网路,几乎可连线所有的伺服器和工作站,正因为的灵活性也带来了它的複杂性,它需要针对不同网路进行不同设定,且每个节点至少需要一个“IP位址”、一个“子网掩码”、一个“默认网关”和一个“主机名”。但是在区域网路中微软为了简化TCP/IP协定的设定,在NT中配置了一个动态主机配置协定(DHCP),它可客户端自动分配一个IP位址,避免了出错。
TCP/IP通信协定当然也有“路由”功能,它的地址是分级的,不同于IPX/SPX协定,这样系统就很容易找到网上的用户,IPX/SPX协定用的是一种广播协定,它经常会出现广播包堵塞,无法获得最佳网路频宽。但特别要注意的一点就是在用WIN9X和WINME组网进入NT网路时一定不能仅用TCP/IP协定,还必需加上“NetBEUI”协定,否则就无法实现网路连通。
二、 协定选择的原则
我们在选择网路通信协定时为了儘量做到一次成功,最好遵循以下原则:
1、 所选择的协定要与网路结构、功能一致
如果您的网路有网桥等类似路由设备,则必需选择具有路由功能的协定,如IPX/SPX、TCP/IP等,绝对不能选择NetBEUI作为通信协定。但是您的网路没有路由选择功能,只是单一的网段,能用NetBEUI作为通信协定的儘量选用,因为此协定占用系统资源最少,运行速度最快,如在DOS下与NT伺服器相连,则最好选用NetBEUI作为通信协定,它比TCP/IP协定快且稳定,这一点我是深有体会的。以前我们公司在DOS通常用TCP/IP作为协定,但总是出现当机,有时根本连不上网,但改用`NetBEUI作为通信协定后,系统性能一下得到了提高。要注意的一点是如果用NetBEUI作为通信协定,则在您的NT伺服器上同时也要装上此协定,否则根本行不通!还有就是在WIN9X(包括WINME)要实现与NT伺服器成功连网则必需在客户和服务端安装上`NetBEUI协定,否则可能连不上网,这一点我也做过多次试验。当然对于较複杂的网路还是选择TCP/IP协定好。
2、 儘量选用一种协定
如果可能的话最好只选用一种通信协定,因为每一仲协定都要占用系统的记忆体资源的,会影响系统的工作效率的,在绝大多数情况下一种协定是完全可以满足连网需求的。
3、 保持协定的一致性
当您的网路要与其它网路进行通信时,要注意的是两个网路在协定的选择方面儘量一致,因为如果不一致,会导致在通信时互不相认,不过一般现在的通信协定标準中TCP/IP协定为绝大多数协定所接纳、兼容,不过安装TCP/IP协定一般是不会有这种不相认的现象出现的。
谬误:
由于一些误导,有很多人误认为通信协定就是TCP/IP协定,只要安装了它任何网路都可正常连通,认为其它协定没有用,事实上,不同的网路协定都有其存在的必要。每一协定都有它所依赖的主要作业系统,不能随便选取。在一个网路中运行良好的协定,在另一个却未必能行得通。
总览
联繫
下图显示了IP协定在协定体系中的位置。
IP上下有两个接口,一个是与主机与主机协定的接口,另一个是与本地网路的接口,本地网路可以是小型网路也可以大型网路,说不定的。
操作模式
下面的例子可以看到操作的模型是什幺。我们假设传输要经过中间网关。传送进程调用本地IP模组传送数据,同时传送目的地址和其它参数作为调用参数。IP层準备数据报头并把它加在需要传送的数据之前。IP模组为这个网路地址决定一个本地网路地址,在这里就是网关地址。IP传送数据报和本地网路地址到网路接口。本地网路接口创建一个本地网路头加在数据报上,然后向本地网路传送。
加上本地网路头的数据报到达网关后,本地网路接口去掉这个头,将结果传送给(网关上的)IP模组。这个IP模组决定目的主要的本地网路地址,然后再如上所述的过程传送数据报到本地网路接口。这个本地网路接口创建一个本地网路头加在数据报上,将数据报传送到目的主机。在目的主机上,本地网路接口去掉数据报上的本地网路头,将结果交给IP模组。IP模组决定数据报应该把数据报向哪一个应用程式传送,系统会发出系统调用,IP模组返回源地址和其它参数。
功能描述
IP的功能就是把数据报在互联的网路上传送,通过将数据报在一个个IP模组间传送直到目的模组来达到目的。网路中每个主机和网关上都有IP模组。数据报在一个个模组间通过路由处理网路地址传送到目的地址。因此网路地址对于IP协定十分重要。如前所述,因为各个网路上的数据报大小可能不同,因此有必要对大的数据报进行分段。
定址
名字,地址和路由是有区别的,名字是我们要找的,地址指出这个名字在什幺地方,路由解决如何到那里的问题。IP主要处理地址的问题。把名字和地址进行映射的工作由上层协定完成。IP模组将地址和本地网路地址加以映射,而将本地网路地址和路由进行映射则是低层协定的任务。
地址是32位长,由网路号和本地地址两部分构成。地址有三类:A类的最高位为0,后7位表示网路号,其它的24位表示本地地址;B类前两位为10,后14位表示网路地址,其它16位表示本地地址;C类三位为110,后21位是网路号,其它8位代表本地地址。
在将网路地址和本地网路地址进行映射时必须注意,有些主机可能使用几个不同的IP位址(我们可以把本地网路地址理解为MAC地址)。我们必须能够处理一台主机有几个处理连线埠,而每个连线埠都有几个逻辑的IP位址。
分段
对于不同的网路,其中传送的包大小可能不一样,因此把大包分小的功能是必须的。数据报也可以被标记为“不可分段”,如果一个数据报被如何标记了,那幺在任何情况下都不準对它进行分段。如果不分段到不了目的地,那就把包在半路抛弃了。在本地网内进行的重新分段和重组对IP模组是不可见的,这种方法也可以使用。
本地网分段和重组把重组的各段加上标记,接收方使用这些标记使不同的段区别开来。段偏移量域告诉接收方应该把这一段放在什幺地方,多段标记指示最后一个段,利用不同的域完全可以重组一个数据报。标记域是用于唯一标记数据报的,它是最初的传送方设定,而且要保证数据报在网路传输的全过程中它中唯一的。最初的传送方把多段标记设定为零,段偏移量设定为零。
我们假设IP模组把一个大数据报分为两个小的,IP模组首先取得数据报头,再分隔数据为两份,将数据报头加在两份数据上。分隔数据时以8个位元组为单位,第二段不一定是8个位元组,但第一个必须是。我们把第一段中的8位位元组数称为段块数(NFB)。新生成的第一个数据报内是生成的第一段数据,设定多段标记为1;新生成的第二个数据报内是生成的第二段数据,多段标记等于原来数据报内的值,段偏移量等于原数据报中的值加上NFB。上述过程可以从2扩展至N的情况。
对段的重组要求以下四个域有相同的值:标记,源地址,目标地址和协定。将不同的数据报根据自己带的偏移量重新组合为新段,第一个段的偏移量为0,最后一个段的多段标记为0。
网关
网关在不同网路间传送数据报,网关也实现网关到网关协定(GGP),它用于传送路由和其它控制信息。网关中的高层协定根本不用实现,GGP的功能可以在IP模组内实现。
说明
Internet包头格式
包头格式如下:
版本:4位
此域标明包头的格式。我们以IP版本4为例。
IHL:4位
Internet包头长度是以32位为单位标记的包头长度,它指向数据的开始位置,这个域的最小合法值为5。
服务类型:8位
它是一些指示服务质量的参数,这些参数用于在特定网路指示所需要的服务。有些网路会提供优先权服务。选择的基本原则是以下三者的权衡:低延时,高可靠和高吞吐量。
0-2 优先权
3 0 = 通常延时 1 = 低延时
4 0 = 通常吞吐量 1 = 高吞吐量
5 0 = 通常可靠性 1 = 高可靠性
6-7 保留
优先权的说明如下:
111 - Network Control
110 - Internetwork Control
101 - CRITICECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine
如果使用了延时(D),吞吐量(T)和可靠性(R)选项可以增加服务质量。这因各个网路不同而不同,没有通用性。除了非常特殊的情况外,最多设定两个参数就够了。服务类型是用来指示如何对待在网路中传送的数据报。网路控制优先权原来是用于一个网路中的,而实际中却套用于每个网路了。互联控制是用于网关控制的。如果只在一个网路中实现了这些参数,那个网路必须在自己的範围之内控制对它们的访问。
总长度:16位
总长度指的是数据报的长度,由位元组计,包括数据和报头。允许数据报的大小为64K。这幺大的数据报对大多数主机和网路来说是不适用的。但是,所有主机必须能够接收大于576位元组的数据报,无论它们是一起来,还是分段来。如果知道对方主机能够接收大于576位元组的数据报,最好在传送时不要传送小于576位元组的数据报。选择576是因为576=512(数据)+64(报头)。报头最长不超过60位元组,通常为20位元组。
标识:16位
标记是传送用于帮助重组分段的包的。
标记:3位
0 保留,必须为0
1 (DF) 0 = 可分段,1 = 不可分段
Bit 2 (MF) 0 = 最后一段,1 = 还有多段
0
1
2
0
D
F
M
F
段偏移:13位
此域指示这个段在应该在数据报中什幺位置,它以64位为单位计算,首段的偏移为零。
生存期:8位
此域说明数据报在网际网路系统生存的最大时间。如果此域的值为零,抛弃此数据报。在处理报头的同时也处理此域。时间以秒计,但每个处理单元都至少会对TTL减一,即使时间小于一秒。
协定:8位
此域指示用于数据报数据部分的下一层协定。
头校验码:16位
校验码只在头部,因此头域会在处理时改变,因此头会经常改变。这种校验方法比较容易计算,实验证明它也是适用的,但它可能在未来被CRC校验过程取代。
源地址和目的地址:32位,具体情况请看下文。
选项:长度不定
在数据报中可以有选项也可以没有,但IP模组中必须有处理选项的功能。有些情况下,安全选项是必须的。它的长度不定,可以没有也可以是多个。选项有两种格式:
1 单独一个选项类型位元组
2 一个选项类型位元组,一个选项长度位元组和实际选项数据位元组
选项长度是选项类型,长度本身和数据的长度。选项类型可被看作有3个域:
1位 複製标记
2位 选项类
5位 选项号
複製标记指这个选项要在分段是要存在于所有段中。
0 = 不複製
1 = 複製
选项类有:
0 = 控制
1 = 保留
2 = 调度和测量
3 = 保留
下面是具体选项:
CLASS
NUMBER
LENGTH
DESCRIPTION
0
0
-
选项表结束。只占一个位元组,没有长度位元组
0
1
-
无操作。只占一个位元组,没有长度位元组
0
2
11
安全,用于传送安全,Compartmentation,用户组(TCC)和DOD规则兼容的处理限制码
0
3
变长
松源地址路由,使用源地址提供的信息进行路由
0
9
变长
紧源地址路由,使用源地址提供的信息进行路由
0
7
变长
记录路由,用于跟蹤数据报採用的路由
0
8
4
流ID,用于传送流标记
2
4
变长
Internet时间戳
特定选项定义
选项表结束
+--------+
00000000
+--------+
Type=0
此选项指示选项表的结束,它不一定和报头结束点一致,它用于指示选项表的结束而不是每个选项的结束,只有当选项表结束位置和报头结束位置不一致时使用。它可以被複製,引入或在分段时删除。
无操作
+--------+
00000001
+--------+
Type=1
此选项可被用于选项间,它可以被複製,引入或在分段时删除。
安全
此选项提供主机一种传送安全,compartmentation,处理限制和TCC参数的方法。此选项的格式如下:
类型=130 长度=11
安全(S域):16位
安全共分16级,8级保留。
00000000 00000000 - 未分类的
11110001 00110101 - 机密
01111000 10011010 - EFTO
10111100 01001101 - MMMM
01011110 00100110 - PROG
10101111 00010011 - 限制的
11010111 10001000 - 秘密
01101011 11000101 - 绝对机密
00110101 11100010 - 保留
10011010 11110001 - 保留
01001101 01111000 - 保留
00100100 10111101 - 保留
00010011 01011110 - 保留
10001001 10101111 - 保留
11000100 11010110 - 保留
11100010 01101011 - 保留
Compartments(C域):16位
全0代表传送的信息是非compartment的。
处理限制(H域):16位
控制值和版本标记是由字母和数字组成的,具体说明请参阅其它资料。
传输控制码(TCC域):24位
提供控制流量的方法。TCC的值为三字母词,在HQ DCA Code 530中有说明。在分段时必须複製它。
松源地址和记录路由
+--------+--------+--------+-----------------+
10000011 length pointer route data
+--------+--------+--------+-----------------+
Type=131
松源地址和记录路由(LSRR)可以由源地址提供路由信息,并记录路由信息。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。路由数据是由一系列地址组成的,每个地址是32位。如果指针大于长度,源路由为空(记录的路由满),路由要根据目的地址域进行。
如果目的地址已经达到,而指针未大于长度,源路由中的下一地址代替目的地址域中的地址,同时记录的路由地址代替则使用过的源地址,将指针加4。这一以记录的路由替换源路由的过程意味着选项(和IP头一起作为一个整体)数据报在网路中经过处理后保持一个固定长度。它称之为松源地址路由是因为网关或主机IP在达到路由的下一个地址时可以使用多箇中间网关。它在分段时必须複製。
紧源地址和记录路由
+--------+--------+--------+-----------------+
10001001 length pointer route data
+--------+--------+--------+-----------------+
Type=137
紧源地址和记录路由(SSRR)选项可以由源地址提供路由信息,并记录路由信息。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。路由数据是由一系列地址组成的,每个地址是32位。如果指针大于长度,源路由为空(记录的路由满),路由要根据目的地址域进行。
如果目的地址已经达到,而指针未大于长度,源路由中的下一地址代替目的地址域中的地址,同时记录的路由地址代替则使用过的源地址,将指针加4。这一以记录的路由替换源路由的过程意味着选项(和IP头一起作为一个整体)数据报在网路中经过处理后保持一个固定长度。它称之为紧源地址路由是因为网关或主机IP在达到路由的下一个地址时不可以使用中间网关。它在分段时必须複製。
记录路由
+--------+--------+--------+-----------------+
00000111 length pointer route data
+--------+--------+--------+-----------------+
Type=7
此选项提供了记录数据报路由的方法。这个选项以选项类型码开始。第二位是选项长度,第三位是一个指针,指向路由数据中下一个要被处理的源地址,它的最小值为4。记录的路由是由一系列IP位址构成的,每个IP位址是32位。如果指针大于长度,记录路由数据域已满。源主机必须为这一选项分配足够大的空间。空间分定后不会因为加入地址而增加。初始内容必须为0。
当IP模组处理数据报时,它检查是否有记录路由选项,如果有,它将自己的IP位址放入记录路由地址空间,指针值加4。如果地址空间已满,模组不会把自己的IP位址加入了;如果空间未满,可是不够整个地址加入,模组会认为源数据报出错并抛弃它。上面两种情况下,ICMP参数信息讯息会传送到源主机。在分段时不複製,而仅仅存在于第一个段。
流标记
10001000
00000010
流ID
类型=136 长度=4
此选项提供一种在不支持流的网路中传送16位SATNET流标记的方法。分段时必须複製。
Internet时间戳
01000100
长度
指针
oflw标记
IP位址
时间戳
......
类型=68
选项长度是在选项内的类型,长度,指针和溢出标记位元组的大小。指针是从选项开始到时间戳结束的位元组数加一。最小值为5。当指针大于长度时时间戳域满。溢出(oflw)(大小为4位)是IP模组号,这个模组因预设空间而不能注册时间戳。它的值分别为:
0 -- 仅有时间戳,保存于连续的32位字中;
1 -- 每个时间戳前都有注册单元的IP位址;
3 -- IP位址域是预先指定的,如果IP模组的地址和下一个指定的IP位址一致,则注册自己的时间戳。
时间戳是从UT午夜时间开始以毫秒计算的,如果时间不以毫秒计算,或不能提供以UT午夜为基準,那用什幺时间倒都可以,只要时间戳的最高位设定为1,表示这不是一个标準值就行了。源主机必须为这一选项分配足够大的空间。空间分定后不会因为加入地址而增加。初值必须为零或IP位址零这样的偶对。如果空间已满,模组在传送数据报时不加入时间戳,但溢出计数仍然加一。
如果剩余的空间不能使完全的时间戳加入,或溢出计数溢出,源数据报出错并被抛弃。ICMP参数信息讯息会传送到源主机。此选项在分段时不複製,仅在第一段出现。
填充:变长
报头域填充用于保证报头是32位的倍数。填充值为0。
讨论
协定的实现必须健壮,每个实现都要保证与其它人的实现兼容。通常一个实现在传送时应该遵守比较保守的策略,在接收时大可不必保守。也就是说,传送构成良好的包,接收自己能够解释的包(有些错误也是将就着了)。
基本的Interent服务是面向数据报的,在网关处可以提供以数据报的分段和在目的主机的重组服务。当然,在一个网路内或在因遵守私下的协定而在一个网路的网关间进行分段和重组也是可以的,因为这对IP协定和高层协定是透明的。这种透明的分段称为基于网路的分段,这里不做讨论。IP位址是在主机一级区别源地址和目的地址的。
定址
为了可以对网路大小进行灵活的控制,IP位址提供了几类地址,一类是可以容纳比较多主机的网路,一种容纳的主机数就比较少,我们大家听说过的什幺A类,B类地址,C类地址就是为了用于不同规模的网路而提出的。下面是一些地址格式:
最高位
格式
类
0
7位网路用,24位主机用
a
10
14位网路用,16位主机用
b
110
21位网路用,8位主机用
c
111
扩充地址模式
如果网路域为零意味着本网路,这种方式仅在于特定的ICMP讯息中使用;扩展的地址模型未定义。
由本地网路指定的本地地址必须考虑到单个的主机可以作为不同的网路主机使用。也就是说,必须在网路主机地址和网路主机接口之间进行映射,这种接口允许几个IP位址对应一个接口。同时还应该考虑到一台主机有多个处理接口,对于从不同接收收到的信息应该看做是来自同一个IP位址的。
分段和重组
Internet标记域(ID)和源地址,目的地址和协定域一起用于确认数据报分段和重组。如果数据报不是最后一段,则设定多段标记位(MF)。段偏移域标记段位置,它是相对于未分段时的数据报而言的。段以8个位元组为单位,这样的分段策略使未分段的数据报有全零的分段信息(MF = 0,段偏移= 0)。如果进行分段,边界必须是8个位元组的倍数。这种格式允许2的13次方(8192)个8位元组段,一个数据报的最大长度刚好和长度域标明的数据64K一致。在分段时,有些选项被複製,有些则不。
每个IP模组必须能够不分段地传送68位元组的数据报。这因为IP包头会达到60位元组,而最小数据段长为8,68=60+8;而它也必须能够接收576位元组的数据,不论这数据是未分段的还是分段的。
会被分段影响的域包括:
⑴ 选项域
⑵ 多段标记
⑶ 段偏移
⑷ Internet包头长度域
⑸ 总长度域
⑹ 包头校验码
如果设定了不分段标记(DF),则不可进行分段,即使数据报会因此而被抛弃。如果接收主机不能进行重组时则需要设定此位。我们在进行无盘引导时,则需要设定这一位。下面通过例子说明这一过程。其中#代表不等于,X到Y指的是包括X,而不包括Y的所有数据。
能够在下一个网路传送的最大数据报称为最大传输单元(MTU)。如果数据报的长度小于等于MTU,进行下一步;否则分为两段,第一段的大小等于MTU,第二段就是剩余的长度,将第一段传送,如果第二段仍然大于MTU,则重複分段过程,直到可以传送为止。下面我们给出一个定义:
FO - 段偏移
IHL - Internet包头长度
DF - 不分段标记
MF - 多段标记
TL - 总长度
OFO - 原段偏移
OIHL - 原Internet包头长度
OMF - 原多段标记
OTL - 原总长度
NFB - 段数
MTU - 最大传输单元
过程:
IF TL = MTU THEN 将此数据报提交给下一处理阶段
ELSE IF DF = 1 THEN 抛弃数据报
ELSE 产生第一段:
⑴ 複製源internet包头;
⑵ OIHL - IHL;OTL - TL;OFO - FO;OMF - MF;
⑶ NFB - (MTU-IHL4)8;
⑷ 附加第一个NFB8个数据位元组;
⑸ 校正包头:MF - 1;TL - (IHL4)+(NFB8);重新计算校验码;
⑹ 提交数据段到下一个数据报处理阶段;
如果要产生第二个段:
⑺ 有选择地複製internet头;
⑻ 附加剩余数据;
⑼ 校正包头:IHL - (((OIHL4)-(未複製的选项长度))+3)4;
TL - OTL - NFB8 - (OIHL-IHL)4);
FO - OFO + NFB;MF - OMF;重新计算校验码;
⑽ 将此段提交分段检测;结束。
上例中除了最后一段外,其它段都达到了MTU的大小,各种实现不同,只要能够得到的段小于等于MTU就可以了。
重组过程例子
对于每个数据报,缓冲区标记是由源地址,目的地址,协定和标记域一起确认的。如果数据报未分段,那就不需要进行重组,处理进行下一阶段。重组需要的数据结构有:数据缓冲区,包头缓冲区,段块位表,数据长度域和计数器。段中的数据根据段偏移和长度放在相应位置,段块标準表中的相应位根据接收的段块被设定。
如果是第一段(段偏移为0),将包头放于包头缓冲区;如果是最后一段(多段标记为0),计算数据总长度。如果接收完了整个数据报,进行下一处理阶段;如果没有接收完,设定计数器值为当前计数器和此段中保存的生存时间之间比较在的一个,重组函式放弃控制权。如果逾时释放所有缓冲区。计数器的初值是重组等待时间的下限。因为如果到达段中的生存时间大于计数器当前值等待时间增加,如果小于则不会减少。计数器的最大时间可以达到最大生存时间(大约为4.25分)。如果设定为15秒可能比较好,当然随着实践,这个值可能会有更改。这个值的选择和缓冲区的大小和传输媒介有关,传输速度乘于计数器值等于缓冲区大小。
定义:
FO - 段偏移
IHL - Internet包头长度
MF - 多段标记
TTL - 生存时间
NFB - 段块数
TL - 总长度
TDL - 总数据长度
BUFID - 缓冲区标记
RCVBT - 段接收位表
TLB - 计数器下限
过程:
如果到达的数据段中的数据有部分或全部相同,上面的过程会使用数据的最新版本。
标记
标记是为了对特定数据报的段提供唯一的标记。如果数据报拥有相同的源地址,目的地址,协定和标记,IP模组会把他们认定是同一数据报。选择的任何由传送方担任。传送协定模组需要保持一个标记表,每个目的地址保持一个表项。然而,因此标记域允许65536个不同的值,有些主机能够不考虑目的地仍然可以达到标记唯一的目的。高层协定也可以使用标记。
服务类型
服务类型(TOS)是网路服务质量的选择。服务类型是由抽象参数确定的优先权,时延,吞吐量和可靠性的结合物。这些参数和一些实际对应的网路服务对应。对于什幺是时延,什幺是吞吐量之类的定义这里就不多说了。
生存时间
生存时间由传送者设定,是数据报在网路中最长的生存时间,如果逾时会抛弃数据报。网路中每个结点都会处理存在于包头中的生存时间。此域的最少减少量为1,单位是秒。因此,最长的生存时间为255秒。每个处理模组必须对TTL减1,即使所使用的时间少于一秒也是如此。高层可靠连线协定是基于原重複数据报将不会在特定时间后到达,TTL是为了满足这样假设而存在。
选项
选项中数据报中是可选的,但在实现中必须有的。有没有选项是传送者说了算,每个IP模组必须能够分析每个选项,每个选项域有多个选项。选项可能没有达到32位的边界,不足的以零填充以达到32位的倍数。
校验码
如果包头髮生改变必须重新计算包头校验码,校验码可以在一定程度上杜绝传输错误。有些应用程式允许数据报中的数据出错,如果IP强调数据正确性,类似的应用程式也就用不成了。
错误
IP协定错误可由ICMP协定报告。
接口
接口的描述是功能性的,这个描述的具体实现机制会因为作业系统的不同而不同。不同的IP实现会有不同的用户接口。但是起码的子集是所有实现必须支持的。本节将描述这个基本子集。IP协定有上下有两个接口,一个是面向本地网路的,另一个是面向高层协定或应用程式的,我们称后一个接口为用户。虽然IP协定是数据报协定,所以用于保存状态的资源(记忆体)很少。
下面是一个高层接口範例:
SEND (src,dst,prot,TOS,TTL,BufPTR,len,Id,DF,opt = result)
上式中:
src = 源地址
dst = 目的地址
prot = 协定
TOS = 服务类型
TTL = 生存时间
BufPTR = 缓冲区指针
len = 缓冲区长度
Id = 标记
DF = 不分段
opt = 选项数据
result = 回响,回响分为OK和Error两种;
OK = 传送成功
Error = 参数错误或本地网路错误
优先权和安全性参数在选项中传送。
RECV (BufPTR,prot,= result,src,dst,TOS,len,opt)
上式中:
BufPTR = 缓冲区指针
prot = 协定
result = 回响,回响分为OK和Error两种;
OK = 传送成功
Error = 参数错误
len = 缓冲区长度
src = 源地址
dst = 目标地址
TOS = 服务类型
opt = 选项数据
当用户传送数据报时,他执行SEND命令。IP模组在收到调用时,检查传送来的参数并準备传送数据。如果参数合法而且本地网路正常接收数据,返回成功。如果参数不合法,或本地网路未接收数据,返回不成功。在未成功时会返回报告,报告内容会因实现不同而不同。
当数据报到达IP模组时,要幺有一个RECV调用要幺没有。如果有这个调用会传送信息给用户;如果没有,通知用户信息到达。如果没有找到应该通知的用户,返回ICMP错误,抛弃数据。通知用户可以通过假中断或类似的机制,这视作业系统不同而不同。源地址包括在传送调用中,IP模组可以检查源地址是否是一个合法地址。
转载请注明出处海之美文 » Internet协定