《Wireshark网络分析的艺术》—三次握手的小知识

简介:

本节书摘来自异步社区《Wireshark网络分析的艺术》一书中的三次握手的小知识,作者林沛满,更多章节内容可以访问云栖社区“异步社区”公众号查看。

三次握手的小知识
Wireshark网络分析的艺术
我原本以为TCP三次握手不值得写,没想到在某技术社区上被提问好几次了。看来感兴趣的人还真不少,还是写一篇吧。

我们知道TCP需要通过三次握手来建立连接,过程如图1所示。


5f4a7b197d858b5416216cc7dca3193db9925d9e

从Wireshark上看到的握手过程就是图2这样的,你可以把Seq号和Ack号代入图1中,看看是否符合规律。



当X和Y的值太大时,看起来就不太友好,尤其是需要对这些号码做加减运算时。于是Wireshark提供了一个功能——把Seq和Ack的初始值都置成0,即用“相对值”来代替“真实值”。我们可以在Edit→Preferences→Protocols→TCP菜单中勾上Relative Sequence Numbers来启用它。启用之后,图2的包就变成图3这样,是不是清爽了很多?

b4ada9c5ab308352b8ff1c685fe6b4a94345876e

成功的握手都是一样的,失败的握手却各有不同,因此解决起来还是需要一些技巧的。当我们遭遇TCP连接建立失败时,最稳当的排查方式就是用Wireshark来分析。网络包不多的时候很容易入手,用肉眼观察就行,但如果抓到的包特别大就需要过滤技巧了。根据我的经验,握手失败一般分两种类型,要么被拒绝,要么是丢包了。因此用两道过滤表达式就可以定位出大多数失败的握手。

表达式1:(tcp.flags.reset == 1) && (tcp.seq == 1)

从表面上看,它只是过滤出Seq号为1,且含有Reset标志的包,似乎与握手无关。但在启用Relative Sequence Numbers的情况下,这往往表示握手请求被对方拒绝了,结果如图4所示。接下来只需右键选中过滤出的包,再点击Follow TCP Stream就可以把失败的全过程显示出来,见图5。此次握手失败的原因是服务器没有在监听80端口,所以拒绝了客户端的握手请求。


728ed805cf8dbbf58acb79abf0517c08f10c722f

表达式2:(tcp.flags.syn == 1) && (tcp.analysis.retransmission)

这道表达式可以过滤出重传的握手请求。一个握手请求之所以要重传,往往是因为对方没收到,或者对方回复的确认包丢失了。这个重传特征正好用来过滤,结果如图6所示。接下来右键点击过滤出的包,再用Follow TCP Stream就可以把失败过程显示出来,见图7。此次握手失败的原因是丢包,所以服务器收不到握手请求。


15383cb9c1c84d06dbe2a7e015bee694c9b82bf0

这两个表达式很好用,不过要最快排查出根本原因还需要另一个技巧,即在两端同时抓包来分析。为什么要两端同时抓呢?请考虑图8所示的两种状况。

1182de28c564eb32f5889a22eb696e97e7dc270d

同样是握手失败,左图是客户端发出的包丢了,右图则是服务器回复的包丢了。不同的丢包往往意味着不同的问题根源,解决方式也不一样。如果只在客户端抓包,那这两种丢包的症状看起来就像是一样的,排查起来也会慢一些。

说完握手失败的排查技巧,我们再来讲讲和握手有关的安全问题。做运维的工程师们都知道,大规模DDoS(Distributed Denial of Service,分布式拒绝服务攻击)来临的时候最惊心动魄。DDoS的形式有很多种,其中最流行的就是基于三次握手的SYN flood,其原理是从大量主机发送SYN请求给服务器,假装要建立TCP连接。这些SYN请求可能含有假的源地址,所以服务器响应后永远收不到Ack,就会留下half-open状态的TCP连接。由于每个TCP连接都会消耗一定的系统资源,如果攻击足够猛烈,此类连接越建越多,服务器的资源就会被耗光,真正的用户访问也会被拒绝。

Wireshark可以轻易地发现SYN flood。有时一打开包就很显眼了,如图9所示,密密麻麻都是SYN。假如干扰包太多,那就点击AnalyzeExpert InfoChats菜单,可以看到SYN的总数量统计。


