【linux tcp抓包之三次握手】

  • 写在前面
    • 三次握手
    • tcpdump
      • 参数说明
      • 返回值说明
        • IP 127.0.0.1.42004 > 127.0.0.1.5051
        • Flags [S]
        • win 43690, options [mss 65495,sackOK,TS val 251419064 ecr 0,nop,wscale 7], length 0
          • mss 65495
          • sackOK
          • TS val 251419064 ecr 0,nop
          • length 0
        • 协议头和包内容

写在前面

这一篇章我们先简单说一下,linux下面的抓包。这样也方便我们后面去抓取nginx的包取进行分析。,同时也简单的说一下

这边我们是使用了tcpdump和Wireshark相结合的方法去分析,主要就是在tcpdump下面可以把包给写到文件中去,然后在Wireshark中去进行分析。

三次握手

我们先看一下抓取的tcp三次握手的包,如下图:

tcpdump

然后我们先简单说一下tcpdump的命令,当然我们也可以同man tcpdump来看详细的说明。
tcpduml -i 指定需要监听的网卡。我们可以通过tcpdump -D,看我们当前可以查看的网卡。

参数说明

-n 对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析;
-nn 除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-X 输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-tttt 就是显示当前的时间戳,后面分别是年月日,时分秒 微妙

然后tcpdump这个参数是比较多的,大家可以man tcpdump去看看参数的说明。

然后 可以增加过滤比如指定host,port,proto等。
然后看一下我们这边的 tcpdump -i any -nn -n port -X 5051 。-i 指定所有的网卡,然后-nn 和-n 就是和上面说的一样,直接显示主机名和端口。
然后-X是说的是输出包的头部数据。然后port 5051就是指定了端口,因为我们的端口监听的这个端口。

返回值说明

然后我们说一下接下来的内容。就以第一个为主
2022-03-19 21:11:22.370405
这个是比较好理解的,就是当前的年月日,时分秒,然后最后一个是微妙数。

IP 127.0.0.1.42004 > 127.0.0.1.5051

然后这个说明用的是IP协议,然后首先是三次握手,是客户端主动链接,这里客户端启用了42004的临时端口去和服务进行链接。

Flags [S]

这个是一个标志位,在写在了tcp的header头中的。
然后我们先看看tcp header

然后看一下第四行的C,E,U,A,P,R,S,F,都代表着

SYN是这里面的同步位。
这里需要主要的是下面的Flags [S.]和 Flags [.],后面的.都是代表ACK的意思,这只这里省去了。
所以Flags [S.] 就是 SYN+ACK
Flags [.] 就是 ACK

win 43690, options [mss 65495,sackOK,TS val 251419064 ecr 0,nop,wscale 7], length 0

这个seq就是序号的意思,因为tcp规定,在三次握手中,即使没有发送数据,,也会消耗序号,观看我们的tcp header,这个seq就是 sequence number,占据16个位,所以最大是65535
win 就是窗口的大小,在tcp 头中就是 window size,可以看到是16个比特,单位是字节,因此字节的最大是2**16-1 = 65535 字节,但是在现在的带宽下,这会成为带宽的瓶颈,因为有一个窗口扩大因子。因此在本案例中,窗口真正的大小是 43690 * (2 ** 7) = 43690 * 128= 5592320。
窗口夸大因此在tcp的 扩展字段中,如图


其中kind=3是窗口扩大因子选项。
需要注意的是,在tcp中,往往会受到拥塞窗口的限制,所以真正的大小是窗口的真正的大小和拥塞窗口的最小值。
同时窗口扩大因子是在三次握手就固定的,后期不能修改

mss 65495

MSS(Maximum Segment Size,最大报文段大小)的概念是指TCP层所能够接收的最大段大小,该值只包括TCP段的数据部分,tcp头部和ip头部。可能很多人和MTU弄混,MTU是一个网络包的最大长度,以太网中一般为 1500 字节,这里我们用网上的一张图做介绍就一目了然


所以这里我们的tcp数据段最大是65495。

sackOK

发送端支持并同意使用SACK选。其实就是选择确认算法,当发生丢包的时候,只会重发丢弃的包也不会全部重发。

TS val 251419064 ecr 0,nop

TS就是Timpstamps ,时间错的意思,含义见下图
TS 和 ecr都是 tcp的扩展字段中的值,ecr在接收方会对发送放的TS进行计算并且返回给对端。

