Tcp协议中的3次握手与4次挥手过程分析

2023-10-26

转载https://blog.csdn.net/u012824097/article/details/52490091

客户端与服务端的通信中步骤

  • 1建立Tcp连接
    • 3次握手
  • 2再进行数据传输
  • 3数据传输完成后,断开连接。
    • 4次挥手

 

建立Tcp连接

1 Client ---> Server:(员工:老板看到我发的消息没)

设置SYN=1,seq=J,并将该数据包和SYN请求信号发送给Server,Client进入syn_sent(发送)状态,等待Server确认。

2Server --->Client :(老板:看到了,你确定下看到我消息没)

接收数据包后,设置SYN=1,ACK=1,ack=J+1 ,seq=K,发送给Client,表示确认收到了Client的请求,Server进入syn_rcvd(已收到)状态;

3 Client---> Server:(员工:我也收到你的回复的,你看下收到我的回复了没,收到说明我们通信连接成功了)

Client:检查是否 ACK=1 && ack=J+1,如果是则设置ACK=1,ack=K+1,并将数据包发送给Server;

Server:检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入established(确认)状态,三次握手完成,

 

 

注意

半连接

在三次握手过程中,Server发送SYN+ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect)

SYN攻击

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:

 

 

 

断开连接:

 

Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

1 Client---> Server(数据发送完了,关闭连接吧)

Client发送一个FIN,表示Client要发送的数据已经发送完成,请求结束连接,Client进入fin_wait_1状态;

2 Server---> Client(收到你的信息,请确定你也收到我的信息)

Server收到Client的FIN后,会向Client发送一个ACK,表示收到了Client的FIN请求,确认序号为收到序号(A)+1(即ack=A+1),Server进入close_wait状态(此时Server可能没有完成向Client的数据传输);

3 Server---> Client(收到你的信息,我的信息已发送完毕,请确定收到我的信息)

 当Server完成向Client的数据传输后,向Client发送一个FIN ,,表示Server已经完成发送,Client可以断开连接,Server进入last_ack状态;

4 Client---> Server(收到你的信息,我过一定就关闭了,你也关闭吧)

 Client:接收到Server的FIN后,Client进入time_wait状态,并向Server发送一个ACK,确认序号为收到序号(C)+1(ack=C+1)

Server:检查客户端信息正确,Server进入closed状态,Client断开连接,Server关闭连接,四次挥手完成。

 

 

注意

