《计算机网络 》课件第5章_第1页
《计算机网络 》课件第5章_第2页
《计算机网络 》课件第5章_第3页
《计算机网络 》课件第5章_第4页
《计算机网络 》课件第5章_第5页
已阅读5页,还剩126页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章TCP/IP协议5.1引言

5.2网络接口

5.3网际层

5.4传送层

5.5应用层

5.1引

言

从网络体系结构来看,TCP/IP是OSI参考模型七层结构的简化,它只分为四层:应用层、传送层、网际层和网络接口层,参见图5.1。其中网络接口层提供了与物理网络(这些物理网络对应于OSI参考模型的物理层和数据链路层)接口的方法和规范;网际层与OSI参考模型的网络层相对应;传送层与OSI参考模型的传输层相对应;应用层包含了OSI参考模型的会话层、表示层和应用层功能,规定了与特定的网络应用相关的应用协议,如远程登录、文件传送及电子邮件等。

图5.1

TCP/IP协议集及分层结构

5.2网

络

接

口

TCP/IP协议不包含具体的物理层和数据链路层协议,只规定了TCP/IP协议与各种物理网络之间的网络接口。这些物理网络可以是广域网,如ARPANET、MILNET和X.25公用数据网,也可以是局域网,如Ethernet、Token-Ring、FDDI等IEEE定义的各种标准局域网。网络接口定义了一种接口规范,任何物理网络只要按照这个接口规范开发网络接口驱动程序,就能够与TCP/IP协议集成起来。网际层提供了专门的ARP/RARP协议来解决IP地址与网络物理地址的转换问题。

5.3网

际

层

5.3.1IP协议

1.IP地址在互连网体系结构中,参与通信的各个节点(包括端节点和中间节点)都要预先分配一个惟一的逻辑地址作为标识符,并且使用该地址进行一切通信活动,该地址称为IP地址。在IPv4中,IP地址为32位,由网络标识(Net)和主机标识(Host)两部分组成,可标识一个互连网络中任何一个网络中的任何节点。从节点标识的角度,IP协议将节点统称为主机(Host)。

1)IP地址的格式与分类

IP地址有二进制格式和十进制格式两种。十进制格式是由二进制翻译过去的,用十进制表示是为了便于使用和掌握。

二进制的IP地址共有32位,例如10000011011010110000001100011000。每八位组用一个十进制数表示,并用“.”进行分隔,上例就变为4。IP地址分为A、B、C、D、E五类。A、B、C类地址的一般格式为

图5.2IP地址格式

在IP地址中,有一些特殊的规定:●当32位的IP地址为全0时,表示该主机地址,但只允许在主机启动时使用,以后不允许再使用。●当32位的IP地址为全1时,表示该网的广播地址,一般用于初始化。●当32位的IP地址为时,表示是回送地址,目的地址为回送地址的数据报将被IP协议立即送回,主要用于网络测试目的。●当主机地址为全0时表示该类网本身。●

当主机地址为全1时表示该类网内广播地址。

在A类地址中,M字段占1位,即第0位为“0”,表示是A类地址,第1~7位表示网络地址,第8~31位表示主机地址。它所能表示的地址范围为~55,可以表示27-2=126个A类网,每个A类网最多可以有224-2=16777214个主机地址。A类地址通常用于超大型网络。

在B类地址中,M字段占2位,即第0、1位为“10”,表示是B类地址,第2~15位表示网络地址,第16~31位表示主机地址。它所能表示的地址范围为~55,可以表示214-1=16383个B类网,每个B类网最多可以有216-2=65534个主机地址。B类地址通常用于大型网络。

在C类地址中,M字段占3位,即第0、1、2位为“110”,表示是C类地址,第3~23位表示网络地址,第24~31位表示主机地址。它所能表示的地址范围为~55,可以表示221-1=2097151个C类网,每个C类网最多可以有28-2=254个主机地址。C类地址通常用于校园网或企业网。

D类地址是多播地址,它所能表示的地址范围为~55。在Internet中,允许有两类广播组:临时地址广播组和永久地址广播组。临时地址广播组是临时建立的广播组,必须事先创建;永久地址广播组则永久性存在,不需要事先创建,主要用于特殊目的,例如:

●表示本网络所有的主机和路由器;●表示本网络所有的路由器;●表示本网络所有的OSPF路由器;●表示本网络指定的OSPF路由器;●

表示本网络所有的RIP路由器。

E类地址是实验地址,它所能表示的地址范围为~55。在Internet中,IP地址不是任意分配的,必须由国际组织统一分配,以保持IP地址的惟一性,避免IP地址冲突。有关的国际组织机构是:

(1)分配A类(最高一级)IP地址的国际组织是国际网络信息中心(NetworkInformationCenter,NIC)。它负责分配A类IP地址,授权分配B类IP地址的组织——自治区系统。它有权重新刷新IP地址。

(2)分配B类IP地址的国际组织是InterNIC、APNIC和ENIC。这三个自治区系统组织的分工是:ENIC负责欧洲地址的分配工作;InterNIC负责北美地区;而APNIC负责亚太地区,设在日本东京大学。我国属于APNIC,由它来分配B类地址。例如,APNIC给中国CERNET分配了10个B类地址。

(3)分配C类IP地址的组织是国家或地区网络的NIC。例如,CERNET的NIC设在清华大学,CERNET各地区的网管中心需向CERNETNIC申请分配C类地址。

RFC1597规定下列地址可以用于Intranet内部地址:●A类地址:~55。●B类地址:~55。●

C类地址:~55。

2)IP地址的屏蔽码屏蔽码是IP地址的特殊标注码,也是用32位表示的,用于指明一个IP网络中是否有子网。

(1)无子网的表示法。如果一个IP网络无子网,则屏蔽码中的网络号字段各位全为1,主机号字段各位全为0。例如:

