三次握手,四次挥手基本概念及其抓包演示

目录

1.tcp三次握手

2.tcp四次挥手

3.思考问题(面试常考)

3.1 三次握手时可能出现什么攻击?

3.2 为什么是三次握手,可不可以是两次,为什么?

​编辑3.3 四次挥手的过程可以用三次完成吗?

4.抓包演示三次握手四次挥手


1.tcp三次握手

tcp协议特点:面向连接的,可靠的,流式服务,

udp协议特点:无连接的,不可靠的,数据报服务

TCP协议提供的是:面向连接的,可靠的,字节流服务.使用TCP协议通信的双方必须先建立连接,才能开始数据的读写.双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输.TCP连接是全双工的,双方的数据可以通过一个连接进行读写,完成数据交换之后,通信双方都必须断开连接以释放系统资源.

三次握手发生在发起链接 connect 的时候:

tcp协议报头:

6位标志位包含如下几项:
URG标志:表示紧急指针(urgent pointer)是否有效,

ACK标志:表示确认号是否有效.我们称携带ACK标志的TCP报文段为确认报文段

PSH标志:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中).

RST标志:表示要求对方重新建立连接,我们称携带RST标志的TCP报文段为复位报文段

SYN标志:表示请求建立一个连接.我门称携带SYN标志的TCP报文段为同步报文段

FIN标志:表示通知对方本端要关闭连接了.我们称携带FIN标志的TCP报文段为结束报文段

2.tcp四次挥手

什么时候开始挥手?服务器或者客户端执行close的时候;

刚好被动断开方收到要关闭的报文的时候也执行了close;也就是双方同时close,那么此时四次挥手也就演变为了三次挥手.否则,一定是需要四次挥手的.

3.思考问题(面试常考)

3.1 三次握手时可能出现什么攻击?

1.SYN洪泛攻击(SYN Flood Attack)客户端不断向服务器端发送连接请求,而不执行三次握手的第三步操作,就是只完成了三次握手的前两步操作,存在大量的半开连接,消耗服务器的连接资源。

防御:服务器端在分配资源时检查一下客户端是否是合法用户

2.DDOS攻击(分布式拒绝服务)

随着技术的进步,服务器端分配资源的时候会判断是否合法,以防止洪泛攻击,DDOS攻击是伪造合法用户。

3.2 为什么是三次握手,可不可以是两次,为什么?

不可以,原因1:因为容易受到攻击,参考第一问;如果不考虑攻击的话,原因:为了防止已经失效的连接请求报文段突然又传到了服务器端,具体如下:


3.3 四次挥手的过程可以用三次完成吗?

可以,第二步和第三步合在一起(没有时间差)。刚好被动断开方收到要关闭的报文的时候也执行了close;也就是双方同时close,那么此时四次挥手也就演变为了三次挥手.否则,一定是需要四次挥手的.

4.挥手时,可能受到什么攻击?

第三步容易受到攻击,第三步发FIN的时候,是被动断开,主动断开方最先发送结束报文想要断开链接,发送后主动方进入到TIME_WAIT状态(持续大概两分钟),在此期间,被动方不同意断开连接,不停的发FIN。主动方就认为,被动方没有收到ACK,这个连接就一直存在,无法断开。但是这种情况需要封装底层报文,一般不会这么做,除非是专门做攻击。

4.抓包演示三次握手四次挥手

使用tcpdump可以抓包观察TCP连接的建立与关闭.该命令需要管理员权限,格式如下:

(假设两个测试用的主机IP地址为192.168.6.104和192.168.6.146)

sudo tcpdump -i ens33 -nt '(src 192.168.6.104 and dst 192.168.6.146) or (src 192.168.6.146 and dst 192.168.6.104 )'

ens33表示是虚拟机 

注意:这里如果是用回环地址测试,可以这样写:sudo tcpdump -i lo

三次握手抓包过程:

四次挥手抓包过程:

抓包数据的Flag含义:

S:SYN;同步;表示开始会话请求

F:FIN ;结束; 结束会话

R:RST;复位;中断一个连接

P:PUSH;推送: 数据包立即发送

U:URG;紧急

E:ECE;显式拥塞提醒回应

W:CWR;拥塞窗口减少