在time_wait状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tcp协议中的3次握手与4次挥手过程分析 的相关文章

  • Tcp协议中的3次握手与4次挥手过程分析

    转载https blog csdn net u012824097 article details 52490091 客户端与服务端的通信中步骤 1建立Tcp连接 3次握手 2再进行数据传输 3数据传输完成后 断开连接 4次挥手 建立Tcp连
  • 定时任务框架Quartz-(一)Quartz入门与Demo搭建

    一 什么是Quartz 什么是Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目 完全由Java开发 可以用来执行定时任务 类似于java util Timer 但是相较于Timer
  • JAVA中的DO、DTO、BO、AO、VO、POJO

    定义 DO Data Object 与数据库表结构一一对应 通过DAO层向上传输数据源对象 DTO Data Transfer Object 数据传输对象 Service或Manager向外传输的对象 BO Business Object
  • IDEA自带plantUML绘制时序图

    一 时序图的作用 时序图 Sequence Diagram 又名序列图 循序图 是一种UML交互图 它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作 它可以表示用例的行为顺序 当执行一个用例行为时 其中的每条消息对应一个类操作
  • 【Python案例】一键自动抠图生成证件照

    0 效果与体验 不想去照相馆 担心肖像隐私被第三方获取 不会抠图 本文实现基于人工智能的一键自动抠图生成证件照 在进入正文之前 先看最终效果 为了让读者快速体验 我写了个小程序 证照工具箱 可打开直接体验 1 人脸检测 在制作证件照时 首选
  • Java进阶--Java垃圾回收机制全面解析

    本文同步发布在我的个人博客 如需转载请注明出处 提起Java的垃圾回收机制大家应该都有所了解 它不仅是面试的常客 也是Java体系中相当重要的一块知识 深入理解Java的GC机制 不仅有助于我们在开发中提高程序的性能 更有了在面试官面前炫
  • java会话技术--02--服务器session共享

    java会话技术 02 服务器session共享 1 原理图 2 代码实现 2 1 接口代码 package cn zhou common web session import java io Serializable import jav
  • Unsafe学习

    一 介绍 一个管理内存的类 Unsafe类是 final 的 不允许继承 且构造函数是private的 使用单列模式模式获取类对象 1 1 测试的类 public class UnsafeBean private static int st
  • activiti7执行流程详解

    什么是工作流 官方定义 工作流是将一组任务组织起来以完成某个经营过程 定义了任务的触发顺序和触发条件 每个任务可以由一个或多个软件系统完成 也可以由一个或一组人完成 还可以由一个或多个人与软件系统协作完 我的理解 工作流就是针对程序的业务流
  • mybatie+spring+mvc使用反射遇到的问题

    问题1 使用反射调用 serviceImpl时 使用注解的 Dao对象是空 解决办法在 serviceImpl类中 直接去spring容器获取bean 问题2 在一个类TestServiceImple的方法中 使用事务控制 中调用另外一个类
  • java会话技术--03--Session覆盖问题

    java会话技术 03 Session覆盖问题 代码位置 https gitee com DanShenGuiZu learnDemo tree master sessionCookie learn 1 现象 同一域名 同一个服务 不同的端
  • STM32F103ZET6【标准库函数开发】------02.2 按键实现短按、长按、双击的效果(非中断方式)

    一 硬件介绍 正点原子战舰开发板 LED0 PB5 LED1 PE5 KEY0 PA4 二 实现目的 开机LED0 LED1均熄灭 单击KEY0 LED0点亮 LED1熄灭 双击KEY0 LED0熄灭 LED1点亮 长按 LED0 LED1
  • Java多线程两种实现

    在java中实现多线程的方式有两种 一种是继承Thread类 另一个是实现Runnable接口 对于两种实现 各有优缺点 接下来进行对比总结一下 这两种方法 都可以实现多线程 以下为两种实现的写法 继承Thread类的方式 package
  • Java原生代码连接MySQL数据库

    本章我们介绍 如何用java原生代码实现连接MySQL数据库并实现基本的增 删 改 查操作 为了便于演示 首先我们使用Navicat Premium新建一个user表并添加如下数据 我们需要导入连接MySQL所需要的jar包 jdbc驱动包
  • TCP和UDP的区别和优缺点

    TCP与UDP区别 1连接方式 TCP 面向连接 UDP UDP是无连接的 即发送数据之前不需要建立连接 2提供服务 TCP 可靠的服务 传送的数据 无差错 不丢失 不重复 且按序到达 通过校验和 重传控制 序号标识 滑动窗口 确认应答实现
  • Kafka3.1安装配置,配置Kafka集群,Zookeeper集群

    1 下载Kafka安装包 Kafka官网下载地址 https kafka apache org downloads 2 解压压缩包 tar zxvf kafka 2 12 3 1 0 tgz c kafka 3 进入配置文件目录 cd ka
  • java AbstractOwnableSynchronizer与AbstractQueuedSynchronizer简析

    简介 AbstractQueuedSynchronizer全限定名java util concurrent locks AbstractQueuedSynchronizer 继承自java util concurrent locks Abs
  • Java 常用API

    Java 常用API JFC Java类库 是系统提供的已实现的标准类的集合 是Java编程的API Application Program Interface 可帮助开发者方便 快捷地进行软件开发 Java按其不同的功能分成不同的包 常用
  • JAVA进阶(三)——注解和反射

    文章目录 三 注解和反射 3 1 注解的概念 什么是注解 Annotation Annotation的作用 Annotation的格式 Annotation在哪里使用 3 2 内置注解 Override 定义在java lang Overr
  • java Hashtable及其子类Properties 源码分析(通俗易懂)

    目录 一 前言 二 Hashtable详解 1 简介 2 特点 3 底层实现 4 HashMap VS Hashtable 三 Properties详解 1 简介 2 特点 3 具体使用 可以不看 四 完结撒 一 前言 大家好 本篇博文是对

