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

TCP三次握手/四次挥手

TCP三次握手

任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接

示意图
在这里插入图片描述
第一次握手:客户端PC发送一个SYN位置1(SYN=1代表请求服务端建立连接)的TCP报文发送给要建立TCP连接的Server,此时Seq序列号值为a(随机值),由于没有收到Server发来的任何报文,所以Ack确认序列号为0
第二次握手:Server收到SYN标置位报文后,会对报文进行应答,发给PC的应答报文不仅有SYN置位(此时Seq的序列号值b为随机值),还会有ACK置位来说明已经收到PC发送的报文(因为PC1发来SYN置位消耗了一个序号为a的TCP数据,因此Server收到后,Ack的序列确认号要使用a+1来进行确认)。
发送的确认报文段包含以下字段:
SYN=1,同意建立新连接(SYN置位)
Seq=b, 服务端给返回确认的报文,加上自己的序列号
Ack_seq=a+1, 表示已经收到seq=a的报文段,并期望后续接收a+1序号的报文
ACK=1 确认收到请求报文(ACK置位)

第三次握手:客户端收到服务器的主动请求建立连接和确认报文时,客户端无需应答服务器的确认报文,但需要对服务器主动请求做应答,所以只是ACK置位,SYN不置位,Seq=a+1(Server期望的序列号值),Ack_seq=b+1(
TCP连接建立
(注意:ACK标志位和ACK确认序列号是两码事,不要混淆)

抓包分析

在这里插入图片描述

第一次握手,SYN置位,Seq=2755731984

在这里插入图片描述

第二次握手,SYN、ACK置位,表示收到了客户端发来的请求,所以,Ack确认序列号=2755731984+1,同时发送自身的序列号Seq=3747234003

第三次握手,ACK置位,Ack的确认序列号=3747234003+1在这里插入图片描述

握手成功后,服务器(12.2)开始发送数据,共发送了四次,第一、二次都是9字节,第三、四次分别是28字节和11字节,所以总共发了9+9+28+11=57字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当客户端(12.1)收到服务器发送的数据后,回复一个Ack确认报文,予以确认,发送ACK为57+1

在这里插入图片描述

四次挥手

当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。

在这里插入图片描述

  1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
  2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。

相关文章:

TCP三次握手/四次挥手

TCP三次握手 任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接示意图 第一次握手:客户端PC发送一个SYN位置1(SYN1代表请求服务端建立连接)的TCP报文发送给要建立TCP连接的Server,此…...

Python程序员看见一个好看的手机壁纸网站,开撸!

人生苦短,我用python 最近好像没什么大事, .那就采集一下小——姐——姐————看下吧~ python 安装包资料:点击此处跳转文末名片获取 最近有同学的爬虫代码出了bug,给问我怎么改 于是就发现了这个好看的手机壁纸网站。 这个图片应该是违规…...

浏览器工作原理

一、JavaScript 的历史 JavaScript(简称JS)Web前端开发的脚本语言。 它诞生1995年,由网景公司的 Brendan Eich 开发。最初,JavaScript 被设计用于在网页上嵌入动态内容和交互式功能。 1996年,JavaScript 1.1 成为国…...

对在使用容器HashSet存放自定义对象时重写其类的hashcode和equals方法的几点认识

判断是否是相同对象时,hashcode和equals方法的调用顺序 先调用hashcode()方法,再调用equals()方法如果hashcode()方法得到的哈希值不同,那么两个对象一定不相同,不作后续判断如果hashcode()方法得到的哈希值相同,那么…...

Java集群:单体架构升级到集群架构(二)实现session共享

默认情况下,session是保存在TOMCAT服务器内存中的,如果我们有两个TOMCAT,它们的session是没有共享的。我们这回要做的就是把session保存在redis中,这样两个TOMCAT就可以共享session了。其实这货的详细原理还是很复杂的&#xff0c…...

MySQL索引及索引失效的分析(MySQL8.0.19)

目录索引数据结构主键索引非主键索引索引在什么时候是有效的?字符串比较大小btween and索引数据结构 主键索引 我们先来看看索引的数据结构,以及我们是如何利用索引来搜索数据的。MySQL的数据存储结构是B树,在叶子节点存储了数据行&#xff…...

第一个 Django 应用

1. 创建项目 1.1 新建项目 首先新建一个项目,名为 mysite,命令如下: django-admin startproject mysite # 或用 django-admin.py运行成功,生成一些目录: mysite/manage.py # 管理 Django 项目的命令行工具mysit…...

001-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/

推荐阅读 000-从零开始的数据结构与算法 001-01-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/ 002-两数相加 add two numbers 003-无重复字符的最长子串 Longest Substring Without Repeating Characters 004-寻找两个正序数组的中位数 005-最长回文子串 Lon…...

Nginx学习笔记(三)Linux环境下Nginx的安装和部署

目录一、官网下载二、配置基本信息1.上传 Linux2.解压3.安装编译环境4.配置基本信息4.1 配置失败原因(1):没有安装C编译环境4.2 配置失败原因(2):没有安装 PCRE 依赖4.3 配置失败原因(3):没有安装 zlib 依赖5.查看文件列表三、编译安装四、配…...

【十二天学java】day05--数组和循环高级

**# 1.数组 概念: 指的是一种容器,可以同来存储同种数据类型的多个值。 但是数组容器在存储数据的时候,需要结合隐式转换考虑。 比如: 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的&#…...

用队列实现栈和用栈实现队列(C 语言)

目录 一、用队列实现栈 二、 用栈实现队列 一、用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int…...

albedo开源框架配置多数据源

前言&#xff1a;公司框架项目一直都没认真阅读过&#xff0c;最近项目需要连接oracle数据&#xff0c;所以尝试使用框架连接多数据库。添加多数据源插件&#xff1a;我们在项目的插件模块内添加多数据源插件&#xff1a;albedo-dynamic-datasource<?xml version"1.0&…...

22张图带你了解IP地址有什么作用

了解IP地址 1、IP地址的格式 在IP协议的报文中&#xff0c;可以得知IP地址是有32个比特&#xff0c;IP地址在计算机中是以二进制的方式处理的&#xff0c;如果全部以二进制的形式来表示&#xff0c;使用跟表达都非常的困难&#xff0c;所以为了人类方便记忆&#xff0c;采用了…...

121.Android 简单的人工智能聊天项目,chatAi,AI聊天项目,GPTAi

//首页xml布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"mat…...

C++ this指针详解

this 是 C 中的一个关键字&#xff0c;也是一个 const 指针&#xff0c;它指向当前对象&#xff0c;通过它可以访问当前对象的所有成员。所谓当前对象&#xff0c;是指正在使用的对象。例如对于stu.show();&#xff0c;stu 就是当前对象&#xff0c;this 就指向 stu。下面是使用…...

CSS 实现六边形柱状图

前言 &#x1f44f;CSS 实现六边形柱状图 速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义全局css变量&#xff0c;柱状宽度为–w&#xff0c;最大高度为–h&#xff0c;柱形整体为渐变色&#xff0c;定义上部分颜色为…...

什么是推挽输出,开漏输出?

这篇文章是看B站“工科男孙老师”这个视频的笔记推挽 开漏 高阻 这都是谁想出来的词&#xff1f;&#xff1f; 我觉得讲的很好&#xff0c;做一下笔记 1.什么是IO输出三态 一共有&#xff1a;高电平, 低电平&#xff0c;浮空/高阻态 三种IO态 2.推挽输出 推挽输出能够表示高、…...

【图像分割】Unet系列深度讲解(FCN、UNET、UNET++)

【图像分割】Unet 深度讲解 文章目录【图像分割】Unet 深度讲解1. 介绍1.1 背景介绍&#xff1a;1.2 医学图像特点1.3 图像分割是什么2. Unet发展历程&#xff08;FCN、Unet、Unet&#xff09;2.1 全卷积网络-FCN2.1.1 FCN介绍&#xff1a;2.1.2 FCN框架2.1.3 反卷积层2.1.4 输…...

list底层的简单实现(万字长文详解!)

list底层的简单实现 文章目录list底层的简单实现list_node的实现&#xff01;list_node的构造函数list的迭代器&#xff01;——重点&#xff01;list迭代器的成员变量迭代器的构造函数* 重载前置 重载后置 重载前置-- 重载后置-- 重载! 重载 重载-- 重载list的const迭代器——…...

学习Linux只要学会这个命令就够了!

大家好&#xff0c;我是良许。 这段时间又是搬家&#xff0c;又是找新办公室&#xff0c;现在终于安顿下来了&#xff0c;有时间给大家分享干货了。 今天给大家介绍一个 Linux 超级实用命令&#xff0c;有了这个命令&#xff0c;你就可以愉快使用 Linux 上几乎所有常用命令了…...

电气工程优化调度Matlab代码优化与注释那些事儿

优化调度修改、注释、matlab代码&#xff0c;主要为但不限于电气工程优化调度相关方向 主要包括&#xff0c;但不限于&#xff1a; 1、在原有程序基础上替换算法&#xff1b; 2、修改优化调度程序yalmip求解器ipopt&#xff1b; 3、新买的代码没注释&#xff0c;可以注释并可以…...

为什么越来越多的STM32项目转向HAL库?从寄存器封装层次看开发效率提升

为什么STM32开发者纷纷拥抱HAL库&#xff1f;深度解析现代嵌入式开发效率革命 在嵌入式开发领域&#xff0c;STM32系列单片机凭借其出色的性能和丰富的生态&#xff0c;已成为工程师们的首选平台。然而&#xff0c;随着产品迭代速度的不断加快&#xff0c;开发效率成为衡量技术…...

StructBERT模型Java八股文知识库构建:面试题相似度检索与去重

StructBERT模型Java八股文知识库构建&#xff1a;面试题相似度检索与去重 1. 引言 如果你是负责招聘的技术面试官&#xff0c;或者是在线教育平台的题库维护者&#xff0c;下面这个场景你一定不陌生&#xff1a;新收集到一道关于“Java中HashMap和ConcurrentHashMap的区别”的…...

避坑指南:ThingsBoard部件开发中5个常见错误与优化方案(附跑马灯Demo代码)

ThingsBoard部件开发实战&#xff1a;5个高频踩坑点与性能优化技巧&#xff08;含跑马灯完整实现&#xff09; 最近在技术社区看到不少开发者讨论ThingsBoard部件开发中的"玄学问题"——明明按照文档操作却出现各种诡异现象。作为经历过完整产品开发周期的技术负责人…...

专业级跨平台资源下载利器:res-downloader一站式网络资源嗅探解决方案

专业级跨平台资源下载利器&#xff1a;res-downloader一站式网络资源嗅探解决方案 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: http…...

基于PyTorch Geometric的交通网络流量预测与优化

基于PyTorch Geometric的交通网络流量预测与优化 【免费下载链接】pytorch_geometric Graph Neural Network Library for PyTorch 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric 问题定义&#xff1a;破解城市交通网络的复杂性挑战 交通网络的图…...

ASPP模块的演进与优化:从DeepLab v2到v3+的多尺度语义分割实践

1. 多尺度语义分割的挑战与ASPP的诞生 想象一下你要给一张街景照片中的每个像素分类——哪些是道路、哪些是车辆、哪些是行人。最大的困难是什么&#xff1f;是远处的小车和近处的大卡车可能属于同一类别&#xff0c;但尺寸差异巨大。这就是语义分割中的多尺度问题&#xff0c;…...

雯雯的后宫-造相Z-Image-瑜伽女孩实战教程:结合ControlNet实现精准体式控制

雯雯的后宫-造相Z-Image-瑜伽女孩实战教程&#xff1a;结合ControlNet实现精准体式控制 1. 从零开始&#xff1a;环境准备与模型部署 想要生成专业的瑜伽女孩图片&#xff0c;首先需要搭建好环境。雯雯的后宫-造相Z-Image-瑜伽女孩是一个专门针对瑜伽场景优化的文生图模型&am…...

学习记录:数据预处理流程全解析

学习记录&#xff1a;数据预处理流程全解析 在大数据分析过程中&#xff0c;数据预处理是极为关键的环节&#xff0c;它直接影响到后续分析结果的准确性和可靠性。近期深入学习了数据预处理的各个流程&#xff0c;包括数据清洗、数据集成、数据变换和数据归约&#xff0c;下面将…...

Wan2.2-I2V-A14B在微信小程序开发中的应用:实时图片转视频功能实现

Wan2.2-I2V-A14B在微信小程序开发中的应用&#xff1a;实时图片转视频功能实现 1. 引言 "一张照片能变成视频吗&#xff1f;"这是很多社交类小程序用户常有的疑问。想象一下&#xff0c;用户在电商小程序上传商品图片后&#xff0c;系统自动生成一段展示视频&#…...