IP地址:屏蔽码:IP地址标识了202.114.80号网络中的5号主机,并且202.114.80号网络中没有设置子网。在无子网的情况下可以省略屏蔽码。

(2)有子网的表示法。如果一个IP网络有子网,则子网号用主机号字段的前几位来表示,所占的位数与子网的数量相对应,如1位可表示2个子网;2位可表示4个子网;3位可表示8个子网……

并且屏蔽码和IP地址必须成对出现,屏蔽码中的网络号字段各位全为1,主机号字段中的子网号各位也全为1,而主机号各位全为0。例如:

IP地址:屏蔽码:

24(224为二进制的“11100000”)在有子网的IP网络中,如果两个主机属于同一个子网,则它们之间可以直接进行信息交换,而不需要路由器;如果两个主机不在同一个子网,即子网号不同,则它们之间就要通过路由器进行信息交换。例如:

屏蔽码:24 IP地址:

主机号字段为00000001

6主机号字段为00010000这两个IP地址的主机号字段前三位均为000,说明它们属于同一子网,可不通过路由器来直接交换信息。又如:屏蔽码:24

IP地址:

主机号字段为00000001 30

主机号字段为10000010这两个IP地址的主机号字段前三位不同(000/100),说明它们属于不同子网,必须通过路由器来交换信息。它们在各自子网上的主机号分别为1和3。

2.IP协议

IP是TCP/IP协议集的核心协议之一,它提供了无连接的数据报传输和互连网络的路由服务。IP的基本任务是通过互连网络传输数据报,各个IP数据报是独立传输的。主机上的IP层基于数据链路层向传输层提供传输服务,IP从源传输层实体获取数据,再通过物理网络传送给目的主机的IP层。IP不保证传送的可靠性,在主机资源不足的情况下,它可能丢弃某些数据报,同时IP也不检查被数据链路层丢弃的报文。

1)IP数据报格式IP数据报由报头和报文数据两部分组成,参见图5.3。

图5.3IP数据报格式

IP数据报中各个字段的含义简要说明如下:●版本:4位,IP协议的版本号,IPv4版本取值为4。●IP报头长度(IHL):4位,以32位为单位表示的报头长度。●服务类型(ToS):8位,用于规定优先级、传送延迟、吞吐量和可靠性等参数。●报文长度:16位,以字节为单位表示的报文总长度(包括报头和数据两部分)。●标识(ID):16位,数据报的惟一标识,用于数据报的分段与重装。

●

标志(Flag):3位,数据报是否分段的标志。

●分段偏移:13位,以64位为单位表示的分段偏移。●生存期(TTL):8位,允许数据报在网间传输的存活时间。●上层协议号:8位,指出发送数据报的上层协议。●报头检查和:16位,仅用于对报头的正确性检查。●源IP地址:32位,发送数据报的源主机IP地址。●目的IP地址:32位,接收数据报的目的主机IP地址。●任选项:可变长度,提供任选的服务,如时间戳、错误报告及特殊路由等。●

填充:可变长度,保证IP报头以32位为边界对齐。

2)数据报的分段与重装

(1)数据报分段。在各种物理网络中,如Ethernet、Token-Ring等都有最大帧长限制。为了使较大的数据报能以适当的大小在物理网络上传输,IP协议首先要根据物理网络所允许的最大帧长对上层协议提交的数据报进行长度检查,必要时把数据报分成若干个段发送。

在数据报分段时,每个段都要加上IP报头,形成IP数据报。与数据报分段相关的字段有:

●标识(ID):数据报的惟一标识。被分段传送的IP数据报设有相同的标识。●报文长度:对每一个被分段的IP数据报都要重新计算其报文长度。●分段偏移:每一个被分段的IP数据报要表明它在原始数据报中的位置,用64位的倍数来表示。●

标志(Flag):如果是无分段的IP数据报,该标志为

0;如果是有分段的IP数据报,除了最后一个分段IP数据报将该标志置为0外,其他的都将该标志置为1。

(2)数据报重装。在互连网络中,被分段的各个IP数据报进行独立的传输,它们在经过中间路由器转发时可能选择不同的路由。这样,到达目的主机的IP数据报顺序与发送的顺序可能不一致。因此,目的主机上的IP协议必须根据IP数据报中相关字段(标识、长度、偏移及标志等)将分段的各个IP数据报重新组装成完整的原始数据报,然后再提交上层协议。

3)路由选择路由选择是IP协议最重要的功能之一。在IP协议中,采用的是源路由选择策略,由发送端指定发送路由。因此,互连网络中的每个主机和路由器(TCP/IP中称它为网关)都保存一个路由表,给出互连网络中各个网络所对应的路由器地址以及该路由器当前的忙闲度。在路由表中,网络地址和路由器地址都是用IP地址表示的,路由器地址指向IP数据报应送往的下一个路由器。忙闲度是用这个路由器所发送的数据报数量来衡量的,当一个网络地址有多个路由时,IP协议总是选择忙闲度值最小的路由。为了提高路由查找速度,路由表通常采用散列表(Hash)结构。

(1)数据报发送。当发送节点IP协议收到上层协议要求发送的数据报时,如果上层协议已指定了发送路由,则按指定的路由发送数据报;如果上层协议未指定发送路由,IP协议则以IP数据报中目的IP地址为关键字来搜索路由表中的路由。如果未找到任何路由,则说明目的不可达,向上层协议报告错误信息。对于已确定的发送路由,无论是由上层协议指定的,还是从路由表中找到的,如果该路由是直接可达的(源主机和目的地址在同一网络中),则将IP数据报中的目的IP地址通告给网络接口程序;如果该路由不是直接可达的,则将路由表中对应的路由器IP地址通告给网络接口程序。对于多路由场合,要通告忙闲度最小的路由器地址。

(2)数据报接收。当接收节点IP协议收到由网络接口程序传来的数据报时,分两种情况处理:

①