随机推荐

  • linux 服务器搭建 elasticsearch(一)

    1 安装java jdk 环境 查看可安装版本 yum y list java 选择一个java版本进行安装 这里我们希望安装java1 8 因为我们的机器是64位的 所以选择安装java 1 8 0 openjdk devel x86 6
  • Linux编程复习(3)——信号与中断

    信号是响应某些状况而产生的事件 进程在接收到信号时会采取相应的行动 某些状况就是指某些条件错误 如内存段冲突 浮点处理器错误或者非法指令等 信号是在软件层次上对中断的一种模拟 所以信号也称为是软中断 信号与中断的相似点 1 都采用相同的额异
  • OpencvX.X中Mat与IplImage类型的相互转换

    1 Opencv4 x中Mat与IplImage的转换 1 Mat转IPLImage IplImage img cvIplImage mat 2 IplImage转Mat Mat cvarrToMat const CvArr arr boo
  • 从异步调用返回响应:多语言指南

    Asynchronous调用是现代编程的基础 可以有效地处理可能需要时间的任务 例如网络请求或文件操作 然而 response从这些asynchronous电话中获取信息可能会让新手感到困惑 在本指南中 我们将探讨如何从不同编程语言的异步调
  • 4款堪称神器的电脑黑科技软件,让人相见恨晚

    Syncthing 一款免费的开源跨平台文件同步客户端 服务器工具 支持Linux Windows OSX FreeBSD以及Solaris等系统 具有一个强大的响应式的网页管理界面 能够帮助用户简便地添加 删除和管理通过网络进行同步的文件
  • TX2上如何查看cuda版本

    如果知道安装的路径 一般都是在local下 可以直接查看 nvidia tegra ubuntu cat usr local cuda version txt CUDA Version 9 0 252 能看到机器上的CUDA版本是9 0 2
  • 国家级、省、市专精特新申报条件汇总

    国家级专精特新硬性条件 1 企业成立3年及以上 2 企业从业人员1000人以下或营业收入40000万元以下 3 已认定为省级专精特新 不硬性规定 有优先推荐权 4 截至上年末的近2 年主营业务收入或净利润的平均增长率达到5 以上 企业资产负
  • 构建方便安全的HttpClient工具类

    构建方便安全的HttpClient工具类 前言 开始 引入核心依赖 其它依赖 封装工具类 1 UrlEntity 2 HttpClientException 3 IoUtil 4 UrlUtil 5 SingletonUtil 开始构建 6
  • C语言—随机种子的设定

    计算是CPU和内存进行交互 运算是很快的 打印时CPU 内存和显示器进行交互 运算较慢 计算机在访问输入输出设备的时候 运算速度会大大降低 1 计算 n 的阶乘 int factor int n int result 1 for int i
  • 从gitHub当中更新项目synchronize Update fetch pull 项目的区别

    从gitHub更新项目 马克 to win 马克 java社区 防盗版实名手机尾号 73203 马克 to win 方法一 右击你的项目 team synchronize workspace 这样他就会去gitHub那fetch回最新的版本
  • iOS View Controller 全屏布局

    iOS View Controller 全屏布局 2014 09 08 自 iOS 7 以后苹果开始默认对 View Controller 采用全屏布局 全屏布局的意思就是 View Controller 的 layout 是填满整个屏幕的
  • MySQL——在Linux环境下安装(在线安装)

    MySQL的安装 在线安装 mysql的安装并不是比赛的内容 所以我们用比较方便的在线安装的方法 比起安装 我们更要知道如何去使用 首先看一下自己有没有安装MySQL的服务 或者自己的服务器上有没有自带的MySQL服务 rpe ga gre
  • Adapter理解

    这里也算回顾做Android开发时候遇到的一个问题吧 当时对Android中适配器的使用不是很了解 也不知道每一种适配器的局限性和用法 用的时候出现很多异 所以 适配器就我自己来看 我觉得这是一个非常重要的知识点 Adapter是用来帮助填
  • OpenGL-渲染光照球体

    3 光照 注意 a OpenGL至少会支持8个光源 即GL LIGHT0到GL LIGHT7 但是开启过多的光源会导致程序运行速度下降 b GL AMBIENT GL DIFFUSE GL SPECULAR这三种属性是光源和材质所共有的 如
  • 【华为OD机试真题 JAVA】查找众数及中位数

    JS版 华为OD机试真题 JS 查找众数及中位数 标题 查找众数及中位数 时间限制 1秒 内存限制 262144K 语言限制 不限 1 众数是指一组数据中出现次数量多的那个数 众数可以是多个 2 中位数是指把一组数据从小到大排列 最中间的那
  • python错误:AttributeError: 'list' object has no attribute 'sorted'

    列表学习的错误 AttributeError list object has no attribute sorted 没有注意sort 和sorted 的区别 sort 是方法 sorted 是函数 方法是调用 函数进行数据传递 So 区别
  • Shadow Mapping 的原理与实践

    早在上世纪七十年代末 Williams在他的 Casting Curved Shadows on Curved Surface 一文中提出了名为Shadow Map的阴影生成技术 之后 他人在此基础上针对相关问题做了许多改进 现在 Shad
  • Wireshark分析DHCP

    DHCP DNS和HTTP是3种常见的高层协议 一 动态主机配置协议DHCP 1 DHCP简介 DHCP Dynamic Host Configuration Protocol 动态主机配置协议 是一个应用层协议 当我们将客户主机ip地址设
  • Spring Boot获取登录用户IP

    控制器方法 RequestMapping value getIp method RequestMethod POST ResponseBody public String getIp HttpServletRequest request r
  • Tcp协议中的3次握手与4次挥手过程分析

    转载https blog csdn net u012824097 article details 52490091 客户端与服务端的通信中步骤 1建立Tcp连接 3次握手 2再进行数据传输 3数据传输完成后 断开连接 4次挥手 建立Tcp连