为了账号安全,请及时绑定邮箱和手机立即绑定

TCP的三次握手与四次挥手趣谈

标签:
算法

学计算机网络必须要知道的TCP/IP协议,我用我在毕业设计中,思考并解决的一个问题,来解释这个过程。首先我想举个例子:
在这里插入图片描述
当你向某人说话的时候,如果不加标点符号,就会变成下面这样
在这里插入图片描述
网络通信也是这样,你需要向你想发送的对方,告诉他,我是谁(打招呼),我说了什么(内容),说话完毕(结尾),于是我在自己设计的C/S模式的棋牌游戏里加入这样的消息格式
|10001|35|7359|7709|username|password|10001|
上面的消息格式解释起来就是,消息的开头是10001,表示为登陆消息(自己规定的),35表示后面的消息长度为35,而且消息的结尾也是10001表示该条消息结束,由7359发送给7709对象,35数字之和的消息内容第三段是账号,第四段是密码,这样就是完整的一条消息
然后我们来对比一下TCP报文段结构
在这里插入图片描述
10001是我自己定义的,就类似开场白,告诉对方,这次谈话我要开始了,而且谈话的内容是登陆消息,让对方准备好,然后告诉对方本次谈话的时间长度是35,而且是我和你谈,谈话内容是账号和密码,最后再次告诉对方10001,表示本次谈话结束。
TCP被称为是面向连接的,这是因为在一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须相互“握手”,即它们必须相互发送某些预备报文,以建立确保数据传输的参数。作为TCP连接建立的一部分,连接的双方都讲初始化与TCP连接相关的许多TCP状态变量。

三次握手

客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来响应,最后,客户再用第三个特殊报文段作为响应。前两个报文段不承载“有效载荷”,也就是不包含应用层数据;而第三个报文段可以承载有效载荷。由于这两台主机之间发送了3个报文段,所以这种连接建立过程常被称为三次握手。
在这里插入图片描述

四次挥手

客户应用进程发送一个关闭连接命令。这会引起客户TCP向服务器进程发送一个特殊的TCP报文段。这个特殊的报文段让其首部中的一个标志位即FIN比特被置为1。当服务器接收到该报文段后,就向发送方回送一个确认报文段。然后服务器发送它自己的终止报文段,其FIN比特被置为1.最后,该客户对这个服务器的终止报文段进行确认。此时,在两台主机上用于该连接的所有资源都被释放了。
在这里插入图片描述
序列号seq
Sequence Number
确认号ack
Acknowledgement
确认ACK
同步SYN
Synchronize Sequence Numbers
终止FIN
Finish

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
30
获赞与收藏
154

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消