当该节点为主机节点时,则比较IP数据报中的目的IP地址与本机IP地址是否相匹配,若匹配,则把IP数据报递交给对应的上层协议;否则丢弃该数据报。

②当该节点为路由器节点时,需要转发该数据报,即用该数据报的目的IP地址从路由表中查找转发路由。如果找到路由,则按该路由转发数据报,其过程如前所述;否则,向发送该数据报的源主机发送ICMP报文,报告目的不可达。

如果该节点是一个被配置成具有路由选择功能的主机,则先执行①。若不匹配,则是待转发的数据报,不能丢弃掉,而是转入执行②。

4)IP数据报选项

(1)源路由。源路由是指传送数据报的路由是由源主机指定,而不是由IP协议通过路由表确定的。源路由选项可以用于测试某特定网络的吞吐率,可以使数据报绕开出错的网络等,是一个有用的选项。源路由选项有两类:一是限制源路由,另一是自由源路由。限制源路由要给出一条完整的路径,并规定数据报要经过路径上的每一个路由器,并且经过路由器的顺序也不可改变。自由源路由给出的不是完整路径,而是精简路径,必要时要由IP协议为其补充路径。

(2)记录路由。记录路由是指记录下数据报从源主机到目的主机所经过路径上各个路由器的IP地址。这种功能由记录路由选项来完成。记录地址的区域大小是由源主机预先分配并初始化的,如果预先分配的区域不足以记录下全部路径,则IP协议将放弃记录余下地址的尝试。此外,只有在源主机和目的主机双方都同意的情况下,记录路由选项中的各个IP地址才能得到处理,该选项才是有效的。

(3)时戳。时戳(TimeStamp)是指数据报每经过一个路由器时所记录下的当时时间。这个功能由时戳选项来完成。通过时戳可以获得IP数据报在互连网络中的时域参数,可用于分析网络的吞吐量、拥塞情况、负载情况等。时戳中的时间采用环球时间(UniversalTime)表示,以千分之一秒为单位。由于各个路由器中的时钟并不严格同步,所以时戳只是一种大致的参考值。此外,在选择时戳选项时,可以设置成时间和地址同时记录,缺省为只记录时间。

5.3.2ARP协议和RARP协议

1.ARP协议当一个主机向另一个主机发送报文时,只有知道与对方IP地址相对应的物理地址后才能在物理网络上进行传输。这种地址解析服务是由ARP协议提供的。

应当注意的是,ARP只用于解析对方的物理地址,而不是解析本机的物理地址。

图5.4ARP/RARP报文格式

ARP是采用一种称为动态联编(DynamicBinding)的方式来解析对方物理地址的。具体地说,发送主机向网络中广播一个ARP请求报文,报文中包含有目的主机的IP地址,以请求与该IP地址相符合的目的主机物理地址。网络上所有的主机都能接收到这个ARP请求报文,但只有本机的IP地址与报文中目的IP地址相符合的主机才发送一个ARP响应报文,报告本机的物理地址。这样,发送主机就得到目的主机的物理地址了。ARP/RARP的报文格式如图5.4所示。

在ARP/RARP报文格式中:●物理网络类型字段为2个字节,表示发送方主机的物理网络类型。其中,“1”代表以太网。●协议类型字段为2个字节,表示发送方使用ARP获取物理地址的高层协议类型。其中,“0x0800”代表IP协议。

●

物理地址长度字段为1个字节,用于规定物理地址字段的长度。

通常,物理地址字段占6个字节(48位地址)。

●IP地址长度字段为1个字节,用于规定IP地址字段的长度。通常,IP地址字段占4个字节(IPv4版本)。●操作字段为2个字节,表示报文类型。其中:1——ARP请求报文;2——ARP响应报文;3——RARP请求报文;4——RARP响应报文。

●发送方物理地址字段为6个字节,用于存放发送方的物理地址。●发送方IP地址字段为4个字节,用于存放发送方的IP地址。

●

目的方物理地址字段为6个字节,用于存放目的方的物理地址。对于ARP请求报文,该字段为空。

●目的方IP地址字段为4个字节,用于存放目的方的IP地址。发送方在发送ARP请求报文时,要填写除目的方物理地址字段外的其他字段。目的方通过发送ARP响应报文报告自己的物理地址,这时报文中的发送方和目的方字段要做相应的交换。在单一网络中,发送方的ARP请求报文可直接发送给网络中任何一个主机。在互连网络中,发送给另一网络主机的数据报要由路由器转发。

因此,发送方必须首先获取路由器节点的物理地址,即发送ARP请求报文给该路由器节点。

2.RARP协议如果一个主机初始化后只有自己的物理地址而没有IP地址,则可以通过RARP协议发送广播式请求报文来请求自己的IP地址,而RARP服务器负责对该请求作出应答。这样,无IP地址的主机可以通过RARP协议来获取自己的IP地址。RARP协议主要用于无盘工作站来获取自己的IP地址。RARP的报文格式与ARP的相同。当发送方以广播方式发送RARP请求报文时,在发送方物理地址字段和目的方物理地址字段上都填入本机物理地址。RARP服务器主机接收到该请求报文后,便给发送方回送一个RARP响应报文,从目的方IP地址字段中带回发送方的IP地址。

5.3.3ICMP协议

1.ICMP报文格式每个ICMP报文都是作为IP数据报的数据部分在网际间传送的。ICMP报文格式如图5.5所示。其中,Type字段为1个字节,指出ICMP报文的类型,参见表5.1;Code字段也是1个字节,提供关于报文类型的进一步信息;Checksum字段共两个字节,提供了整个ICMP报文的校验和,其校验和算法与IP报头的校验和算法相同;其他信息字段为4个字节,一般不使用(为全0)。

图5.5ICMP报文格式表5.1ICMP报文类型

2.ICMP差错报文

在ICMP差错报文中,有目的不可达报文、超时报文和参数出错报文等。

