码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • TCP/IP(十九)TCP 实战抓包分析(三)TCP 第一次握手 SYN 丢包


    一  TCP 三次握手异常情况实战分析

    说明: 本文是'TCP 三次握手异常'系列之'一'

    ①   异常场景

    1. 接下里我用'三个实验案例',带大家一起探究探究这'三种异常'
    2. 关注: 如何'刻意'练习模拟'上述'场景 以及 'wireshark'现象

    ②  实验环境

    ③  实验一:TCP 第一次握手 SYN 丢包

    1. 思考: 如何模拟 TCP '第一次'握手 'SYN 丢包'的情况? --> "采用2"
    2. 方式1: 拔掉'服务器'的网线后,'立刻'在客户端执行 curl 命令
    3. 备注: 不建议因为'抓不住'时机,可能导致网络就'不通'
    4. 方式2: 在'服务器'的防火墙,屏蔽'客户端' TCP 报文中标志位是 'SYN' 的包

    删除iptables中的规则 

    1. 1、看 iptables 中的规则,找到'要删除的规则'的'编号':
    2. iptables -t '表名' -L -n --line-numbers
    3. 2、删除'指定编号'的'规则':
    4. iptables -t [table] -D [chain] [rule-number]

      iptables扩展匹配条件之 --tcp-flags

    1. 说明: 下面的三种'等价'命令匹配到的报文是'第一次握手'的报文 --> 采用'最后一个'
    2. iptables -I INPUT -s 172.25.2.157 -m tcp -p tcp --tcp-flag ALL SYN -j DROP
    3. iptables -I INPUT -s 172.25.2.157 -m tcp -p tcp --tcp-flag \
    4. SYN,ACK,FIN,RST,URG,PSH SYN -j DROP
    5. iptables -t filter -I INPUT -p tcp -s 172.25.2.157 -m tcp --syn -j DROP
    6. 备注: filter表是iptables的'默认表',上面省略了'-t filter'

    1. 2、在客户端执行 'curl -kv nginx.wzj.com' 命令
    2. 备注: 加上'-kv'参数刻意看到'DNS解析'、'SSL握手'、'HTTP请求'详细过程
    3. 备注: 过了'一会 [大约127 s]',curl 返回了'超时连接'的'错误'
    4. 分析: 从 date 返回的时间,可以发现在超时'127 s'的时间后,curl '返回'了'错误'

    1. 3、其间在'客户端'的 tcpdump 抓包
    2. tcpdump -nni any tcp and host 172.25.2.100

     

    1. tcpdump -nni any tcp and host 172.25.2.100 -w tcp_sys_timeout.pcap
    2. 接着: 把 'tcp_sys_timeout.pcap 文件'用 'Wireshark' 打开'分析',显示'如下图':
    3. 备注: 'TCP Retransmission' --> 'tcp 重传' --> wireshark '黑色背景,红色字体'

    第一次握手丢失了,会发生什么? 

    /proc/sys/net/ipv4/tcp_syn_retries

     

    小结: 'tcp_syn_retries 为 5'的 场景,关抓如下的'原理图'

    RTT 和 RTO 

    1. RTT(Round Trip Time):一个连接的往返时间,即数据'发送'时刻到接收到'确认'的时刻的'差值'
    2. RTO(Retransmission Time Out):重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传
    3. RTT和RTO 的关系是:由于网络波动的'不确定性',每个RTT都是动态变化,所以RTO也随着RTT动态变化
  • 相关阅读:
    用c++写一个高精度计算的加法算法,输入两个正整数,求它们的和
    Stage #14 XSS注入:利用CSS内联注释突破防御
    网络和Linux网络_2(套接字编程)socket+UDP网络通信代码
    资源分享(课设、说明书、资源)不定期更新
    Apache JMeter 和 Locust的对比
    牛客 NC25080 Catch That Cow
    Spring MVC 中的数据绑定和验证机制是什么,如何使用
    springmvc中异步转同步
    C语言-数组
    神经网络训练ai玩游戏,人工神经网络入门
  • 原文地址:https://blog.csdn.net/wzj_110/article/details/133911926
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号