TCP四次揮手

TCP的過程

三次握手: client向伺服器發送SYN請求建立TCP連結(伺服器確認客戶端的發送能力和伺服器接收能力是正常的)
伺服器回覆SYN-ACK給client表示收到請求(client認為伺服器發送和接受能力正常,此外client收到伺服器的echo,說明自己的發送接受能力亦正常) client向伺服器發送ACK 成功建立連結(client接受發送能力正常,伺服器接受發送能力亦正常 可以建立連結)
tcp_process

關於TCP四次揮手的一個自編小故事

有两个诗人client和server client要离开了 于是发一个fin和seq=x的包给server 然后进入fin_wait_1状态 此时client已经没有数据发给server了 但仍然可以接受数据
(诗人client:我先走了 但仍然还没走 不知道server有什么要说的)

server收到fin之后发一个ack和seq=x+1给server表示“收到”并“同意”client结束连接的请求
(诗人server:好的)

中间server可能还有没法完的数据要发给client 就在这个间隙发送 好比一个朋友和你说再见之后你说先别走然后唠嗑了一点叮嘱
(诗人server:先别走 记得保重身体blahblahblah……)

server完成送礼/叮嘱后发送一个fin和seq=y “西出阳关无故人” 并祝client一路顺风进入last_ack状态
(诗人server:你去吧 慢走)

client收到最后一个fin之后 再发一个ack给server告诉他“收到了,你回去吧,天色晚了”
server收到ack后 便不舍地离去 关闭连接进入CLOSED状态 client见到server不见后 亦使得连接CLOSED 上马向落日余晖走去