欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCP三次握手和四次挥手的详解

程序员文章站 2022-06-14 11:17:37
...

此解释参考TCP-IP详解卷1:协议

三次握手

我们先来看看TCP连接到底是什么样的,首先要建立本地和某个主机的联系,可以在unix系统输入如下命令

talnet bsdi discard

然后看看TCP报文输出
TCP三次握手和四次挥手的详解
这7个TCP报文仅包含首部,不含任何数据,他们的格式统一,都是
源 发送端>接收端:标志

标志中第一个字母或字符的含义如下:
TCP三次握手和四次挥手的详解
标志位置1或者数据段不为空时,才显示该字段信息

在第一行中,S表示该报文为SYN比特位置1,1415531521:1415531521(0)表示分组序号为1415531521,发送0个数据;win 4096表示滑窗的大小,<mss 1024>表示发送的报文段最大长度选项

第二行中,SYN位置1,ack字段不为空,ack 1415531522表示确认序号,为上一个请求的分组序号+1

第三行中,SYN位此时不置1,所以不显示,ack 1823083522表示确认序号,为上一个请求的分组序号+1

所以总结TCP三次握手的过程为:

1. 请求端(通常是指客户端)发送一个SYN段打算连接服务器上的端口,以及初始序号(ISN,在这个例子中为1415531521),这个SYN段为报文段1
2. 服务器发回包含初始序号的SYN报文段作为应答(报文段2),同时,将确认序号设置为客户的ISN+1
3. 客户端将确认序号设置为服务器的ISN序号+1对服务器的报文做应答(报文段3)
TCP三次握手和四次挥手的详解

四次挥手

TCP连接是半关闭的,当一端接收到FIN报文时,仍然可以发送数据,必须两端都关闭才结束TCP连接。
同样是上面的图,报文段4发送FIN报文,FIN位置1,为上一次客户端收到的确认序号和上一次他发送的确认序号,然后客户端返回ack,客户端的连接关闭,然后发送FIN报文,客户端收到返回ack,服务器连接关闭
TCP三次握手和四次挥手的详解

相关标签: 网络 TCP