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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP的三次握手与四次断开 -> 正文阅读

[网络协议]TCP的三次握手与四次断开

在这里插入图片描述
seq:初始序号

三次握手
第一次:建立连接时,客户端发送SYN包(同步序列编号)SYN=j到服务器,并进入SYN_SENT状态,等待服务器确认
第二次:服务器收到SYN包,必须确认客户端的SYN(ack=j+1),同时自己发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入STN_RECV状态
第三次:客户端收到服务器端的SYN+ACK包,向服务器端发送确认包ACK(ack=x+1),此包发送完毕,客户端和服务器进入EXTABLISHED状态,连接成功

三次握手就是建立一个TCP连接时,需要客户端和服务端总共发送三个包,进行三次握手的主要目的就是为了确认双方的接受能力和发送能力是否正常,指定自己的初始化序列号为后面的可靠性传输做准备
实质就是连接服务器指定端口建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息

为什么是三次握手?
1.客户端啊发送网络包服务端收到(客户端发送能力、服务器端接受能力正常)
2.服务端发包,客户端收到(客户端了解服务端的发送、接受能力正常,客户端的接受、发送能力正常)
3.客户端发包服务端收到(客户端、服务端接受能力正常)

在这里插入图片描述
四次挥手
第一次:主机1设置seq ack,向主机2发送一个FIN报文段,主机1进入FIN_WAIT_1状态,表明主机1已经没有数据发送给主机2
第二次:主机2收到来自主机1的FIN报文段,向主机1回复一个ACK报文段(ack+1 seq+1),主机1进入FIN_WAIT_2状态,表明主机2同意主机1的关闭请求
第三次:主机2向主机1发送FIN报文段,请求关闭连接,主机2进入LAST_ACK状态
第四次:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,主机1进入TIME_WAIT状态,主机2收到主机1的ACK报文段就关闭连接
主机1需等待2MSL(报文最大生存时间)后依然没有收到回复,证明主机2已经正常关闭,则主机1可以关闭

FIN_WAIT_1状态:SOCKET在ESTABLISHED状态,向主动关闭连接,向对方发送了FIN报文段,此时进入FIN_WAIT_1
而当对方回应ACK后,进入FIN_WAIT_2

为什么是四次挥手?
TCP为全双工模式
主机1发送FIN报文段:主机1已经没有数据发送给主机2,告诉主机2:我的数据已经发送完毕,但仍可以接受来自主机2的数据
主机2发送ACK报文段:了解主机1已经没有数据可以发送,但主机2仍可以发送数据给主机1
主机2发送FIN报文段:表明主机2无数据可以发送
主机1发送ACK报文段:关闭连接

为什么客户端要等到2MSL?
1.保证客户端发送的最后一个ACK报文到达服务器。若ACK报文段丢失,服务器认为:我已经发送了FIN+ACK请求断开了,客户端没有响应,我再发一遍。而客户端在2MSL时间内收到来自服务器的重传报文,接着回应并启动2MSL计时器
2.客户端发送最后一个ACK,在2MSL时间内,就可以使本连接的时间内所产生的所有报文段从网络中消失,新连接则不会出现旧连接的请求报文

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:35:32  更:2021-12-06 15:37:06 
 
开发: 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年7日历 -2024/7/6 8:33:24-

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