TCP三次握手和四次挥手

news2024/9/25 23:11:57

三次握手

  • ping域名为www.baidu.com,便于DNS解析。ping走的协议就包括DNSARPICMPimage-20230109150250842

  • 接着使用Wireshark去抓包,抓包这里导航栏直接过滤ip就可以了,输入ip.host == 183.232.231.174image-20230109150551142

  • 接着直接在浏览器输入百度域名www.baidu.com访问请求,Wireshark就能抓取包来分析了image-20230109150841554

  • 这里我们可以看到,本地通过ipconfig就可以看到source那一列为自己的ip地址,而且是客户端为前后各一次,服务端是第二次。

    • 第一次为SYN标记请求,全英文名我的理解是Synchronized,即为同步,表示同步连接请求;
      image-20230109151812384

    • 第二次为SYN + ACK组合标记请求,准确来说是两次请求(SYN第一次,ACK第二次),只不过优化对它进行合并了,SYN也表示连接,显而易见,想建立连接两方都要与对方发送同步包请求连接,ACK表示百度接收到了你的同步包,但怎么告知人家?用ACK = SYN(第一次握手的Sequence) + 1,算是一种默契,你收到该包后客户端完成了连接,但百度还未连接成功;
      image-20230109151909319

    • 第三次为ACK标记请求,百度第二次握手发了一个ACK标记,说明这个包是对你前一个包的回应,由前两个图可知。剩下的一个SYN标记,是表明这个包也是一个连接请求包,需要你发回ACK包,即表明我收到了,但得告知你,最后你收到后,你也成功完成连接。
      image-20230109152138802

四次挥手

  • 三次挥手需要客户端与服务端断开连接,我这里使用vmware去连接虚拟机centos来演示。跟三次握手一样,你要抓那个网络的包,你就要在这个网络中去连接,比如我的是192.168.10.1这个,用这个通过子网分配给了一台虚拟机192.168.10.100image-20230109162807968

  • 通过xsell连接后,使用命令init 0来断开连接,这会让服务器和客户端都断开连接。分清楚我是虚拟机,服务器是虚拟适配器VMnet8,因为我是在虚拟机里主动命令断开的。抓取信息如下:(将FIN顺带的ACK忽略,就是标准的四次挥手)

    image-20230109162327318

    • 第一次为FIN标记请求,表示自己要断开连接了,不会再发送消息。image-20230109162432906

    • 第二次为ACK标记请求,表示服务器收到了,然后服务器不再接收消息,但还是会发送消息,所以这是还未发送FIN包。从这个时候我还是可以接收服务器的消息的,所以我这边还不能断开。 而有些不用接收数据就可以是三次挥手,是将ACKFIN结合一起,如上图就是,只不过是发FIN请求时带上了ACK,但第一次还是发了ACK,才不会让对方以为没收到导致重发,这样才不会对网络造成阻塞。
      image-20230109162455919

    • 第三次为FIN 标记请求,这时FIN表示服务器收到我要断开连接的消息,那它也准备断开连接了,不再发送消息,那我也不必再接收了,于是我就完成挥手,原则上是可以断开了,但服务端还不知情,还是不能断开。这里要注意,其实第二次与第三次之间应该还是有很多次请求,这些请求是消息的发送和接收,不算入断开连接中的挥手,而且这些请求都跟第二次挥手以及本次挥手的Acknowledgment number相同。
      image-20230109162521403

    • 第四次是ACK标记请求,就是我要告知VMnet8我已经完成挥手了,你可以断开了。VMnet8收到就可以立即断开,而我等待2MSL时间内没收到服务端重发包就可以断开。因为MSL即为包在网络中的最大生存时间,我发一次和对方未收到超时重发。image-20230109162541330

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

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

相关文章

TikTok新规:严禁录播盗播,保护原创内容

让我们一起来看看今日都有哪些新鲜事吧!01 2023年,TikTok将在社交买家渗透率和用户使用时间上面成为美国第一 eMarketer最新预测显示,TikTok的社交买家渗透率和用户使用时间正在迅速攀升,预计将在2023年分别超过Facobook和Youtub…

全景剖析阿里云容器网络数据链路(一):Flannel

作者:余凯 本系列文章由余凯执笔创作,联合作者:阿里云云原生应用平台 谢石 对本文亦有贡献 前言 近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的 IaaS 化到现在的微服务化,客户的颗粒度精细化…

基于单机最高能效270亿参数GPT模型的文本生成与理解

作者:李鹏,王玮,陈嘉乐,黄松芳,黄俊 单位:阿里云智能机器学习平台PAI & 达摩院自然语言基础技术 概述 GPT模型能较好的处理文本生成领域的各种任务,比如文本补全,自由问答&am…

scala 流计算之 aggregate()

函数参数详解 def aggregate[B](z: >B)(seqop: (B, A) > B, combop: (B, B) > B): BB: 函数返回结果的数据类型;z:聚类前的参数的初始化值;seqop:是用于序列运算的运算符,用于计算所述集合中每个元素的总和&a…

JAVA环境安装及配置

目录 一、前言 二、JAVA下载及安装配置 1、下载SDK开发包 2、安装SDK 3、环境变量配置 一、前言 大学毕业前系统学习过JAVA,记得当时还是1.6版本,并且特意研读了我人生中第一本最厚的图书《JAVA学习笔记》。掌握了那时比较流行的框架SSH,…