1)目的不可达报文路由器的主要功能是为数据报选择路由并转发数据报。当从路由表上查不出与IP数据报目的IP地址对应的路由时,则会发生目的不可达的错误。这时,路由器要向源主机发送目的不可达的ICMP报文。目的不可达ICMP报文类型(Type)为3,并进一步细分成13种子类,用代码(Code)来标识,其他信息字段未用,为全

0。

2)超时报文数据报每经过一个路由器时,其生存期都要根据其滞留时间而递减。如果在一个路由器上数据报的生存期递减为0,该路由器则会丢弃这个数据报,并向源主机发送Type=11、Code=0的ICMP报文,报告该数据报生存期超时。当目的主机在对数据报进行重装的过程中发生重装超时时,将丢弃现已收到的各个分段数据报,并在第1个分段数据报到达后向源主机节点发送Type=11、Code=1的ICMP报文。

3)参数出错报文

当路由器或目的主机在对收到的IP数据报进行处理时,如果发现在IP报头参数中含有无法继续完成报文处理的错误,则将该数据报丢弃,并向源主机发送Type=12、Code=0的ICMP报文,并且在ICMP报文的其他信息字段中用1个字节作为指针来指出差错在数据报中的位置(以字节为单位)。

3.ICMP控制报文

ICMP控制报文主要用于拥塞控制和路由控制,它可分为报源抑制报文和重定向报文。

1)报源抑制报文

当路由器的数据报输入速度超过路由器的转发速度时,则可能发生拥塞现象。拥塞控制的概念与流量控制有所不同。流量控制主要是解决端点对端点的传输速率匹配问题,属于局部控制;而拥塞控制带有全局性质。因为拥塞可能影响到整个网络的数据传输,故需要各个节点共同参与协同解决。

拥塞控制的方法有很多,而TCP/IP采用的是报源抑制技术,即抑制源主机节点发送数据报的速率。具体的过程如下:

(1)当路由器节点由于缺乏缓冲区空间而无法接收数据报时,或者当目的主机节点由于数据报的到达速度太快而无法继续处理时,它们都将丢弃这些输入的数据报,并向源主机节点发送Type=4、Code=0的报源抑制ICMP报文。

(2)当源主机节点收到报源抑制ICMP报文后,相应地降低其报文发送速度,直到不再收到报源抑制ICMP报文为止。然后,源主机节点又逐渐增加它的报文发送速度,直到再一次出现报源抑制ICMP报文为止。

对于路由器和目的主机节点而言,理想的报源抑制报文发送时间是在当前输入数据报占用的缓冲区容量接近系统限制时。这样可以避免由于输入数据报占用的缓冲区容量超过系统限制而被丢弃,从而可以减少网络重发的数据量。

2)重定向报文重定向功能提供了一种路由优化控制机制,使源主机能以动态方式寻址最短路径。通常,ICMP重定向报文只能在同一网络中的源主机与路由器之间使用。

当路由器R1从处于同一子网的主机H1收到一个需转发的IP数据报时,R1将检查自身的路由表信息,并假设它选定了下一个路由器R2继续转发该数据报。如果这时R1判别确认R2和H1也处于同一子网,R1就向H1发送重定向ICMP报文,通知H1将数据报直接发给R2将会是一条较短的传送路径。

重定向报文的类型(Type)为5,分成四个子类:●Code=0:网络重定向数据报。●Code=1:主机重定向数据报。●Code=2:服务类型和网络重定向数据报。

●

Code=3:服务类型和主机重定向数据报。

4.ICMP请求/应答报文

1)回送请求与响应报文回送请求与响应报文主要用于测试网络目的节点的可达性。源节点使用ICMP回送请求报文向某一特定的目的主机发送请求,目的节点收到请求后必须使用ICMP回送响应报文来响应对方。在许多TCP/IP实现中所提供的用户命令Ping,便是利用这种ICMP回送请求/响应报文来测试目的可达性的。

2)时戳请求与响应报文

时戳请求与响应报文主要用于估算源和目的节点间的报文往返时间。在报文中使用了三个时戳字段:初始时戳字段是源节点发送时戳请求报文的时间;接收时戳字段是目的节点接收到时戳请求报文的时间;发送时戳字段是目的节点发送时戳响应报文的时间。源节点首先发送时戳请求报文,然后等待目的节点返回其响应报文,并根据这三个时戳字段来估算两个节点间的报文往返时间。

3)屏蔽码请求与响应报文屏蔽码请求与响应报文主要用于源节点获取所在网络的IP地址屏蔽码信息。源节点在发送请求报文时,将IP报头中的源和目的IP地址字段的网络号部分设为0。这样,网络上的目的节点(通常为路由器)接收到该请求后,填写好网络的屏蔽码向源节点回送响应报文。

5.4传

送

层

5.4.1TCP协议

1.TCP报文格式

TCP的报文格式如图5.6所示,TCP的报头说明参见表5.2。

图5.6TCP的报文格式

表5.2TCP的报头说明

2.序号在每条TCP通信连接上传送的每个数据字节都有一个与之相对应的序号,这是TCP协议实体的重要概念之一。以字节为单位递增的TCP序号主要用于数据排序、重复检测、差错处理及流量控制窗口等TCP协议机制,从而保证了传输任何数据字节都是可靠的。

TCP报头中的序号字段为4个字节,表示的序号空间范围为0~232?1,因此发送字节的序号编码算法都要以232为模。

TCP序号不仅用于保证数据传送的可靠性,还用于保证建立连接(SYN请求)和拆除连接(FIN请求)的可靠性,每个SYN和FIN段都要占一个单位的序号空间。

3.建立连接在TCP协议中,建立连接要通过“三次握手”机制来完成。这种“三次握手”机制既可以由一方TCP发起同步握手过程而由另一方TCP响应该同步过程,也可以由通信双方同时发起连接的同步握手。下面是最常见的三次握手过程:

(1)TCP实体A向TCP实体B发送一个同步TCP段请求建立连接。例如,该TCP段简要表示成〈SEQ=100〉〈CTL=SYN〉,其中“〈

〉”中的内容为TCP段中的字段。

(2)TCP实体B将确认TCP实体A的请求,并同时向TCP实体A发出同步请求。例如,该TCP段为〈SEQ=300〉〈ACK=101〉〈CTL=SYN,ACK〉。

(3)TCP实体A将确认TCP实体B的请求,即向TCP实体B发送确认TCP段。例如,该TCP段为〈SEQ=101〉〈ACK=301〉〈CTL=ACK〉。

(4)TCP实体A在已建立的连接上开始传输TCP数据段。例如,该TCP段为〈SEQ=101〉〈ACK=301〉〈CTL=ACK〉〈DATA〉。可以将上述过程用图5.7来表示。

图5.7建立连接的三次握手过程

4.关闭连接

TCP连接是一个全双工的数据通道,一个连接的关闭必须由通信双方共同完成。当通信的一方没有数据需要发送给对方时,可以使用FIN段向对方发送关闭连接请求。这时,它虽然不再发送数据,但并不排斥在这个连接上继续接收数据。只有当通信的对方也递交了关闭连接请求后,这个TCP连接才会完全关闭。在关闭连接时,既可以由一方发起而另一方响应,也可以双方同时发起。无论怎样,收到关闭连接请求的一方必须使用ACK段给予确认。实际上,TCP连接的关闭过程也是一个三次握手的过程,参见图5.8。

图5.8关闭连接的三次握手过程

5.流量控制一旦连接建立起来,通信双方就可以在该连接上传输数据了。在数据传输过程中,TCP协议提供一种基于动态窗口协议的流量控制机制,使接收方TCP实体能够根据自己当前的缓冲区容量来控制发送方TCP实体传送的数据量。流量控制实际上反映了信道容量和接收缓冲区容量的有效利用和动态分配问题。

TCP的窗口流控机制不同于X.25协议中窗口尺寸固定的滑动窗口协议,它采用的是一种称为信用证的动态窗口机制,主要是通过TCP段中的窗口字段和确认号字段来实现的。窗口对应于TCP实体能够接收的数据的序号空间,确认号表示TCP实体希望接收的下一个数据字节的序号。

在建立连接时,双方使用SYN段或ACK段中的窗口字段捎带着相互通告各自的窗口尺寸,即发放信用证。在数据传输过程中,发送方按接收方通告的窗口尺寸和序号发送一定的数据量。接收方可根据接收缓冲区的使用状况动态地调整接收窗口,并在输出数据段或确认段时捎带着将新的窗口尺寸和起始序号(在确认号字段中指出)通告给发送方。

发送方将按新的起始序号和新的接收窗口尺寸来调整发送窗口,接收方也用新的起始序号和新的接收窗口大小来验证每一个输入数据段的可接收性。

6.PUSH操作

在一个TCP连接上进行正常数据传送的过程中,发送方会按规定的方式来分段和发送上层协议递交的数据。这样,对于递交了该数据的上层协议来说,在数据发送完成前,无法知道自身递交的数据是否在发送,发送是否由于本地或远程TCP实体正等待一个合适的窗口而被延迟。

PUSH(推进)数据机制可使得上层协议递交的数据能够迅速地从本地推向远地,而不受发送方当前发送窗口大小和发送方式所限制。

当发送方TCP收到上层协议的PUSH操作请求时,它将在流量控制允许的范围内进行数据分段并发送本地TCP缓冲区中所有的数据(TCP段头中的PSH标志位被置位)。当接收方TCP收到带有PSH标志的TCP数据段后,将迅速把这些数据段递交给上层协议并结束当前的接收命令。

发送方和接收方TCP实体对于连续的推进,并不保证各个推进边界,它们可以把若干推进单元合成一个推进单元来发送和接收。发送方TCP可以把常规数据和推进数据混合发送,但常规数据必须放在连续的推进数据之前。

7.紧急数据任何一个TCP输出段都可以携带紧急数据(UrgentData),以支持上层协议间紧急信息的快速传递。紧急数据必须位于数据段中所有数据的最前端,并在TCP段头中设置如下字段:

(1)设置URG标志位,表示当前数据段中携带有紧急数据。

(2)设置紧急指针。紧急指针与当前输出段的序号之和指出数据流中紧急数据最后一个字节。对于一个包含该字节的数据段来讲,其紧急数据长度从段序号开始一直延续到该字节为止。

8.TCP的多路复用机制

TCP协议的多路复用功能是通过端口机制提供的。端口是用于标识TCP连接的地址集,一个主机上的多个应用进程可以通过不同的端口同时使用TCP实体进行通信,从而达到多路复用的目的。不同主机上的TCP实体对端口地址的选取是独立的,只要保证本地端口地址的惟一性,就可以保证整个TCP连接的惟一性,即网间惟一的IP地址和本地惟一的端口地址将惟一地确定通信连接的一端。一个本地端口可以同时与多个远地端口建立通信连接。

9.TCP的优先级和安全性

TCP协议的优先级和安全性参数是由TCP实体的上层应用进程指定的,并通过IP协议的选项操作传送给远地通信实体。当远地TCP实体收到的安全性参数与在建立连接时所协商的参数值不相匹配时,或者收到的优先级参数低于协商值时,远地TCP将通过复位(RST)段复位已建立的连接。

TCP的安全性参数包括安全性、分隔域、用户组和处理限制。TCP的安全性和优先级是可选的功能,在一些TCP/IP的实现中并不支持优先级和安全性机制。

5.4.2UDP协议

1.UDP报文格式

UDP报文格式如图5.9所示。UDP报头各个字段意义如下:

·

源端口号为发送方的UDP端口号,支持UDP多路复用机制。它是一个可选的字段,不用时设为0。

