TCP和UDP

 本文基于《计算机网络(自顶而下方法)(原书第6版)》、明教教主秦柯的视频笔记和网上相关博客所写。博主理解若有误的地方,欢迎大家指出。

TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议。(引用陈宝佳所述

一、TCP

1、TCP提供一种面向连接的、可靠的字节流服务。

(1)TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,这是因为在一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,即它们必须相互发送某些预备文段,以建立确保数据传输的参数。

 (2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复。TCP报文段是以IP(不靠谱协议)数据包来传输,而IP数据包可能达到接收端时可能会失序,所以,若有必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的形式交给应用层。

(2.1)TCP通过以下方式来提供可靠服务:

(a)应用层的数据被分割成TCP认为最合适发送的数据块;

(b)TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段(确认ACK),如果没有及时收到一个确认,将重发这个报文段(超时重传);

(c)另外,TCP收到收到来自另一端的数据,它将发送一个确认,但不是立即发送,通常会推迟几分之一秒,这样是为了节省资源,确认包(ACK)和自己这边可能发送的数据合成一个包发过去节省资源。

(3)面向字节流,说的是应用层产生的数据与真正发送的单个IP数据包可能没有什么联系。应用层的数据若是过大,这TCP将会将其拆成合适的大小送到网络上,若是小,TCP则会积累足够大小以后再发到网络上。

(4)TCP是点对点形式的,其传送形式只能是单播不能为广播和组播。

2、TCP协议的一些应用

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

二、UDP

1、UDP是一个简单的面向数据报的运输层协议。

(1)面向数据报:就是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。即应用层给UDP的报文不论大小,直接将UDP头部封装以后交给IP,然后封装IP头部以后,传送到网络上,应用层传输的数据和网络上的数据报一一对应--------一个网络操作一个数据包。这容易造成IP分片(主要由UDP造成),IP会把MTU和数据报长度进行比较,若大则需要分片。(MTU :最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位))。

(2)UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDP也不负责重发,甚至当出现包的到达顺序乱掉时也没有纠正的功能(发送了就得了)。如果需要这些细节控制,那么不得不交给由采用UDP的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

 2、UDP的应用

基于UDP的协议有:DHCP,DNS,SNMP,TFTP,BOOTP。

3、UDP支持多播和组播。

补充

我们经常用“ping”来测试两台主机通信是否正常,其实该命令就是向对方发送udp数据包,然后对方主机确认收到数据包,如果数据包到达的信息及时返回的话,就说明网络是通的,QQ就是udp发信息的,因此有时会出现收不到信息的时候。

三、TCP与UDP区别总结(转自Li_Ning_的博客):

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接;
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付;
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
      UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节;
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道;

 Ref:

http://blog.csdn.net/li_ning_/article/details/52117463

http://www.cnblogs.com/Jessy/p/3536163.html

http://blog.csdn.net/herbert5069/article/details/31358641 

原文地址:https://www.cnblogs.com/love-yh/p/7430389.html