前言

简单抓包一下3次握手。

正文

握手的目标:

  1. 同步sequence 序列化

初始化序列化ISN(Initial Sequence Number)

  1. 交换tcp 通信参数

如MSS、窗口比例因子、选择性确认、指定校验和算法。这个后面讲。

简单的在linux 抓取一下:

这里面就是确认机制哈:

这上面标识说一下哈:s 就是syn的意思,然后这个.就是ack的意思。

然后这里有一个s.标识发送 syn 加 ack,所以不要认为一个包就是一个意思哈,可能包含几种意思,一般来说是两种。

为什么两边的seq 不一样呢?且他们为什么不从0开始呢?

这是因为网络中报文会延迟会重发也可能丢失造成的影响。(后面补系列会这个问题)

SYN:同步序列编号(Synchronize Sequence Numbers)。

握手的第一个报文:

握手的第二个报文:

第三次握手:

演示一下哈,给大家抓个包助助兴。

看这个我们的发起端口是61110,然后对方的目的端口是80。

发起这个握手请求。

然后看下被连接方在干啥。

然后连接方又发了一个ack过去:

这里看到一般发syn的时候一般有一个叫做options的,这个后面跟滑动窗口有关。

状态变迁:

这里说一下状态哈,大概连接的时候有下面几个状态:

  1. closed
  2. listen
  3. syn-sent
  4. syn-received
  5. established

比如a 是客户端,b是服务端。

a 一开始是closed 状态,然后b是listen状态。

然后a主动发送sync,然后就变成了syn-send,b收到就变成了syn-received.

当a 收到sync+ack 就变成了established状态,b发送ack后也变成了established 状态。

这里讲一下syn洪流攻击的原理哈。

上面看到这个图,就是一直发送syn,然后对方就要发送给我syn+ack,但是我不回。

这样对方就要重新发,一直保持这个状态,或者超时。就是操作系统回这个syn+ack 是在一个队列里面,如果排队很长,自然就慢了。

这里想解释一下为什么3次握手的时候,为什么ack要加一,或者说为什么要消费掉一个序列号。

很多人解释是是因为发送方包含了SYN标志位或FIN标志位,认为标志位也是一种数据,但我感觉还是没有解释为什么要这么做。

假设a发送了一个sync包0为b,但是没有响应,然后又发了一个,b回了一个ack 为0 加他的sync假设是1000吧,这意味着下次a发送的还应该是0.

然后a 发送ack为1000给b,这个时候。这个时候第一个没有响应的包到了,那么这个时候b就不确认a的包,到底是想重新连接呢?还是说这是网络延迟包可以丢弃呢。

总之呢,就是为什么有序列号这个东西,就是为了让双方沟通起来是顺序的。

大概是整理了一下3次握手,下一节如何优化3次握手过程。

抓包整理————tcp 三次握手[九]的更多相关文章

  1. 使用 tcpdump 抓包分析 TCP 三次握手、四次挥手与 TCP 状态转移

    目录 文章目录 目录 前文列表 TCP 协议 图示三次握手与四次挥手 抓包结果 抓包分析 TCP 三次握手 数据传输 四次挥手 TCP 端口状态转移 状态转移 前文列表 <常用 tcpdump ...

  2. Java网络编程学习A轮_02_抓包分析TCP三次握手过程

    参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...

  3. 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制

    关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...

  4. Wireshark抓包分析TCP“三次握手,四次挥手”

    1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程. 2 ...

  5. wireshark抓包图解 TCP三次握手/四次挥手详解[转]

    原文链接:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6% ...

  6. wireshark抓包图解 TCP三次握手/四次挥手详解

    http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1 ...

  7. Wireshark抓包分析TCP 3次握手、4次挥手过程

    Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是 ...

  8. 抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

    功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP ...

  9. Wireshark抓包TCP三次握手数据

    抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...

  10. 网络协议抓包分析——TCP传输控制协议(连接建立、释放)

    前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...

随机推荐

  1. 玩转SpringBoot:SpringBoot的几种定时任务实现方式

    引言 在现代软件开发中,定时任务是一种常见的需求,用于执行周期性的任务或在特定的时间点执行任务.这些任务可能涉及数据同步.数据备份.报表生成.缓存刷新等方面,对系统的稳定性和可靠性有着重要的影响.Sp ...

  2. ThinkPHP6 事件的简单应用

    一.序章 ThinkPHP6的手册中关于[事件]章节的介绍都是直接文字说明,给出创建的类文件,并没有一个好的示例来进行补充说明.对于刚接触[事件]的同学在阅读理解上增加了一点点困难,本文就在此结合示例 ...

  3. sed 资源

    sed教程 菜鸟教程正则 MDN正则 正则测试工具 文本替换 s sed有多种分割符,比如你要替换路径字符串时,使用反斜杠很难看,则可以用 : 或者 _ 或者 | 这三个符号都可作为分隔符. & ...

  4. foundation部分学习记录(更正更新中……)

    foundation部分学习记录(更新中--) 从FDB的角度看,它对上层只提供有序+事务+KV存储的抽象. 设计原则 模块化分割,尽量细分且模块之间相互解耦 例如事务系统内,其提交(write pa ...

  5. C#实现FTP服务端和客户端

    目录 简介 FTP客户端 系统客户端 客户端软件 自定义客户端 FTP服务端 系统服务端 服务端软件 自定义服务端 附件 简介 FTP是FileTransferProtocol(文件传输协议)的英文简 ...

  6. 简单实用算法—分布式自增ID算法snowflake(雪花算法)

    目录 算法概述 ID结构 算法特性 算法代码(C#) 算法测试 算法概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先 ...

  7. 基于ads1292心电数据存储和状态显示

    一 前记 ads1292芯片在专业的心电采集这块应用十分广泛.随着医疗可穿戴的发展,便携式心电测量这块前景十分广阔.基于现在的几个项目,团队在这里花费了不少精力,借此机会把这个方向打造成团队的特色之一 ...

  8. 告别繁琐!1分钟带你构建RabbitMQ消息应用

    支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac. RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的 ...

  9. 干货分享 | 3个Zbrush实用减面工具分享

    一.使用Sculptris Pro Sculptris Pro是zbrush中的一个功能按钮,点击此工具按钮,同时将笔刷转换至standard笔刷,即可减去需要平滑的面. 点击开启Sculptris ...

  10. 记录--JS精粹,原型链继承和构造函数继承的 “毛病”

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 先从面向对象讲起,本瓜认为:面向对象编程,它的最大能力就是:复用! 咱常说,面向对象三大特点,封装.继承.多态. 这三个特点,以" ...