上一篇文章说了TCP是一个面向连接的协议,双方之间必须先建立一条连接才能够进行数据的通信。本文就来讨论一下,一个TCP连接是如何被建立以及终止的。
连接的建立和终止
要了解在连接建立和终止的过程中发生了什么,最好的方法就是抓包观察。以下两图是访问某个网页过程中TCP连接建立和断开时的数据包。这就是大名鼎鼎的TCP三次握手和四次挥手,我们会对其逐行进行分析。
最前面的TCP表明该连接使用TCP协议,后面就不再说明了
xx->xx是通信时选用的端口号。Win为发送方的接收窗口大小,Len表示该包的数据部分的长度(还记得TCP数据封装吗,Len表示的就是那部分的TCP数据长度)。WS是窗口扩大因子;用来控制窗口值如何扩大,选项中的字段。 MSS之前也说过,是选项中TCP报文段数据字段的最大长度。SACK_PERM: 允许选择确认,选项字段中的。
分析三次握手和四次挥手的话,重点关注括号中的标志,以及Ack和Seq就行。
三次握手
第一行,我作为请求段通过端口号62703向服务器的80端口发起建立TCP连接