传输层协议TCP和UDP

时间:2021-05-14 07:30:41

本文力图简洁,让读者对TCP和UDP有个初步的认知。闲话少说,现在开始吧。TCP和UDP都是传输层的协议。TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送。UDP不建立连接而直接发送,对未送达的消息不管不顾,因而是不可靠的。

TCP

三次握手

三次握手是发生在建立连接的时候,大致过程是这样的。首先由客户端发起请求,然后服务端对请求进行响应,最后客户端再告知收到响应。具体的过程列在了下面。

  1. > 客户端发送带SYN标志的数据包给对方,告知需要建立连接;

  2. > 服务端收到后,回传一个带有SYN/ACK标志的数据包,告知收到建立连接请求;

  3. > 客户端回传一个带有ACK标志的数据包,代表握手结束并且建立TCP连接。

四次挥手

四次挥手则是在断开连接的时候,过程如下。

  1. > 客户端发送带FIN标志的数据包给对方,告知需要断开连接;

  2. > 服务端收到后,回传一个带有ACK标志的数据包,告知收到断开连接请求;

  3. > 服务端再次回传一个带有FIN标志的数据包,告知同意断开连接请求;

  4. > 客户端回传一个带有ACK标志的数据包,代表挥手结束并且断开TCP连接。

UDP

UDP没有类似TCP的三次握手机制,而是直接把数据发送出去。因此传输不具备可靠性。但是在网络极差的时候,凭借其不需要三次握手和四次挥手特性,却能高效的把数据传输出去。

词汇

现在把上面出现的词汇分类整理一下吧。

  • 传输协议

    • TCP - Transmission Control Protocol - 传输控制协议
    • UDP - User Datagram Protocol - 用户数据协议
  • 握手状态

    • SYN - synchronous - 建立连接
    • ACK - acknowledgement - 确认收到
  • 挥手状态
    • FIN - final - 关闭连接

参考

这篇文章是我的读书笔记。综合了书中的知识以及参考了百度百科关于四次挥手的解释,总结出了对传输层协议TCP和UDP的浅显认知。其中,词汇的命名参考了园友azraelly的TCP的状态一文。

关于TCP和UDP的应用场景,以及在传输时都带有那些状态和数据,文中都没有提及。改日有时间再专门写一篇这样的文章。