·

目的端口号为接收方的UDP端口号,支持UDP多路复用机制。

·

报文长度为包括UDP报头和数据在内的报文长度,以字节为单位,最小值为8(报头长度)。

·

校验和的计算对象包括伪协议头、UDP报头和数据。校验和是可选字段,该字段为0时,表示发送方没有为该UDP数据报提供校验和。

图5.9UDP报文格式

2.UDP发送与接收

UDP数据报是通过IP协议发送和接收的。网间寻址由IP地址完成,进程间寻址则由UDP端口来实现。当发送数据时,UDP实体构造好一个UDP数据报后递交给IP协议,IP协议将整个

UDP数据报封装在IP数据报中,即加上IP报头,形成IP数据报发送到网上。在接收数据时,UDP实体首先判断接收到的数据报的目的端口是否与当前使用的某端口相匹配。如果匹配,则将数据报放入相应的接收队列;否则丢弃该数据报,并向源端发送一个“端口不可达”的ICMP报文。另外,当接收缓冲区已满时,即使是端口匹配的数据报也要丢弃。

UDP在计算校验和时要包括一个伪协议头,它不是UDP数据报的有效成分,主要用于验证UDP数据报是否正确地传送到目的地。伪协议头包含有源IP地址、目的IP地址、协议号及UDP报长等字段,有关信息来自于IP报头。

5.4.3传送层端口传送层的重要功能之一就是提供了面向进程的通信机制。因此,传送层协议必须提供某种方法来标识进程。TCP/UDP协议采用端口(Port)概念来标识通信进程。端口相当于OSI传输层的服务访问点(TSAP),它是一种抽象的软件结构,内部包含一些数据结构和I/O缓冲区。进程通过系统调用与某个或某些端口建立联系后,就可以使用相应的端口来传输数据了。

另一方面,端口又是进程访问传输服务的入口点,它提供了多个进程共享同一端口的多路复用功能。每个端口都使用惟一的端口号来标识,进程的通信主要表现在对端口的操作,通过端口号来获取相应的端口,然后对端口进行读写操作。这样,进程间的通信操作如同一般的I/O操作,以程序员熟悉的方式进行,简化了网络应用程序的编程。

TCP和UDP协议的端口号值均为16位,分别可以提供216个不同的端口。那么以什么样的规则来使用这些端口号才能在不同主机的进程间进行通信呢?这就是端口号的分配问题。

TCP和UDP协议将端口号分为两部分。一部分是保留端口,占全部端口号的一小部分,以全局方式分配。这些端口就是所谓的“周知”端口,由有关的权威机构分配,参见表5.3和表5.4。TCP和UDP都有自己的保留端口,而且都是从0开始顺序向上分配的。另一部分是自由端口,占全部端口号的绝大部分,以本地方式分配。当一个进程与另一个进程通信之前,该进程首先申请一个本地自由端口,然后再用已知的远地端口(周知端口或自由端口)与远地进程建立联系,并进行数据传输。

表5.3TCP周知端口分配表

表5.3TCP周知端口分配表

表5.4UDP周知端口分配表

5.5应

用

层

5.5.1DNS协议

1.域名空间与资源记录

1)域名空间域名空间采用树形结构来组织和管理,参见图5.10。它的顶部是根,根名为空标记,但在文本格式中写成“.”。树中的每一个节点都是域名空间的一部分,称为域名空间的域。域可以进一步划分成子域,每个域都有一个域名,定义它在域名空间中的位置。在DNS中,一个完整的域名是从该域向上直到根的所有标记组成的字符串,标记之间要用“.”分隔开,例如。

图5.10域名空间结构在一个域名中,每个子域名都有其特定的含义。从右到左,子域名分别表示国家或地区的顶级域名、组织类型、组织名称、分组织名称和计算机名称等。例如,在域名中,从右到左分别为:顶级域名cn表示中国,子域edu表示是教育机构,nwpu表示一个学校的名称,nisi表示该学校中一个院系或研究所的名称,www表示一个Web服务器。在域名中,大小写字母可以混合使用,但作为一般原则,最好全部使用小写字母。

顶级域名大致上可以分成两类:一类是组织性顶级域名;另一类是地理性顶级域名。组织性顶级域名表示Internet服务提供者(ISP)所属的组织类型,由RFC1691文档规定,表5.5为组织分类及它们所对应的组织性顶级域名。地理性顶级域名用两个字母的缩写形式来表示某个国家和地区,由ISO3166国际标准规定。表5.6为部分国家和地区的地理性顶级域名。

表5.5组织分类及它们所对应的组织性顶级域名

表5.6部分国家和地区的地理性顶级域名

2)资源记录每个主机对应于域名空间的一个节点,每个节点都有一个资源记录,与特定名字的资源信息相联系。当解析器查询一个域名时,它所获得的信息就是与该域名相关的资源记录。实际上,DNS的功能就是把域名映射到资源记录上。一条资源记录共有5项,其格式如下:

(1)Domain_name:资源记录所在的域名,它是查询的主关键字,并返回所有匹配的记录。

(2)Time_to_live:资源记录的生存期,用32位整数来表示资源记录存活时间。

(3)Type:资源记录类型,主要有下列记录类型:

·A——一个主机的IP地址,32位整数,这是最重要的记录类型;

·CNAME——规范名,指示一个别名的规范名;

·HINFO——主机描述,指示一个主机的CPU和OS类型;

·MX——邮件交换,指示一个愿意接收特定域电子邮件的域名;

·NS——名字服务器,指示一个可信的名字服务器;

·PTR——指针,指向另一个域名空间部分的指针;

·SOA——认证开始,指示一个可信区域(Zone)的开始。

(4)Class:信息类别,对于Internet信息,其值为IN;对于非Internet信息,则为其他值。

(5)Value:它可以是数字或字符串,其语义取决于资源记录类型。下面是一个有关资源记录的例子:

