理论教育 TCP和UDP简要介绍

TCP和UDP简要介绍

时间:2023-11-22 理论教育 版权反馈
【摘要】:无论是TCP还是UDP,都是使用应用层接口处的端口与上层的应用程序进行通信的。TCP和UDP的端口号是相互独立的,因为在互联网络层的IP首部中协议字段能够区分出运输层协议是TCP还是UDP,所以两者的端口号可以独立地与应用程序相关联。表6-1TCP熟知端口TCP是面向连接的协议。与TCP协议相比,无连接的UDP协议就要轻松许多,它仅仅是在IP之上增加了一个端口寻址的能力。

TCP和UDP简要介绍

在TCP/IP体系中,互联网络层提供了IP路由的功能。但IP地址仅仅能对应于主机,而对于同一台主机上的多个应用程序是无法区别的。就好比邮递员仅仅能把一封信送到一个公司或一所学校,却无法确定这封信是交给公司或学校中的哪一个具体的个人。显然,还需要一个能区分各个应用程序的标识——这就是端口,在ISO的OSI七层参考模型中称为服务访问点(SAP)。无论是TCP还是UDP,都是使用应用层接口处的端口与上层的应用程序进行通信的。每个端口都有一个16位的标识符,称为端口号。正是这16位的端口号将各个应用程序(实质上是进程,即正在内存中运行着的程序部分)区分开来的。

在运输层协议中,端口与任何应用程序是可以自由进行连接的,不过对于一些公共的服务还是有基本的约定,这样的端口称为熟知端口。熟知端口一般都小于1024,由于熟知端口已经有了固定的使用协议,所以不能被动态地分配给其他应用程序,表6-1列出了一些熟知端口。

端口号在1024~49151之间的为注册端口。例如,腾讯QQ服务器的TCP端口号为8000,客户端的TCP端口号为4000。

端口号在49152~65535之间的为动态端口和私有端口。例如,当一个应用程序使用多个进程进行通信时,就可以把这些端口号分配给各进程使用。

TCP和UDP的端口号是相互独立的,因为在互联网络层的IP首部中协议字段能够区分出运输层协议是TCP还是UDP,所以两者的端口号可以独立地与应用程序相关联。

从网络整体来看,端口号是由主机上的运输层协议分配的,是内部的,各个主机都可能会有端口号为21的FTP,因此它并不具有全局唯一性。而如果将具备全局唯一性的IP地址与端口号结合起来,就能在整个网络上唯一地标识出某台主机上的一个应用程序。IP地址与端口号的结合称为套接字。一条TCP连接就是由发送方套接字和接收方套接字来唯一标识的,即所谓的四元组<源端IP地址、源端口号、目的IP地址、目的端口号>。(www.daowen.com)

表6-1 TCP熟知端口

978-7-111-31053-2-Chapter06-1.jpg

TCP是面向连接的协议。面向连接意味着在通信双方交换数据之前必须建立一个逻辑的TCP连接。这个过程与打电话相似,先拨通号码,等待对方听到振铃,摘机说“喂”,当听到这声“喂”之后,说明有人接电话,就可以开始正式通话了。而在一个TCP连接的过程中,通信双方的套接字就充当了电话号码与身份确认的工作。

与无连接的UDP和IP协议不同,在传输数据之前,TCP协议需要进行连接。除此之外,为了提供可靠的数据传输服务,TCP协议还要具备差错控制流量控制与拥塞控制的功能。如果TCP协议基于的是一个可靠的网络服务,那么这些功能可以相对简单。然而不幸的是,TCP协议基于的是一个使用IP服务的不可靠网络,而这种报文段偶尔丢失的不可靠性和端系统间很长且动态变化的时延造成的无序性,使得TCP协议的差错控制和流量控制技术很复杂。虽然说各个层次的协议都有需要克服的问题,但是比较起来,实现可靠的面向连接的TCP运输协议所面临的困难是其他任何协议所无法比拟的。

与TCP协议相比,无连接的UDP协议就要轻松许多,它仅仅是在IP之上增加了一个端口寻址的能力。UDP不具备差错控制和流量控制的能力,因此它也不会许诺它的服务是可靠的。UDP协议虽然不可靠,但它的优势是代价很小,操作更为高效、快速。因此,一方面,它适合于不断出现的和时间相关的应用,例如,IP上传输的话音和实时的可视会议;同时UDP也适合于一些传送少量报文段的程序,例如,网络管理信息。当然对于大量报文段且需要对数据流进行序列调整的情况,TCP自然更加适合,例如,FTP或其他数据下载方式。另外,如果应用程序本身提供可靠的传输和流量控制,这时UDP也是足够的。因此,UDP作为不可靠的运输层协议并不表明它是无用协议,只是用于不同的应用环境而已。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