计算机网络基础TCP三次握手四次挥手

什么是TCP呐?他们是怎样建立连接的?
下面将分别介绍tcp的三次握手过程
以及四次挥手过程

四次挥手为什么是四次**?**
也就是说第二次挥手的时候为什么不是FIN+ACK一起发送。

其实发送FIN的意思是终止这一方向的数据传输,而接收到FIN的意思是这一- -方向上已经没有数据可以接收了,但仍可以发送数据。

第一次挥手:客户端向服务端发送FIN,客户端对服务端说:我已经没有数据要发送了,想结束连接,虽然你已经没有数据可接收了,但我知道数据发送是以数据流的形式传输的,所以如果你还有数据没发送完可以不用着急关闭,我等你。

第二次挥手:服务端向客户端发送ACK。服务端对客户端说:老弟呀,你的请求我收到了哈,但我不能马上断开哈,还真让你说对了,我还真有点东西没发送完,但我不能一声不吭让你默默的等啊,我先给你发送个ACK吧。

第三次挥手:服务端向客户端发送FIN。服务端对客户端说:艾玛终于搞完了,我这边也没数据要发送了,那我就把FIN给你发过去了哈,我也同意断开了。注意此时服务端并没有断开哦,它还在等最终确认。

第四次挥手:客户端向服务端发送ACK。客户端对服务端说:你发的FIN我收到了,既然你那边也没东西要发送了,那咱就断开吧。

此时服务端想:这货最后的ACK怎么还不到啊,我得拿到最后的ACK才能断开啊,迟迟不给我ACK的话是不是他没收到我的FIN啊,再不给我ACK我就再给他发一次FIN,反正我拿不到ACK我就一直给你发FIN,哼!刚说完服务端就拿到了ACK,开开心心的断开了连接。

这时客户端想:这网络会不会靠不住啊,对面到底收没收到我的ACK啊,万一我的ACK丢包了咋办,要不我再等等吧,就等2MSL (这个时间是数据包往返客户端和服务端一-次的最大时长) 这么长时间,反正他如果没收到我的ACK还会向我发送FIN的。

2MSL 的时间过去了。客户端:咦,没有再次收到他的FIN,说明这货已经拿到了我的ACK断开了啊,那我也断开吧!
至此,二者彻底断开了连接!

下面是一个大致的流程图

A B FIN ACK FIN ACK A B
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值