1 UDP和TCP的区别

  • 如果是两台主机用UDP协议发送数据,那么他们在任意时刻都可以向对方发送数据,因为UDP是无连接的协议,而如果使用TCP协议进行通信,那么两台主机在通信之前需要进行三次握手建立连接,断开连接时需要进行四次挥手断开连接,TCP协议是面向连接的。(注意:这里所说的连接是指逻辑连接,而不是只物理连接。

  • UDP支持单播、多播、广播通信,而TCP只支持单播通信。

  • UDP是面向应用报文的协议,TCP是面向字节流的协议
    • 也就是说发送方使用UDP协议发送数据时会给该数据报文添加一个UDP头部,接收方接收到该数据报文后去掉其UDP头部直接交给应用进程,中间不做任何操作。
    • 应用进程将需要发送的数据交给下面的TCP协议(传输层),需要发送的数据会首先放在TCP缓存中,TCP协议会根据一定的策略从TCP缓存中提取一定数量的字节并加上TCP头部发送给接收方,接收方收到数据后提取并去掉TCP头部先存放在TCP缓存中,然后将一部分数据交给应用进程。(TCP协议不能保证发送的每个字节都是有意义的,这个需要应用进程进行解析成有意义的字段。

  • TCP和UDP都是全双工协议,也就是说同一时刻任意一方都支持发送和接收数据

  • UDP协议是不安全的,TCP协议是安全可靠的协议

    • UDP协议对发送方发送的数据在传输过程中的丢失或者误码等情况,发送方不做任何处理,因为UDP提供的不安全的传输服务,一般用于视频通话,观看视频等功能
    • TCP协议在建立连接之前会进行三次握手,在断开连接之前会进行四次挥手,且在传输数据过程中如果发生数据的丢失会进行数据重传,因为TCP提供的是安全可靠的服务,一般用于发送文件等安全性要求较高的服务。

  • UDP的首部较简单,TCP的首部较复杂
    • 因为UDP提供的是不可靠的传输,所以其首部比较简单,只有源端口和目的端口以及数据的长度,加上一个校验和(验证数据是否有丢失)
    • TCP由于要提供可靠的传输,还需要进行拥塞控制、流量控制、超时重传等操作,所以其首部较长,最短为20个字节,最长为60个字节。

2 总结

  1. UDP是无连接的协议,TCP是面向连接的协议

    • 如果是两台主机用UDP协议发送数据,那么他们在任意时刻都可以向对方发送数据,因为UDP是无连接的协议
    • 如果使用TCP协议进行通信,那么两台主机在通信之前需要进行三次握手建立连接,断开连接时需要进行四次挥手断开连接,TCP协议是面向连接的。(注意:这里所说的连接是指逻辑连接,而不是只物理连接。
  2. UDP支持单播、多播、广播通信,而TCP只支持单播通信。

    • 使用UDP协议的局域网中,每个主机之间可以实现一对一通信一对多通信多对多通信
    • 使用TCP协议的局域网中,每个主机之间只能进行一对一通信
  3. UDP是面向应用报文的协议,TCP是面向字节流的协议

    • 也就是说发送方使用UDP协议发送数据时会给该数据报文添加一个UDP头部,接收方接收到该数据报文后去掉其UDP头部直接交给应用进程,中间不做任何操作。
    • 应用进程将需要发送的数据交给下面的TCP协议(传输层),需要发送的数据会首先放在TCP缓存中,TCP协议会根据一定的策略从TCP缓存中提取一定数量的字节并加上TCP头部发送给接收方,接收方收到数据后提取并去掉TCP头部先存放在TCP缓存中,然后将一部分数据交给应用进程。(TCP协议不能保证发送的每个字节都是有意义的,这个需要应用进程进行解析成有意义的字段。
  4. TCP和UDP都是全双工协议,也就是说同一时刻任意一方都支持发送和接收数据

  5. UDP协议是不安全的,TCP协议是安全可靠的协议

    • UDP协议对发送方发送的数据在传输过程中的丢失或者误码等情况,发送方不做任何处理,因为UDP提供的不安全的传输服务,一般用于视频通话,观看视频等功能
    • TCP协议在建立连接之前会进行三次握手,在断开连接之前会进行四次挥手,且在传输数据过程中如果发生数据的丢失会进行数据重传,因为TCP提供的是安全可靠的服务,一般用于发送文件等安全性要求较高的服务。
  6. UDP的首部较简单,TCP的首部较复杂

    • 因为UDP提供的是不可靠的传输,所以其首部比较简单,只有源端口和目的端口以及数据的长度,加上一个校验和(验证数据是否有丢失)
    • TCP由于要提供可靠的传输,还需要进行拥塞控制、流量控制、超时重传等操作,所以其首部较长,最短为20个字节,最长为60个字节。

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号