其中,86400为24小时的秒数。

2.域名服务器

(1)主名字服务器。每个区域至少有两个主名字服务器来保存所有的区域内信息。换句话说,每一个给定的区域数据至少可以从两个名字服务器上得到:一个是主名字服务器,它从磁盘文件中得到区域数据;另一个是备份名字服务器,它从主名字服务器那里得到数据。当主名字服务器发生故障或过载时,备份服务器可以接替其工作或分担部分负载。

(2)CachingOnly服务器。所有的名字服务器都是Caching服务器,这表明名字服务器将接收到的信息保存在Cache中,直到数据失效。此外,还有一种叫做CachingOnly的名字服务器,它将接收到的信息转发到其他名字服务器上,直到得到所需信息,但它自己不保存任何可靠的数据。

(3)转发服务器(ForwardingServer)。它建立一个“转发服务表”,记录它的上级名字服务器。当服务器收到地址映射请求时,首先在自己的Cache中查找。如果找不到,就请求送到上一级名字服务器中,而不是送给根服务器。该服务器按表中给出的顺序依次查询上一级名字服务器,直到查到该数据为止。如果查不到,则返回无此数据的出错信息。这种服务器的优点是主机可以建立非常大的数据Cache,从而减少从本机访问网络的次数。

3.解析器解析器(Resolver)是客户方,主要负责接收客户查询请求,向名字服务器发出查询,解释从名字服务器返回的应答信息,将信息提交给客户等。为了说明DNS的工作过程,现举一个例子。假设一个用户在域名为的计算机上发出查询“”的命令,则DNS的工作过程如下:

(1)解析器向本地名字服务器发出请求,查询nisi.的地址

(2)本地名字服务器向根cn名字服务器发出查询地址的请求;

(3)根名字服务器返回给本地名字服务器一个IP地址,指向名字服务器;

(4)本地名字服务器向edu名字服务器发出查询地址的请求;

(5)edu名字服务器返回给本地名字服务器一个IP地址,指向名字服务器;

(6)本地名字服务器向名字服务器发出查询地址请求;

(7)名字服务器将名字服务器的IP地址返回给本地名字服务器;

(8)本地名字服务器将该地址返回给解析器。

5.5.2HTTP协议

1.HTTP协议

HTTP协议是一种基于TCP的应用层协议,它采用客户/服务器模式,为Web客户与服务器之间的通信提供一种公共的方法。因此,HTTP服务器(即Web服务器)作为一种公共的网络服务,使用了一个周知的TCP端口号80。一个典型的HTTP事务处理包括如下的过程:

(1)客户与服务器之间建立HTTP连接;

(2)客户向服务器提出服务请求;

(3)服务器接受请求,并根据请求返回相应的文件作为应答;

(4)关闭客户与服务器之间的HTTP连接。

HTTP采用一次性连接策略,每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接策略主要考虑到Web服务器只能提供有限个连接,却要面对网络中成千上万个用户,为了避免一个连接处于长时间等待状态而降低服务器的执行效率,故HTTP服务器在一次传输完成后立即释放该连接。

HTTP是一种无状态的协议,服务器不保留与客户交易时的任何状态。这就大大减轻了服务器的存储负担,从而保持了较快的响应速度。表5.7HTTP规范定义的方法

1)请求块在HTTP中,客户的请求信息将按下列结构来组织:

description:methodURLHTTPversion

GeneralHeaderRequestHeaderEntityHeaderEntityBody

请求块中的各个字段是根据不同的请求方法任选的。

(1)描述行(description)定义了方法(method)、URL和HTTP协议版本号(version)。由于这时已建立了连接,故这里的URL不再包含协议名、服务器名和端口号。在七种HTTP方法中,最常用的方法是GET和POST。

①

GET:该方法的目的是取回由URL指定的资源,主要用于取回由一个超文本链所定义的对象。如果对象是文件,则GET取回的是文件内容;如果对象是程序或描述,则GET取回的是该程序执行的结果或该描述的输出;如果对象是数据库查询,则GET取回的是本次查询的结果。例如,如果用户在浏览器中选定一个超文本链,则浏览器将会用GET方法取回该网页。GET还可以用来指定一个数据库查询。例如:

GET/cgibin/wais.pl?key1+key2?

②

POST:当客户向服务器传送大量的数据,并要求服务器和公共网关接口(CommonGatewayInterface,CGI)程序做进一步处理时,要使用POST方法。例如,发送HTMLFORM内容,可让CGI程序进行处理。这时,FORM内容的URL编码将随请求一起发出。

(2)普通头(GeneralHeader)是对请求信息的一般说明。

(3)请求头(RequestHeader)给出了所传送数据对象的类型、长度、压缩方法以及编程语言等。服务器将根据请求头来解释和处理本次请求。例如,服务器将根据数据的类型和长度动态地分配空间,以存放FORM的内容。

(4)实体头(EntityHeader)提供了对实体的进一步描述。

(5)实体体(EntityBody)是客户进行POST请求时的FORM内容,提供给服务器的CGI程序做进一步处理。

2)应答块在HTTP中,服务器的应答信息将按下列结构来组织:

description:HTTPversionStatuscodeReasonphraseGeneralHeaderResponseHeaderEntityHeader

EntityBody同样,应答块中的各个字段也是根据不同的应答内容任选的。

(1)描述行(description)给出了HTTP协议的版本号(version)、状态码(Statuscode)和原因短语(Reasonphrase),主要说明了服务器是否成功地执行了客户请求及其原因。

(2)普通头(GeneralHeader)是对返回信息的一般说明。

(3)应答头(ResponseHeader)主要给出了服务器程序名,通知客户所请求的URL需要认证,所请求的资源需要经过多长时间才能使用等信息。

(4)实体头(EntityHeader)提供了有关本次所返回对象的信息。浏览器将根据这些信息来解释所返回的对象,主要包括实体信息的类型、长度、压缩方法、最后一次修改的时间及数据有效期等。

