Python-TCP协议三次握手以及四次挥手

TCP三次握手(client客户端先发起请求):

1、客户端发起请求连接服务器

2、服务器返回:接受到请求,并要求连接客户端

3、客户端回复:可以连接

举个日常例子,打电话时我们对话如下:
在这里插入图片描述
对应为客户端与服务器之间的通信:
在这里插入图片描述
于是有了如下对话:
备备:1+1等于几?
香香:2;2+2等于几?
备备:4

首先两个人约定协议
1.感觉网络情况不对的时候,任何一方都可以发起询问

2.任何情况下,若发起询问后5秒还没收到回复,则认为网络不通

3.网络不通的情况下等1min路由器之后再发起询问对于备备而言,发起 “1+1等于几”的询问后:Ⅰ若5s内没有收到回复,则认为网络不通;Ⅱ 若收到回复,则备备确认①备备能听到香香的消息 ②香香能听到备备的消息,然后回复香香的问题的答案

对于香香而言,当感觉网络情况不对的时候

  1. 若没有收到备备的询问,则香香发起询问

  2. 若收到“1+1等于几”,则香香确认:香香可以听到备备的消息,然后回复备备的问题的答案“2”和香香的问题“2+2等于几”

  3. 若5s内没有收到备备的回复“4”,则香香确认:备备听不见她的消息

  4. 若5s内收到了备备的回复“4”,则香香确认:备备可以听见她的消息

这样,如果上面的对话得以完成,就证明双方都可以确认自己可以听到对方的声音,对方也可以听到自己的声音!

TCP四次挥手(client端或者server端发起端口连接请求):

1、客户端发起断开连接的请求: 意思是: 我想和你断开连接,我没有数据要继续发送了,但是如果你有数据需要发送,我可以继续接收

2、服务器回复 : 我接收到你的请求了

3、服务器发送 : 我已经准备好断开连接了

4、客户端回复 : 收到你的信息,断开连接

为什么要四次挥手?

确保数据能够完整传输。

当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值