TCP/IP运输层的两个主要协议分别是TCP(传输控制协议)与UDP(用户数据报协议)。传送的数据单位分别叫“TCP报文段”或“UDP用户数据报”。
UDP(用户数据报协议)
主要特点: 1)无连接的,发送数据之前不需要连接,减少了开销。 2)尽最大努力交付。即不保证可靠交付。 3)面向报文。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。同样的,IP层交上来的UDP用户数据报,去除首部后就原封不动的交付上面的应用进程。也就是说,一次交付一个完整的报文。 4)没有拥塞控制。因此网络拥塞不会使主机发送速率降低。但是可能会丢失一些数据。 5)支持一对一,一对多,多对一和多对多的交互通信。 6)UDP首部开销小,只有8个字节,比TCP的20个字节的首部要短。?
TCP(传输控制协议)
主要特点:
1)面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接。也就是说,应用进程之间的通信好像在“打电话”,通话之前要先拨号建立连接,通话结束后要挂机释放连接。
2)每一条TCP只能有两个端点。每一条TCP连接只能是点对点的(一对一)。
3)TCP提供可靠交付。通过TCP连接传送的数据,无差错、不丢失不重复,并且按序到达。
4)TCP提供全双工通信(全双工通信:即通信的双方可以同时发送和接收信息的信息交互方式。半双工通信:即通信的双方都可以发送和接受信息,但同一时刻只能有一个方向。)。
4)面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。发送方要先把数据转化为字节流写入发送缓存进行发送,且接收方必须有能力识别字节流。
UDP与TCP的区别
1)UDP在传送数据之前不需要先建立连接。远地主机运输层在收到UDP报文后,不需要给出任何确认。因此UDP不提供可靠交付,但是效率高。TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制等。
2)TCP和UDP在发送报文时所采用的方式完全不同。TCP并不关心进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞程度决定一个报文段包含多少字节,而UDP发送报文长度是应用进程给出的。如果应用进程传送到TCP缓存的数据块太长,TCP就划分短一些再传送。若过短也可以等待积累足够多的字节后再构成报文段发送出去。
3)UDP程序结构比较简单。它的首部最少为8字节而TCP最少为20字节。
4)UDP不保证数据的顺序结构,而TCP必须保证数据的顺序结构。
5)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
|