length 0

就是数据的长度,因为我们这次是三次握手,没有数据段的内容,所以数据段的长度是0。

协议头和包内容

其实就是让人迷惑的,这些是16进制和ASCII的形式显示,如下图所示

其实这些就是IP头+TCP头+包的内容,因为我们这个抓的是三次握手,没有内容。
首先我们来看一下IP头的部分,为了理解这个我们先看一下IP协议头

所以第一个4,就是代表了ipv4
第二个5 就是首部长度,单位是4字节,说明ip首部长度是5 * 4 =20字节。
所以接下来一直到第二行的7f 00 00 01都是说的ip首部。
然后接下来的都是tcp的协议头。
当然这些我们把tcddump -w out.cap.之后放到了WireShark中会更加直观,如图:

感兴趣的读者可以看一下wireshark抓包分析——TCP/IP协议

【linux tcp抓包之三次握手】相关推荐

  1. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置

    目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...

  2. 监控io性能, free命令, ps命令, 查看网络状态, linux下抓包

    2019独角兽企业重金招聘Python工程师标准>>> 监控io性能 free命令 ps命令 查看网络状态 linux下抓包 --- 监控io性能 查看磁盘 iostat 和sar属 ...

  3. 计网 - TCP 实战:如何进行 TCP 抓包调试?

    文章目录 Pre 接口列表 开启捕获功能 观察 TCP 协议 消息视图 观察 HTTP 协议 过滤和筛选 报文颜色 总结 QA: 请你用自己最熟悉的语言,写一个 UDP 连接程序,然后用 Wiresh ...

  4. 关于Linux 网络抓包的一些笔记整理

    写在前面 遇到一个 ping 单通 的情况,需要抓包分析下,所以整理这部分笔记 博文内容涉及: HTTP/TCP 抓包分析 Demo ICMP 抓包分析 Demo Nginx 抓包分析用户名密码 De ...

  5. Linux tcpdump抓包

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  6. Linux下抓包工具tcpdump详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  7. 监控io性能,free命令,ps网络命令,查看网络状态,Linux下抓包

    10.6 监控io性能 磁盘的io是一个非常重要的指标,所以要更详细的查看磁盘状态,需要用到iostat命令,如果之前已经安装了sysstat包的话,在安装sysstat包时iostat命令就已经被安 ...

  8. linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包...

    监控io性能 [root@localhost ~]# iostat Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 _x ...

  9. 七周二次课(1月23日) 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包...

    七周二次课(1月23日) 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包 ========================== ...

最新文章

  1. GUID和自增ID的比较_delete
  2. Eclipse 代码提示功能设置
  3. 数据库不推荐使用外键的9个理由!
  4. redis cli 删除key 模糊_Redis集群及雪崩
  5. w7下如何安装linux双系统,ubuntu安装教程(下): 教你装win7+Ubuntu双系统
  6. 剑指offer--重建二叉树
  7. 中国移动wlan优化app-截图
  8. windows pip命令不见了_Python中Pygame以及pip的下载与安装
  9. 反三角函数在线计算机,f的换算(反三角函数计算器在线)
  10. 【Linux】Linux基础常用命令1(常用Linux命令的基本使用,Linux终端命令格式)
  11. 孙玄:大中台模式下如何构建复杂业务核心状态机组件
  12. VUE 批量导出、导入Excel
  13. 微信小程序企业号注册
  14. 【读书笔记】 - 《你只是看起来很努力》
  15. 编译原理——自顶向下分析中FOLLOW集的计算
  16. 微信小程序 自动换行
  17. 利用Python暴力破解邻居家WiFi密码
  18. JavaScript - 核心语法学习
  19. Typora (free in Win Linux ) 0.9.86
  20. simm计算机英语,SIMM

热门文章

  1. 亚商投资顾问 早餐FM/1228国际道路客运有序恢复
  2. SpringToolSuite4更改编辑区字体大小
  3. 求助Latex标题如何加粗?
  4. 天融信: 风险探知系统确保企业资产无虞
  5. 魔力魔力哟部署与安装文档
  6. 用Python批量爬取2种格式的图片并下载
  7. 华清远见-重庆中心-JavaWeb阶段知识点整理
  8. 电力光缆是什么?常用电力光缆介绍
  9. AP1272 LDO 线性稳压IC 而压18V 电路原理图
  10. 大数据Flink电商数仓实战项目流程全解(一)