当前位置: 首页 > news >正文

HTTP详解:TCP三次握手和四次挥手

 一、TCP协议概述

        TCP协议是互联网协议栈中传输层的核心协议之一,它提供了一种可靠的数据传输方式,确保数据包按顺序到达,并且没有丢失或重复。TCP的主要特点包括:

  • 面向连接:TCP在传输数据之前需要建立连接。
  • 可靠传输:TCP通过确认应答、超时重传和序列号等机制确保数据可靠传输。
  • 流量控制:TCP通过窗口大小机制实现流量控制,防止发送方发送数据过快而导致接收方缓冲区溢出。
  • 拥塞控制:TCP通过各种算法(如慢启动、拥塞避免、快速重传和快速恢复)实现拥塞控制,防止网络过载。

二、TCP三次握手

        TCP三次握手是为了在客户端和服务器之间建立可靠的连接。下面详细介绍三次握手的具体步骤:

1. 第一次握手(SYN)

        客户端向服务器发送一个SYN(同步)标志位设置为1的报文段,表示请求建立连接。报文中包含一个初始序列号(Sequence Number,简称Seq)。

客户端          服务器| ----SYN----> |
  • SYN标志位:表示请求建立连接。
  • 序列号:用于标识数据包的顺序。
2. 第二次握手(SYN-ACK)

服务器接收到客户端的SYN报文后,返回一个SYN和ACK(确认)标志位都设置为1的报文段,表示同意连接,并将ACK序列号设置为客户端的Seq+1。

客户端          服务器| <---SYN-ACK--- |
  • SYN标志位:表示同意建立连接。
  • ACK标志位:表示确认收到客户端的SYN报文。
  • 确认号(Ack Number):为客户端的Seq+1。
3. 第三次握手(ACK)

客户端接收到服务器的SYN-ACK报文后,再发送一个ACK标志位设置为1的报文段给服务器,表示确认连接已经建立,ACK序列号为服务器的Seq+1。

客户端          服务器| ----ACK----> |
  • ACK标志位:表示确认连接建立。
  • 确认号:为服务器的Seq+1。

至此,三次握手完成,客户端和服务器之间的TCP连接正式建立。

三、TCP四次挥手

TCP四次挥手是为了优雅地关闭连接。下面详细介绍四次挥手的具体步骤:

1. 第一次挥手(FIN)

客户端发送一个FIN(终止)标志位设置为1的报文段,表示不再发送数据,但仍可接收数据。

客户端          服务器| ----FIN----> |
  • FIN标志位:表示请求终止连接。
2. 第二次挥手(ACK)

服务器接收到客户端的FIN报文后,返回一个ACK报文段,表示确认已经收到终止连接请求。

客户端          服务器| <----ACK---- |
  • ACK标志位:表示确认收到客户端的FIN报文。
  • 确认号:为客户端的Seq+1。
3. 第三次挥手(FIN)

服务器等待所有数据发送完毕后,发送一个FIN报文段给客户端,表示同样不再发送数据。

客户端          服务器| <----FIN---- |
  • FIN标志位:表示请求终止连接。
4. 第四次挥手(ACK)

客户端接收到服务器的FIN报文后,返回一个ACK报文段,表示确认连接已经关闭。

客户端          服务器| ----ACK----> |
  • ACK标志位:表示确认连接关闭。
  • 确认号:为服务器的Seq+1。

至此,四次挥手完成,客户端和服务器之间的TCP连接正式关闭。

http://www.lryc.cn/news/385571.html

相关文章:

  • 详解HTTP:有了HTTP,为何需要WebSocket?
  • Spring Boot 启动流程是怎么样的
  • 【学习笔记】数据结构(三)
  • 学习python笔记:10,requests,enumerate,numpy.array
  • 经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2)
  • MySQL库与表的操作
  • TTS 语音合成技术学习
  • 小公司做自动化的困境
  • 基于pytorch框架的手写数字识别(保姆级教学)
  • 注意力机制在大语言模型中的应用
  • qt 实现对字体高亮处理原理
  • SAP中通过财务科目确定分析功能来定位解决BILLING问题实例
  • 充电站,正在杀死加油站
  • 哪个牌子的超声波清洗机好?四样超卓超声波清洗机独具特色!
  • vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则
  • Docker-Compose一键部署项目
  • 【C++】相机标定源码笔记-线激光点云处理工具类
  • 解决Transformer根本缺陷,所有大模型都能获得巨大改进
  • 如何排查Java应用的死锁
  • JS面试题1
  • Linux网络 - 再谈、详谈UDP和TCP协议
  • el-form重置后input无法输入问题
  • Java网络编程(JavaWeb的基础)
  • 鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形
  • DM达梦数据库存储过程
  • 【python】OpenCV—Color Correction
  • Java基础知识整理笔记
  • 知识图谱——Neo4j数据库实战
  • 第十一次Javaweb作业
  • 人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命