IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 三次握手四次挥手 -> 正文阅读

[网络协议]三次握手四次挥手

目录

1.TCP报文

2.三次握手

2.1 三次握手的目的

2.2 三次握手的流程

3.四次挥手

3.1 四次挥手的流程

3.1.1 问:为什么需要等待2MSL?

3.1.2? 为什么是三次握手四次挥手?


1.TCP报文

?标志位含义:

  • URG:紧急标志,该位为"1"时有效。
  • ACK:确认标志,表示确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
  • PSH:推标志。
  • RST:复位标志,用于复位相应的TCP连接。
  • SYN:同步标志,表明同步序列编号栏有效,仅在三次握手建立TCP连接时有效。(建立一个新的连接)
  • FIN:结束标志。(断开一个连接)

2.三次握手

2.1 三次握手的目的

? 为了防止已失效的连接请求报文字段突然又传送到服务端,因为产生错误。

2.2 三次握手的流程

?第一次:

??????? 客户端向服务端发送一个请求,需要建立连接,此时SYN=1,产生seq为随机值t,客户端进入SYN_SENT状态,等待服务器确认。

第二次:

??????? 服务端接收到请求,可以建立连接,此时向客户端返回SYN=1,ACK=1,产生seq为随机值k,ack=t+1,服务端进入SYN_RCVD状态,等待客户端确定。

第三次:

??????? 客户端收到服务端返回的响应,检查ACK=1,及ack=t+1,检查无误,向服务端发送ACK=1,ack=k+1。发送成功,客户端和服务端进入ESTABLISHED状态,完成三次握手,成功建立连接。

3.四次挥手

3.1 四次挥手的流程

?注释:等待时间(2MSL)--2倍的报文最大生存时间

??????? MSL(Maximum Segment Lifetime),即“报文最大生存时间”,任何报文在网络中存在的最长时间,超过该时间,报文将会被丢弃。

3.1.1 问:为什么需要等待2MSL?

????????当主动发起关闭方发送完最后一个ACK包后无法确认对方是否有收到这个ACK包,所以2MSL的时间能保证如果对方没收到会重发第三次挥手的FIN包,且这个包有足够的时候发送回来。

????????如果在这个时间内还没收到重发的FIN包,便可以证明对方已收到该ACK包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。

????????在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。

3.1.2? 为什么是三次握手四次挥手?

??????? 服务端收到客户端的SYN连接请求报文后,可直接发送SYN+ACK报文。其中ACK代表应答, SYN代表同步的。

??????? 而关闭连接时,当服务端收到FIN报文后,极可能不会立即关闭SOCKET,因此只能先回复ACK报文,通知客户端我已收到请求,等到所有的报文发送结束,服务端会发送FIN报文。因而,不能同时发送,需要四步挥手。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:56:03  更:2022-03-08 22:57:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:23:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码