一、名词解释
- Seq(序号): 发起方发送数据时对此进行标记
- URG: 标识紧急指针是否有效
- ACK: 标识确认序号是否有效(ack=seq+1)
- SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
- FIN: 通知对端, 本端即将关闭.我们把含有FIN标识的报文称为结束报文段
- PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走
- RST: 要求重新建立连接.我们把含有RST标识的报文称为复位报文段
二、三次握手
- ClientA->ServerB : SYN=1,seq=x
(客户端请求链接----->>>>男孩说:吃火锅去?,等待对方回复确认) - ServerB->ClientA : ACK=1, SYN=1,seq=y,ack=x+1
(服务端确认----->>>>女孩说:中。)
3.ClientA->ServerB : seq = x+1,ack=y+1,ACK=1
(客户端确认服务端已确认---->>>>男孩听到女孩说“中”,然后两个家伙手拉手吃火锅去了)
注:
SYN-SENT:请求建立链接客户端
SYN-RCVD:建立链接服务端
ESTABLISHED:链接已建立
三、TCP四次挥手
- ClientA->ServerB : FIN=1,seq=x
(客户端请求关闭链接----->>>>男孩说:回家吧?,等待对方回复确认) - ServerB->ClientA : ACK=1,seq=y,ack=x+1
(服务端确认----->>>>女孩说:我听见你说的”回家吧“这几个字了,考虑一下) - ServerB->ClientA : ACK=1,seq=w,ack=x+1,FIN=1
(服务端二次确认----->>>>女孩说:中,回家吧。)
3.ClientA->ServerB : seq = x+1,ack=w+1,ACK=1
(客户端收到服务端二次确认---->>>>男孩听到女孩说“中,回家吧”,然后男孩等女孩走后,男孩回家)