| |
|
开发:
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 三次握手的流程?第一次: ??????? 客户端向服务端发送一个请求,需要建立连接,此时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地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 7:43:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |