本文力图简洁,让读者对TCP和UDP有个初步的认知。闲话少说,现在开始吧。TCP和UDP都是传输层的协议。TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送。UDP不建立连接而直接发送,对未送达的消息不管不顾,因而是不可靠的。
TCP
三次握手
三次握手是发生在建立连接的时候,大致过程是这样的。首先由客户端发起请求,然后服务端对请求进行响应,最后客户端再告知收到响应。具体的过程列在了下面。
-
>
客户端
发送带SYN
标志的数据包给对方,告知需要建立连接; -
>
服务端
收到后,回传一个带有SYN/ACK
标志的数据包,告知收到建立连接请求; -
>
客户端
回传一个带有ACK
标志的数据包,代表握手结束并且建立TCP连接。
四次挥手
四次挥手则是在断开连接的时候,过程如下。
-
>
客户端
发送带FIN
标志的数据包给对方,告知需要断开连接; -
>
服务端
收到后,回传一个带有ACK
标志的数据包,告知收到断开连接请求; -
>
服务端
再次回传一个带有FIN
标志的数据包,告知同意断开连接请求; -
>
客户端
回传一个带有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的应用场景,以及在传输时都带有那些状态和数据,文中都没有提及。改日有时间再专门写一篇这样的文章。
-
[0] 图解HTTP
-
[1] 四次挥手