TCP和UDP的区别

TCP和UDP都是传输层协议,但是两者具有不同的特性和应用场景

  TCP UDP
可靠性 可靠 不可靠
连接性 面向连接 面向无连接
报文 面向字节流 面向报文
效率
双工性 全双工 一对一、一对多、多对一、多对多
流量控制 滑动窗口
拥塞控制 慢开始、拥塞避免、快重传、快恢复
传输速度
应用场景 对效率要求低,对准确度要求高或者要求有连接的场景。比如:电子邮件(SMTP)、万维网(HTTP)、文件传输(FTP) 对效率要求高,对准确度要求低的场景。比如:域名转换(DNS)、远程文件服务器(NFS)

 

TCP端口和UDP端口主要是区别,基本没什么联系:

  1)TCP端口---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
  2)UDP端口---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

名词解释:

1 面向报文和面向字节流

  面向报文的传输方式是应用层交给UDP多长的报文,UDP就发送多长的报文,即一次发送一个报文。因此应用程序必须选择大小合适的报文。报文太长,则IP层需要分片,降低效率。

  面向字节流的传输方式是应用程序和TCP的交互是一次一个数据块(大小不等),TCP把这些数据块看成是一连串无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就会把它分割成多块传送。

2 双工性

全双工:是指在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。

半双工:所谓半双工就是指一个时间段内只有一个动作发生,举个简单例子,一条窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工的原理。

你可能感兴趣的:(TCP和UDP的区别)