(5)实体体(EntityBody)是服务器应答对象的本身,可以是任何格式的超媒体文件。

2.Web服务器软件

Web服务器软件提供多媒体信息发布服务,这些信息按网页形式来组织和存储,而网页则采用HTML语言来编写。对于Web服务器软件来说,除了提供响应浏览器的请求发送网页的基本功能外,还提供了很多其他系统功能,如系统管理、安全管理、编程接口、网页编辑、用户跟踪等。目前,Web服务器软件有很多种,这些Web服务器软件一般都基于某种操作系统平台,并各具特色。例如,Microsoft公司的基于WindowsNT平台的IIS(InternetInformationServer)、Netscape公司的基于WindowsNT和UNIX平台的EnterpriseServer、SiliconGhaphics公司的基于UNIX平台的WebForeSeries以及基于Linux平台的共享软件Apache等。

3.Web客户软件通常把Web客户软件称为浏览器。它主要用于连接Web服务器,解释执行由HTML编写的文档,并将执行结果显示在客户机屏幕上。Web浏览器不仅提供了网页的查找和显示功能,而且还提供了网页管理功能以及其他客户工具。目前,浏览器软件有很多种,比较著名的浏览器有Microsoft公司的IE(InternetExplorer)、Netscape通信公司的Navigator以及SUN公司的HotJava等。最流行的Web浏览器是IE浏览器,Microsoft公司采取将IE浏览器与Windows平台捆绑一起销售的策略,使IE浏览器拥有众多的用户,占有很大的市场份额。

5.5.3FTP协议

1.FTP系统组成

FTP是基于客户/服务器模式的服务系统。它由客户软件、服务器软件和FTP通信协议等三部分组成。

FTP客户软件运行在用户计算机上。用户装入FTP客户软件后,便可以使用FTP内部命令与远程FTP服务器建立连接,以上传或下载文件。

FTP服务器软件运行在远程主机上,可以为一些可信的用户注册用户账号,也可以设置一个名叫anonymous的公共用户账号,向公众开放。

FTP通信协议在客户与服务器之间建立两条TCP连接:一条是控制连接,TCP端口号为21,主要用于传输命令和参数;另一条是数据连接,TCP端口号为20,主要用于传送数据。

FTP服务器不断在一个周知的21号TCP端口上侦听用户的连接请求。当用户发出连接请求后,其控制连接便会建立起来;然后,客户使用已注册的用户名和口令,或者使用“anonymous”用户名和“guest/用户E-mail地址”口令进行登录。这时,用户名和口令通过控制连接发送给服务器。服务器接收到这个请求后,首先认证用户身份,然后向客户回送确认或拒绝的应答信息。用户看到登录成功的信息后,便可以发出文件传输的命令。服务器从控制连接上接收到文件名和传输命令(如get)后,便在20号TCP端口上发起数据连接,在这个连接上进行数据传输,将文件名所指明的文件传输给客户。只要用户不使用close或者bye/quit命令关闭连接,就可以继续传输其他文件。

2.FTP使用操作

FTP的使用操作也很简单。首先运行FTP客户程序,这时可以直接后缀一个域名或IP地址与远程FTP服务器建立连接(>ftp域名/IP地址),或者进入FTP后使用open命令来建立连接(ftp>open域名/IP地址)。当连接建立起来后,系统会提示用户输入用户名和密码。用户输入正确的用户名和口令后,系统会给出登录成功的显示信息。这时,用户就可以使用FTP命令进行文件传输或其他操作了。

FTP命令有很多,但常用的命令只有几种,对于匿名FTP更是如此。

表5.8给出了FTP常用的命令。

表5.8常用FTP命令一览表

表5.8常用FTP命令一览表

5.5.4Telnet协议

1.Telnet系统组成

Telnet采用客户/服务器模式,由客户软件、服务器软件以及Telnet通信协议等三部分组成。

Telnet客户软件运行在用户的计算机上。当用户执行Telnet命令进行远程登录时,客户软件将完成下列功能:

(1)建立与远程主机的TCP连接。它在一个周知的23号TCP端口上打开一个套接字,如果远程主机上的Telnet服务器软件一直在这个周知的端口上侦听连接请求,则这个连接便会建立起来。

(2)以终端方式为用户提供人机界面。

(3)将用户输入的信息通过Telnet协议传送给远程主机。

(4)接收远程主机发送来的信息,并经过适当的转换显示在用户计算机的屏幕上。

远程主机必须运行Telnet服务器软件,这样才能提供Telnet远程登录服务。Telnet服务器软件将完成下列功能:

(1)通知网络系统已做好提供远程连接服务的准备。

(2)不断地在周知的23号TCP端口上侦听用户的连接请求。

(3)处理用户的请求。

(4)将处理的结果通过Telnet协议返回给客户程序。

(5)继续侦听用户的请求。

2.Telnet使用操作

Telnet的使用操作比较简单。首先,运行Telnet客户程序,在运行Telnet程序时,可以直接后缀一个远程主机的域名或IP地址来建立与该远程主机的连接(>Telnet域名/IP地址),或者进入Telnet后用open命令来建立连接(Telnet>open域名/IP地址)。当连接建立起来后,系统会提示用户进行登录,即在“Login:”后面键入用户的注册名,除非是一个公共账户,否则系统提示用户输入口令。当用户的注册名和口令被远程主机确认后,用户计算机就成为该远程主机的一个终端,就可以进行联机操作了。表5.9常用Telnet命令一览表

5.5.5电子邮件协议

1.电子邮件系统组成电子邮件与普通信件一样要有一定的书写格式。一个电子邮件由邮件头(MailHeader)和邮件体(MailBody)组成。邮件头相当于“信封”,由收信人电子邮箱地址(To:)、发信人电子邮箱地址(From:)和信件标题(Subject:)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论