UDP(用户数据报协议)
UDP在传送数据之前不需要先建立连接,远程主机的运输层在接收到UDP报文后也不需要给出任何的答复。
下面给出使用UDP协议的应用和应用层协议:
域名转换:DNS
路由选择协议:RIP
网络管理:SNMP
IP电话:专用协议
流媒体通信:专用协议
多播:IGMP
特点:
1)UDP是无连接的。在发送数据之前不需要建立连接,相应的发送数据结束时也没有连接可以释放。
2)UDP使用尽最大努力交付。不保证可靠的交付,因此主机不需要维持复杂的连接状态表。
3)UDP时面向报文的。且UDP一次只交付一个完整的报文,因此应用程序需选择合适大小的报文,若报文太长,UDP将报文交给IP层后,IP层在转达时可能要进行分片,从而降低了IP层的效率。反之,若报文太短,则IP数据报的首部相对长度较大,也降低了IP层的效率。
4)UDP没有拥塞控制。即使网络出现拥塞也不会使源主机的发送速率降低,这对例如IP电话、实时视频会议等实时应用是很重要的,这类的应用要求源主机以恒定的速率发送数据,并且允许在网络拥塞时丢失一些数据,但不允许数据有太大的时延。
5)UDP支持一对一、一对多、多对一和多对多的交互通信。
6)UDP首部开销较小。8个字节,TCP的首部有20个字节。
TCP(传输控制协议)
TCP提供面向连接的服务。在传送数据之前必须先建立连接,数据传输完毕之一需要释放连接。TCP不提供广播和多播服务。由于TCP需要提供可靠的、面向连接的运输服务,因此不可避免地要增加许多的开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大了很多,还要占用很多的处理机资源。
下面给出使用TCP协议的应用和应用层协议:
万维网:HTTP
电子邮件:SMTP
文件传送:FTP
特点:
1)TCP是面向连接的传输层协议。应用程序在使用TCP协议之前必须先建立TCP连接;传送数据完毕后,必须释放已经建立的TCP连接。
2)每一条TCP连接只能有两个端点。(端点为套接字Socket)
3)TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序地到达。
4)TCP提供全双工通信。通信双方在任何时候都能发送数据,而且两端都设有发送缓存和接收缓存。
5)面向字节流。这里的流指的是流入到进程或从进程流出的字节序列。虽然程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据看成是一连串无结构的字节流。(例如,发送方应用程序交给发送方TCP共10块数据,但接收方的TCP可能只用了4个数据块就把收到的字节流交付上层的应用程序)。
TCP连接:
每一条TCP连接有两个端点,端点为套接字(socket)
套接字 socket = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的端点所确定。
同一个IP地址可以有很多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。