TCP/UDP数据报的传递



在TCP/IP的传输层中提供了两种数据传输服务,即TCP和UDP。在Internet济南网站建设网络体系结构中,传输层占有很重要的位置,需要从这两种传输服务的数据单元格式来分析它。

首先,在传输层有一个非常重要的概念引用,即端口。

1.端口

端口用于区分不同应用进程或不同连接的数字序号.在实际应用中,经常会同时打开多个IE浏览窗口浏览不同站点的Web资源,或者还有其他网络应用窗口。在一台计算机系统中,每打开一项应用就意味着至少开启了一个进程(何谓进程请参考第11章问题4-1),打开多个IE窗口,就开启了多个进程。那么,应用层各进程产生的数据报通过传输层服务时,就会遇到TCP或UDP同时为多个应用进程提供并发服务的问题,即多个应用进程可能需要通过同一个TCP或UDP协议的服务访问点传输数据,见图4-6。

为了区别上层不同的应用进程或连接,应用层协议与传输层协议交互时,传输层使用了不同的端口号来描述上层各应用程序在传输层的通信路径。因此,端口号对于上层应用进程来说是一个非常重要的识别标志。端口号分为两大类:一类是周知端口,另一类是动态端口。

1)周知端口

周知端口(Well Known Ports):从。到1023.这些端口被紧密绑定于一些服务中,并表明了该种服务的应用层协议。这类端口采用全局分配,是一种集中控制方式。由一个公认的中央机构根据用户服务需要进行统一分配,并将结果公布于众。如80端口就明确告知所有客户,应用层是HTTP协议通信,21端口是FTP协议通信等。若有一提供Web服务的服务器,并希望全世界的用户都能访问其资源,那它必须开启80端口并守候在该端口上,等待随时为客户提供HTTP服务.

2)动态端口

动态端口(Dynamic Ports):从1024到65535。之所以称为动态端口,是因为它们一般不固定分配给某一特定的应用。这类端口采用本地分配,是一种动态控制方式。如某一进程需要传输层服务时,该进程首先要向本地操作系统提出端口申请,操作系统从可用的动态端口号中随机返回一个本地未用的端口号,该进程再通过系统调用将进程与申请得到的端口号绑定.当这个进程关闭时,同时也释放了所占用的端口号。

【举例】客户端开启Yahoo Messger应用,那么在客户端至少要开启两个会话进程,通过随机获得的两个动态端口分别与Yahoo服务器端和账户验证中心端建立连接.比如:一个进程连接是本地端口2192与Yaho。服务器端口5050的连接,另一个进程是本地端口2196与Yahoo账户验证中心端口433的连接。

2192和2196是客户端动态分配的端口号,433是Yahoo账户验证中心端的服务端口,5050是Yahoo服务器端的服务端口(这里服务端端口5050从动态端口号里指定,这种情况在实际应用中会有很多,如QQ应用等)。

当客户与某在线好友通过YahooMessger聊天窗口进行文字聊天时,在客户端将会再建立一个新的会话进程,比如:本地端口5101与对方端口4548的连接。如果要给某离线好友留言,留言信息将会从本地通过本地端口2192与Yahoo服务端端口5050已建立的连接传递给Yahoo服务器端,然后由Yahoo服务器代理传递该留言信息给对方。

常用的周知端口号见表4-1。

2. TCP/UDP协议

1) TCP协议

TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的、可靠传输的通信协议。

何谓面向连接,在对等传输层间传输数据,发送端与接收端必须先建立一条用于传输数据的逻辑通信链路(TCP的“三次握手”,见后文解释),数据传输完毕还需要断开此连接。之所以是可靠传输,是因为TCP能确保发送端与接收端之间数据传输的完整性(不丢失、不误传),即接收端每收到发送端对应层传送来的TCP数据报,校验无误后都要向发送端回送确认信息,否则发送端就要重发。这样的数据传输方式就如同我们日常生活中打电话通信一样,首先要建立通话连接,然后开始通话,最后断开连接。故这种服务方式的数据传输适合一次传输大批数据并要求可靠传输的应用中。

2) UDP协议

UDP(User Datagram Protocol)用户数据报协议,是一种面向非连接的、不可靠传输的简单通信协议。

UDP的无连接通信,即发送端UDP收到上层应用传递下来的数据报,添加UDP协议头信息后就直接向下交付给网络层。其不可靠传输,即接收端收到UDP数据报后,对校验没问题的数据报直接向上层提交报文数据,不需要向发送端回送确认;而校验有问题的数据报则直接丢掉。因丢掉的数据报不需要重传,故无法保证传送数据的完整性.这种数据传输方式就如同我们日常生活中通过邮局邮递普通信件一样,发信方将信件投人某邮递信筒即可,不用关心信件是否能送到;收信方收到信件后也不裕要向发信方确认。

这种服务方式的数据传输适合一次传输小量、可靠性要求不高的应用中。

如图4-7所示,应用层要求传输层提供可靠传输服务的有HTTP, FTP, Telnet和SMTP等,它们都需要高度的可靠性和完整性。

而TFTP以及SNMP在两端传输的数据均是很简单的数据,如网络设备配置信息或网络管理信息,通过UDP能达到基本的数据传输需求。还有像QQ等即时通信工具,在网络通信良好的情况下,语音数据均优先使用UDP进行传输。因为使用UDP可减少信道的额外开销,不需要建立连接、维持连接,更不需要在端到端之间传递确认消息;UDP协议头本身比TCP小很多,也减少了信道占用带宽,提高了信道的数据传输速率。

营销型网站