抓包整理————tcp 三次握手[九]
前言
简单抓包一下3次握手。
正文
握手的目标:
- 同步sequence 序列化
初始化序列化ISN(Initial Sequence Number)
- 交换tcp 通信参数
如MSS、窗口比例因子、选择性确认、指定校验和算法。这个后面讲。

简单的在linux 抓取一下:

这里面就是确认机制哈:

这上面标识说一下哈:s 就是syn的意思,然后这个.就是ack的意思。
然后这里有一个s.标识发送 syn 加 ack,所以不要认为一个包就是一个意思哈,可能包含几种意思,一般来说是两种。
为什么两边的seq 不一样呢?且他们为什么不从0开始呢?
这是因为网络中报文会延迟会重发也可能丢失造成的影响。(后面补系列会这个问题)
SYN:同步序列编号(Synchronize Sequence Numbers)。
握手的第一个报文:

握手的第二个报文:

第三次握手:

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

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

发起这个握手请求。
然后看下被连接方在干啥。

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

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

这里说一下状态哈,大概连接的时候有下面几个状态:
- closed
- listen
- syn-sent
- syn-received
- 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 三次握手[九]的更多相关文章
- 使用 tcpdump 抓包分析 TCP 三次握手、四次挥手与 TCP 状态转移
目录 文章目录 目录 前文列表 TCP 协议 图示三次握手与四次挥手 抓包结果 抓包分析 TCP 三次握手 数据传输 四次挥手 TCP 端口状态转移 状态转移 前文列表 <常用 tcpdump ...
- Java网络编程学习A轮_02_抓包分析TCP三次握手过程
参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...
- 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...
- Wireshark抓包分析TCP“三次握手,四次挥手”
1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程. 2 ...
- 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% ...
- 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 ...
- Wireshark抓包分析TCP 3次握手、4次挥手过程
Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是 ...
- 抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)
功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP ...
- Wireshark抓包TCP三次握手数据
抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...
- 网络协议抓包分析——TCP传输控制协议(连接建立、释放)
前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...
随机推荐
- Java 多态 案列
1 package com.bytezreo.duotai; 2 3 //多态性的使用 举例一 4 public class AnimalTest 5 { 6 public static void m ...
- Nginx 打不开 80端口占用 netstat -aon|findstr "80" 看有没有80占用 有的话 net stop http
Nginx 打不开 80端口占用 netstat -aon|findstr "80" 看有没有80占用 有的话 net stop http
- 32位数字电位器AD5228使用及调试总结
一 概念 什么是数字电位计? 数字电位器(Digital Potentiometer)亦称数控可编程电阻器,是一种代替传统机械电位器(模拟电位器)的新型CMOS数字.模拟混合信号处理的集成电路.数字电 ...
- Python 的结构体函数 struct pack, unpack 用法详解
一 python 结构体 * python struct 模块可以用来在存储二进制文件,广泛用在文件系统,网络连接领域. * 它可以用在c语言和python语言之间的数据的格式转换. 二 Pyth ...
- Android Studio虚拟机文件默认C盘转移其他盘
原文地址:Android Studio虚拟机文件默认C盘转移其他盘 - Stars-One的杂货小窝 某天发现,新创建的Android13模拟器,把我C盘搞得只剩下9G了,于是折腾了下,把模拟器相关文 ...
- day04-Java基础语法
Java基础语法 1.注释 注释不会被执行,是用来给写代码的人看的. 1.1单行注释 单行注释只能注释一行文字 // 注释 1.2多行注释 多行注释可以注释多行文字 /* 注释 注释 注释 */ 1. ...
- http内网穿透CYarp[开源]
0 前言 在物联网领域中,mqtt消息一直是海量设备连接到平台的标配协议,而平台向移动端开放的操作接口往往是http协议,这就要求平台为两种协议作消息一一适配.在某些情况下,这些设备是有操作系统的li ...
- Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性 ...
- 记录转载:Vite多环境配置--让项目拥有更高定制化能力
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 业务背景 近些年来,随着前端工程架构发展,使得前端项目中也能拥有如后端工程的模块能力.正所谓 "能力(越)越大(来),责任(越) ...
- KingbaseES 如何查看表的创建时间
前言 在oracle数据库中,我们可以查看数据字典dba_objects得到表的创建时间.在Kingbase中如何查看表的创建时间呢?Kingbase数据库中无法通过数据字典查看有关信息,但可以通过其 ...