. :没有Flag(除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】一文详细介绍 plt.rcParamsDefault 在 Matplotlib 中的原理、作用、注意事项

【Python】一文详细介绍 plt.rcParamsDefault 在 Matplotlib 中的原理、作用、注意事项 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程…

C++的类与对象(三):构造函数、析构函数、对象的销毁顺序

目录 类的6个默认成员函数 构造函数 语法 特性 析构函数 特性 对象的销毁顺序​​​​​​​​​​​​​​ 类的6个默认成员函数 问题:一个什么成员都没的类叫做空类,空类中真的什么都没有吗? 基本概念:任何类在什么都不…

软考73-上午题-【面向对象技术2-UML】-UML中的图4

一、构件图(组件图) 1-1、构件图的定义 展现了,一组构件之间的组织和依赖。 构件图专注于系统的静态实现图。 构件图与类图相关,通常把构件映射为一个、多个类、接口、协作。 【回顾】: 类图展示了一组对象、接口、…

SpringCloud-SpringBoot读取Nacos上的配置文件

在 Spring Boot 应用程序中,可以使用 Spring Cloud Nacos 来实现从 Nacos 服务注册中心和配置中心读取配置信息。以下是如何在 Spring Boot 中读取 Nacos 上的配置文件的步骤: 1. 引入依赖 首先,在 Spring Boot 项目的 pom.xml 文件中添加 …

Android Kotlin知识汇总(一)编程语言

在 2019 年 Google I/O 大会上宣布今后将优先采用 Kotlin 进行 Android 开发。Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。如果您想构建 Android 应用,建议您从 Kotlin 开始着手&#x…

分享axios+signalr简单封装示例

Ajax Axios Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 从浏览器创建 XMLHttpReque…

MySQL-QA-异常问题及解决方案(持续更新)

MySQL-Q&A(持续更新) 1.1 PID文件找不到 问题描述 错误详情: ERROR!The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid) 解决方案 首先排查配置文件,一般路径为:/etc/my.cnf 检查…

D2力扣滑动窗口系列

滑动窗口算法(Sliding Window): 滑动窗口算法(Sliding Window):在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。 滑动操作&am…

【Ubuntu】gonme桌面的 gdm 和 lightdm 区别

总结:都可以 gdm: 【Gnome Display Manager】 完整,体积大 lightdm: 【Light Display Manager】 轻量

甜甜圈和贪吃蛇的后续

代码复现-项目复现 代码复现 云课五分钟-02第一个代码复现-终端甜甜圈C-CSDN博客 项目复现 云课五分钟-03第一个开源游戏复现-贪吃蛇-CSDN博客 不同的地图 加入班级和标识 循序渐进 这些案例都是来源网络,只是方便熟悉一下云课使用过程。 此部分学生掌握情况非…

OpenCV 图像的几何变换

一、图像缩放 1.API cv2.resize(src, dsize, fx0,fy0,interpolation cv2.INTER_LINEAR) 参数: ①src :输入图像 ②dsize:绝对尺寸 ③fx,fy:相对尺寸 ④interpolation:插值方法 2.代码演示 import cv2 …

携手亚信安慧AntDB,在数智化浪潮中乘风破浪

随着大数据时代的到来,对数据库的需求愈发强烈。在这一背景下,国产数据库逐渐崭露头角,亚信安慧AntDB作为重要的代表产品之一正积极参与到激烈的市场竞争中。亚信安慧AntDB不仅追求技术的革新和突破,同时也致力于满足用户日益增长…

AVCE - AV Evasion Craft Online 更新 8 种加载方式 - 过 WD 等

免责声明:本工具仅供安全研究和教学目的使用,用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任,且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规,并理解并同意本声明…

2023年中国高校大数据挑战赛D题参考论文发布(全网首发)

腾讯文档】2023年大数据挑战赛资料说明 https://docs.qq.com/doc/DSEpWUVFySm1ObFB0 基于数据分析的行业职业技术培训能力评价 摘要 中国是制造业大国,产业门类齐全,每年需要培养大量的技能娴熟的技术工人进入工厂。本文将基于题目给出的数据&#x…

Java——正则表达式详解

目录 Java正则表达式1、正则表达式语法1.1、基本的元字符1.2、数量元字符1.3、位置元字符1.4、特殊字符元字符1.5、回溯引用和前后查找1.6、大小写转换1.7、匹配模式 2、Java中的正则表达式2.1、概述2.2、获取匹配位置2.3、捕获组 3、匹配单个字符3.1、匹配纯文本3.2、匹配任意…

讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so

1.需求 最近linux下的Qt项目中要连接oracle数据库,用户需要我们访问他们的oracle数据库,查询数据 2.遇到的问题 qt连接oracle数据库需要oracle的驱动库libqsqloci.so插件,需要编译下,之前没有编译过,看了网上的…

蓝桥杯真题讲解:异或和之和 (拆位、贡献法)

蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 二、正解代码 //拆位考虑 #include<bits/stdc.h> #define endl &…

【c++】string类的使用及模拟实现

1.我们为什么要学习string类&#xff1f; 1.1 c语言中的字符串 我们先了解一下什么是OOP思想 OOP思想&#xff0c;即面向对象编程&#xff08;Object-Oriented Programming&#xff09;的核心思想&#xff0c;主要包括“抽象”、“封装”、“继承”和“多态”四个方面。 抽象…

JDBC和连接池

JDBC和连接池 大纲 JDBC连接数据库的方式JDBCUtils事务 具体案例 JDBC 需求&#xff1a;满足Java程序能对多个不同的数据库进行操作&#xff0c;而创建了一种接口&#xff0c;实现对数据库的规范 连接数据库的方式 1.方法1 先创建一个Driver对象&#xff0c;然后设置…

【RabbitMQ】RabbitMQ的交换机

交换机类型 在上文中&#xff0c;都没有交换机&#xff0c;生产者直接发送消息到队列。而一旦引入交换机&#xff0c;消息发送的模式会有很大变化&#xff1a;可以看到&#xff0c;在订阅模型中&#xff0c;多了一个exchange角色&#xff0c;而且过程略有变化&#xff1a; Pub…