【JavaEE】——三次握手(详细、易理解)

举报
三三是该溜子 发表于 2025/05/05 10:53:18 2025/05/05
【摘要】 ​目录一:连接管理二:三次握手(重点)三:解决“后发先至”问题一:连接管理1:建立连接【JavaEE】——TCP回显服务器(万字长文超详细)-CSDN博客​​​​​​在之前的学习中,我们知道用下述的这个代码(构造方法),将客户端 和服务器的内核建立连接,服务器在调用accept方法拿到操作系统内核中的连接,从而达到应用程序层面上服务器和客户端的连接。注:这个方法不是很明白的可以点击上面那条链...

目录

一:连接管理

二:三次握手(重点)

三:解决“后发先至”问题

一:连接管理
1:建立连接
【JavaEE】——TCP回显服务器(万字长文超详细)-CSDN博客​​​​​​

在之前的学习中,我们知道用下述的这个代码(构造方法),将客户端 和服务器的内核建立连接,服务器在调用accept方法拿到操作系统内核中的连接,从而达到应用程序层面上服务器和客户端的连接。

注:这个方法不是很明白的可以点击上面那条链接,里面有详细解释

二:三次握手(重点)
1:syn同步报文段
在了解“三次握手”之前我们先来认识一个缩写词syn,syn(全称:synchronize 同步),这个单词并不陌生,加锁:synchronized。

这两者的含义却不同。加锁synchronized同步是协调各个线程之间的执行顺序,“握手”这里的synchronize同步是进入连接状态,客户端和服务器得相互配合完成一系列的工作

还记得上篇文章中,引入的TCP协议中的六位标志位吗

六位标志位

2:过程详细梳理
总图

(1)syn的作用就是告诉服务器:我想和你建立连接——此时发送过去syn的值就是1

(2)服务器收到syn,并返回ack应答报文(此时ack值为1)

(3)服务器ask完之后,会决定是否建立连接,这里有两种情况。

(4)客户端收到服务器发来的“syn确认建立连接后”,会再返回一个ack(应答报文),告诉服务器——我收到了

3:合二为一
细心的铁铁会发现上述不是4次过程吗,为什么叫三次握手,其实②③是可以合并的,服务器在发送②③的时候,把TCP数据报包中的六位标志中ask和syn中的值都置为1,就达到了一起发送的效果(即服务器:我收到了,我确认跟你建立连接)

4:三次握手的目的
目的是为了让通信双方都能保存对方的相关信息

5:三次握手的意义
(1)投石问路
三次握手,可以先针对通讯路径,进行投石问路,确认通讯路径是否畅通

注:就像你下班回家,得先看一下堵不堵车,不堵车的话就开车回家(路径通畅),堵车的话,不回了,加班!

(2)验证双方通讯是否异常
三次握手可以验证通讯双方,接受能力和发送能力是否正常

(关注点在两端)

6:一些误区
(1)确认应答机制独立于三次握手机制

在三次握手过程中,“确认应答机制”和“超时重传机制”都是存在的

注意:这里的三次握手虽然包含“确认应答”,但是不能说“确认应答”机制是“三次握手”机制中的一部分。

因为在“三次握手”结束进入数据传送后,“确认应答”机制依旧存在。

所以“确认应答”机制是独立于“三次握手”机制的

三:解决“后发先至”问题

1:选项定参数
TCP中也是有很多参数需要协商的,这时往往是通过“选项”部分来体现的嘛(最多40字节提供给选项)40怎么来的参考这里【JavaEE】——TCP应答报文机制,超时重传机制-CSDN博客

2:通讯序号起始值

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。