场景编程集锦 - 趣谈验证码

1. 场景描述 或许是近年来电话推销机器人太泛滥了,常常搞得正常的电话销售“灰头土脸”。有人为了验证对方究竟是人还是机器,竟想出来各种各样的奇葩手段。最近一小伙接到了一个汽车推销电话,但他听声音无法判断对方是不是人工客服人员。尽管…

大数据导论笔记

视频课林子雨老师 大数据导论 网页笔记预习大数据导论 大数据导论复习笔记 一、大数据概述 1.数据的概念、类型和组织形式 数据概念 数据类型 (1)数据基本类型 数据类型包括文本,图片,音频,视频等 数据组织形式 2…

【UE4 第一人称射击游戏】30-简单的任务提示功能

上一篇:UE4 第一人称射击游戏】29-流畅的枪械移动本篇效果:到达指定位置后,右上角会出现新的任务提示信息步骤:打开“ThirdPersonCharacter”,添加一个string类型变量默认值设为“Progress Through The Level”打开“F…

.Net Core实现健康检查

ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况。运行状况检查由应用程序作为 HTTP 终结点公开。可以为各种实时监视方案配置运行状况检查终结点: 运行状况探测可以由容器业务流程协调程和负载均衡器用于检查应用的状态…

MySQL 8.0 多实例安装

规划&#xff1a;主要就是data目录和port 端口以及socket 文件路径的差异管理&#xff1a; 配置文件准备 mkdir -p /data/330{6..8}/data chown -R mysql.mysql /data/* cat > /data/3306/my.cnf <<EOF [mysqld] usermysql basedir/usr/local/mysql datadir/data/3306…

新华三命令行基础

命令使用基础命令行视图用户视图• <h3c>• 只能查看配置&#xff0c;不能修改配置只能进行查看系统视图• [h3c]• 可以查看和修改全局配置接口视图• [H3C-GigabitEthernet0/0]• 可以对接口修改配置视图的切换system-view• 从用户视图进入系统视图interface g0/0• 从…

websocket_flask

1.使用socket协议构建server client文件&#xff0c;服务端构建maskrcnn分割模型&#xff0c;客户端发送图片返回分割结果&#xff1b;使用纯socket通信&#xff0c;通信传输效率较低&#xff0c;接收数据需要1024byte连续接收代码如下#server.py import socket import torchvi…

社区发现系列03-Louvain算法分辨率

1、分辨率局限 louvain算法存在的问题&#xff1a;分辨率局限。就是说当通过优化模块度来发现社区结构时&#xff0c;网络在存在一个固有的分辨率局限&#xff0c;导致一些规模较小但是结构显著的社区淹没在大的社区中&#xff0c;无法被识别到。 造成这个问题的根本原因是模块…

曝光:超算实习生的训练模式很独特

升职无望&#xff0c;随时被裁&#xff1b;内卷压力&#xff0c;无情996现如今的打工人实惨&#xff0c;但无论客观行情如何、经济到底有多难&#xff0c;背靠国家政策支持的高级技术人才&#xff0c;任何时候都吃香。超算、先进计算就是这样的行业&#xff0c;已经被定为未来3…

持续交付-Blue Ocean 应用

Blue Ocean 提供了一套可视化操作界面来帮助创建、编辑 Pipeline 任务。Blue Ocean 特性&#xff1a;流水线编辑器&#xff1a;用于创建贯穿始终的持续交付流水线&#xff0c;是一种直观并可视化的流水线编辑器。流水线的可视化&#xff1a;对流水线的可视化表示&#xff0c;提…

vm虚拟机及Linux系统安装教程详解

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

Java集合源码学习(2)ArrayList

1 概述 ArrayList是基于数组实现的&#xff0c;是一个动态数组&#xff0c;其容量能自动增长&#xff0c;类似于C语言中的动态申请内存&#xff0c;动态增长内存。 ArrayList不是线程安全的&#xff0c;只能用在单线程环境下&#xff0c;多线程环境下可以考虑用Collections.s…

Commonsense and Named Entity Aware Knowledge Grounded Dialogue Generation

摘要 motivation&#xff1a; 以外部知识为基础&#xff0c;在对话历史背景下解释语言模式&#xff0c;如省写、回指和共同引用&#xff0c;对对话的理解和生成至关重要。 this paper&#xff1a; 在本文中&#xff0c;我们提出了一种新的开放域对话生成模型&#xff0c;该模型…

【C++】vector的使用及其迭代器失效问题

文章目录一、vector介绍二、vector使用1. 常用构造函数2. 迭代器3. 空间操作4. 增删查改5. 动态二维数组三、vector迭代器失效问题1. 扩容导致迭代器失效2. erase导致迭代器失效3. g对迭代器失效的处理一、vector介绍 vector是表示可变大小数组的序列容器。与数组一样&#xf…

vue打包exe

文章目录一、前言二、实现方法1.跑通示例代码 electron-quick-start<1>clone示例代码<2>进入项目根目录&#xff0c;下载依赖<3>测试运行2.打包自己的 vue 项目3.将vue项目整合到示例代码中打包exe<1>将打包好的 dist 文件夹复制到示例代码 electron-q…