11418a8ef3b288cc48121a798718b109c6fa3351

我们可以把SYN flood看作TCP协议的设计缺陷,有办法可以防御,却无法根除。想知道大公司都是怎样防御的吗?手段有很多,其中有一些还可以在Wireshark中看出端倪。我假装攻击了全球最大的假药销售网站,然后把全过程的包抓下来。从图10可见,对方很快就识别了我的不良意图,所以Reset(RST)了大多数握手请求。如果有兴趣去研究RST包里的细节,比如网络层的TTL和Identification,也许还能判断出究竟是流量清洗还是TCP握手代理之类的。本书不是网络安全专著,所以就不展开分析了。


4de33aebb48f8194da6741788f9fd046c070ef9a

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
3月前
|
运维 网络协议
Wireshark安装步骤详解(附抓包与过滤教程)
Wireshark.exe 是专业网络抓包分析工具,支持实时捕获HTTP/TCP/UDP等协议数据,助力故障排查与协议学习。需管理员权限运行,安装含NPcap驱动,首次使用选择网卡即可开始抓包。(239字)
|
存储 Cloud Native API
oss云网关配置
配置阿里云OSS与云网关实现灵活数据传输和访问控制。步骤包括开通OSS服务,创建Bucket,获取访问凭证,可选配置CORS和生命周期规则。云网关配置涉及阿里云云原生网关的代理规则设定或使用云存储网关集成OSS访问,具体配置需参照产品文档,因产品更新可能会有变动。
889 1
|
9月前
|
安全 算法 API
手机号码“二次放号”查询:帮助更清晰地识别号码历史(开启“免打扰模式”)
“二次放号”带来资源优化的同时,也引发用户注册受限、骚扰电话频仍、误标记及“背锅”等问题。通过“二次放号状态核验API”,可精准识别号码性质、生命周期与实时状态,助力企业提升平台安全、降低运营风险,推动智慧城市数字身份建设。
752 0
|
域名解析 数据安全/隐私保护 开发者
站长实战指南:从域名注册到备案,国内建站必知事项
本文详细介绍了域名注册、备案及解析的全流程,涵盖国内服务商(如阿里云、腾讯云)的域名选购、实名认证、费用参考及避坑建议。同时解析了域名备案的具体步骤与注意事项,并对比了备案与免备案域名的优劣势。针对不同需求,提供了大陆备案和香港/海外免备案的选择方案。最后提醒政策风险,建议企业优先备案,个人开发者根据业务场景灵活选择,确保网站合法合规运行。
3045 3
|
存储 安全 芯片
封装之打线简介
介绍封装打线的原理,常用材料的优缺点,关键部件,wire bonding 过程,主要参数,线形,线长和主要测试方法。
14211 3
封装之打线简介
|
存储 虚拟化 数据安全/隐私保护
Hyper-V系统后装,快速上手
Hyper-V是微软的虚拟化技术,支持在Windows系统上创建和运行虚拟机。适用于Windows 10/11专业版及以上版本,需确保CPU支持虚拟化并在BIOS中开启。安装Hyper-V可通过控制面板或设置中的可选功能完成,安装后需重启。使用Hyper-V管理器新建、配置和启动虚拟机,完成操作系统安装。建议启用动态内存、选择合适的虚拟硬盘类型和网络配置,并定期更新以确保安全性和性能。
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
513 6
|
存储 编解码 搜索推荐
如何在Windows和Mac上免费将蓝光转换为MKV?
蓝光光盘因能提供高质量的视频和音频内容而备受青睐,但其使用上的局限性却不容忽视。相比之下,MKV作为一种广受支持的视频格式,与大多数播放设备和平台都能完美兼容,为用户带来了更大的便利性和灵活性。
2474 0
|
人工智能 自然语言处理 供应链
智慧零售包括哪些设备
智慧零售作为一种新型零售模式,充分利用了现代信息通讯技术和人工智能技术,以实现零售业务过程的自动化、智能化和信息化。在智慧零售中,涉及到的设备和操作多种多样,主要包括以下几个方面: