TCP与UDP区别的深入了解(这里只讨论IPV4情况,当然,IPV6下的TCP与UDP协议部分也能适用)

Posted purelaw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP与UDP区别的深入了解(这里只讨论IPV4情况,当然,IPV6下的TCP与UDP协议部分也能适用)相关的知识,希望对你有一定的参考价值。

简单介绍

TCP: 自维持连接的数据“流”传输协议

UDP: 数据“报”形式的“单向”传输协议

区别

  1. 头部长度的区别:
    • TCP报头长20个字节,包括:源端口(2)、目的端口(2)、序号(4)、确认号(4)、头长度(4乘以n)(0.5)、(空)(0.5)、各种标志位(1)、窗口大小(2)、校验和(2)、紧急指针(2);
    • UDP报头长8个字节,包括:源端口(2)、目的端口(2)、UDP长度(2)、UDP校验和(2)。
  2. TCP面向连接(有连接概念),有明显的区分客户端和服务端,由客户端发起,服务端监听;UDP没有区分C/S端,只有发送方跟接收方的区别

  3. 收发数据上的区别:
    • 收发TCP数据前需要先建立连接(三次握手),服务端监听,客户端发起;断开连接时需要(四次握手,也有两次两次分开握手的方式,称之为半关闭
    • 而UDP只需要接收方有监听本地UDP端口即可;
  4. TCP因为是“流”形式的,所以传输的时候不自带数据长度;UDP则是“报文”形式的,所以要么不会到达目的端口,要么自动带着报文长度到达目的端口;

  5. TCP有流量控制、拥塞控制、慢启动(TCP为适应网络拥堵情况的特性)、滑动窗口协议(其一是控制流量,其二是保证重传机制),UDP没有。

项目实现过程中的收获:

如果不使用线程锁之类的操作的话,并行的读写操作很容易发生“脏读”或“越界写入”问题。最低限度的改进是:将写入与删除的操作都尽可能在同一函数(线程)中操作。

以上是关于TCP与UDP区别的深入了解(这里只讨论IPV4情况,当然,IPV6下的TCP与UDP协议部分也能适用)的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出之 TCP协议(三次握手与四次挥手超时重发流量控制拥塞控制与UDP区别)

深入浅出TCP与UDP协议

终于把 TCP 与 UDP 协议整明白了!

三分钟,让你了解TCP和UDP协议的区别与应用

终于把 TCP 与 UDP 协议整明白了!

终于把 TCP 与 UDP 协议整明白了!