`
猫太的鱼
  • 浏览: 242703 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tcpdump抓包分析TCP三次握手过程

阅读更多
一、 tcpdump使用

1、首先看下MAN手册

TCPDUMP(8)                                                                                                                                                       

NAME
       tcpdump - dump traffic on a network

SYNOPSIS
       tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
               [ -C file_size ] [ -F file ]
               [ -i interface ] [ -m module ] [ -M secret ]
               [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,... ]
               [ -y datalinktype ] [ -Z user ]
               [ expression ]

选项:

-A        以ASCII码显示消息包

-c         指定包个数

-C        配合-w,当写入文件时,先检查文件大小是否已经超过1M,若超过,生成新文件,文件名为指定文件名加后缀1。

-d        将匹配信息包的代码以人们能够理解的汇编格式给出

-dd      将匹配信息包的代码以c语言程序段的格式给出

-ddd    将匹配信息包的代码以十进制的形式给出。

-D        列出可以抓包的所有网络接口

-e        显示链路层内容

-f         外部的IP以数字方式显示

-i         指定网络接口

-l         使标准输出变为缓冲行形式

-n        IP,端口用数字方式显示

-t    在输出的每一行不打印时间戳;
-v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv   输出详细的报文信息;
-c    在收到指定的包的数目后,tcpdump就会停止;
-F    从指定的文件中读取表达式,忽略其它的表达式;
-i    指定监听的网络接口;
-r    从指定的文件中读取包(这些包一般通过-w选项产生);
-w   直接将包写入文件中,并不分析和打印出来;
-T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

-x        让十六进制显示包内容

2、过滤

(1)指定接口(-i)

如:tcpdump -i eth0

(2)指定IP地址(host),可以辅加and , or ,!等逻辑符,以及src,dest等表示方向。

如:tcpdump host 192.168.1.23 捕获192.168.1.23发出或者收到的包

tcpdump -A host 192.168.1.90 and \( 192.168.1.104 or 192.168.1.105 \) 捕获192.168.1.23与192.168.1.104或者192.168.1.105之间往来的包

tcpdump host ! 192.168.1.23 捕获除192.168.1.23以外所有主机的包

tcpdump -A src 192.168.1.90 and dst 192.168.1.104 指定从90发往104的包

(3)指定端口(port)

如:tcpdump port 80 指定捕获80端口的包

(4)指定协议( 协议包括:ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp and udp)

如:tcpdump tcp 指定捕获TCP包

(5)其它(gateway, broadcast, less, greater)

如:tcpdump broadcast 所有广播包

二、三次握手过程分析

用netstat -an | grep LISTEN看一下,当前主机正在监听的端口,使用另一台机telnet过来,不输入任何内容,进行抓包。

我们这里以6000为例

tcpdump port 6000 -c 3 -n

内容如下:

21:07:17.790296 IP 192.168.1.104.2511 > 192.168.1.90.6000: S 3359422806:3359422806(0) win 64240 <mss1460,nop,nop,sackOK>
21:07:17.790317 IP 192.168.1.90.6000 > 192.168.1.104.2511: S 3675079922:3675079922(0) ack 3359422807 win5840 <mss 1460,nop,nop,sackOK>
21:07:17.790675 IP 192.168.1.104.2511 > 192.168.1.90.6000: . ack 1 win 64240

我们来对第一个包进行分析:

21:07:17(时间).

790296(ID号)

IP (协议)

192.168.1.104.2511 > 192.168.1.90.6000: (源IP,端口,目的IP,端口)中间>表示方向

S (表示为SYN包,即发起连接包 

    紧急指针— URG
    确认序号有效—ACK
    接收方应该尽快将这个报文段交给应用层—PSH
    重建连接—RST
    同步序号用来发起一个连接—SYN
    发端完成发送任务—IN
)

3359422806:3359422806(0) (IP包序号,相对序号为0)

win 64240 (数据窗口大小,告诉对方本机接收窗口大小,windows下默认为64240,可通过setsockopt动态修改,同样可以通过修改注册表项(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters的 TCPWindowSize)来更改默认值)

<mss1460,nop,nop,sackOK> 对应TCP包头中的选项字段

  MSS: Maxitum Segment Size 最大分段大小,MSS表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。如果一方不接收来自另一方的MSS值,则MSS就定为默认的536字节。

以上三个包正好是TCP连接的三次握手过程:

(1) A主机发送序号为3359422806的SYN包到B,同时带有自身的WIN和MSS大小。

(2) B主机收到后,发送SYN+ACK的返回包到A,也带自身的WIN和MSS大小,3675079922,同时为为上一个包的应答包3359422807。

(3) A主机返回ACK,包序号为1(相对序号,如果需要看绝对序号,可以在tcpdump命令中加-S)

然后我们再来分析一下包的具体内容:

我们在tcpdump命令中加-x选项,后可得到如下内容:

22:07:13.436638 IP 192.168.1.104.2799 > 192.168.1.90.6000: S 3480877812:3480877812(0) win 64240 <mss 1460,nop,nop,sackOK>
    0x0000: 4500 0030 b195 4000 8006 c51f c0a8 0168
    0x0010: c0a8 015a 0aef 1770 cf79 faf4 0000 0000
    0x0020: 7002 faf0 174e 0000 0204 05b4 0101 0402
22:07:13.436675 IP 192.168.1.90.6000 > 192.168.1.104.2799: S 4226616929:4226616929(0) ack 3480877813 win 5840 <mss 1460,nop,nop,sackOK>
    0x0000: 4500 0030 0000 4000 4006 b6b5 c0a8 015a
    0x0010: c0a8 0168 1770 0aef fbed 0e61 cf79 faf5
    0x0020: 7012 16d0 f10e 0000 0204 05b4 0101 0402
22:07:13.437019 IP 192.168.1.104.2799 > 192.168.1.90.6000: . ack 1 win 64240
    0x0000: 4500 0028 b196 4000 8006 c526 c0a8 0168
    0x0010: c0a8 015a 0aef 1770 cf79 faf5 fbed 0e62
    0x0020: 5010 faf0 39b2 0000

还是一样,我们对第一个包进行分析,第一个包为SYN包,应该为一个空包,即只包括IP头和TCP头。
IP包头
4 - IP版本号 IPV4
5 - IP包头长度 5个32字节
00 - TOS (000 0000 0)前三个BIT优先权,现已忽略;4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用, 均为0表示一般服务;最后1BIT未用。
0030 -总长度,48个字节
b195 -包唯一标识
4000 -标志字段,和片偏移,用于分片
80 - TTL(128)
06 - 协议 TCP
c51f - MAC
c0a8 0168 - SRC IP,可以inet_ntoa转换成点号分隔的IP。
c0a8 015a - DST IP
TCP包头
0aef -源端口,十进制为2799
1770 -目的端口,十进制为6000
cf79 faf4 包序号,十进制为217554863
0000 0000 确认序号,0,未设置ACK,确认序号无效
7002 -TCP包头长度,标志位。(0111 000000 000010)前4bitTCP长度7个32BIT,中间6bit保留,后6bit为标志位(URG, ACK,PSH, RST, SYN, FIN),可以看出设置了倒数第二位,SYN位。
faf0 - 窗口大小,十进制为64240
174e - 校验和,覆盖了整个的 T C P报文段: T C P首部和T C P数据
0000 - 紧急指针, 只有当URG标志置1时紧急指针才有效
0204 05b4 0101 0402 - 选项字段,8个字节
分享到:
评论

相关推荐

    tcpdump抓包分析

    #### 五、TCP三次握手过程分析 Wireshark打开数据包后,我们可以看到三次握手的过程: 1. **第一次握手:** - 客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认。 - 示例:`10.209.69.74 ...

    linux下通过命令来观察TCP三次握手过程(数据包)

    在实际操作中,你可能需要配合`tcpdump`或`Wireshark`这样的网络抓包工具,以便更直观地分析数据包。 此外,`tomcat 最大并发数 - 小N- - 博客园.url`这个文件名可能指向一个关于Tomcat服务器最大并发连接数的博客...

    _04TCP四次握手与抓包分析.zip_TCP捂手分析_抓包 tcp

    标题中的“_04TCP四次握手与抓包分析.zip_TCP捂手分析_抓包 tcp”指的是一个关于TCP协议连接建立(三次握手)和断开(四次挥手)的讲解资料,结合网络抓包工具进行分析。这个压缩包可能包含了一个PPT文件,用于详细...

    TCP三次握手及四次挥手详细图解.docx

    在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 Syn_RECV 状态。当收到 ACK 后,服务器转入 ESTABLISHED 状态。 Syn 攻击是一个...

    tcp_http抓包分析_编程思路.pdf

    TCP三次握手是通信双方建立连接的过程,分别涉及客户端和服务器之间的SYN、SYN+ACK和ACK报文。这一过程保证了双方都准备好进行数据传输。 4. **HTTP报文分析**:HTTP请求和响应都是通过TCP连接发送的,因此可以分析...

    如何使用tcpdump抓包

    2. **连接问题**:如果应用无法正常连接服务器,可以通过查看TCP三次握手是否完成,判断问题出在客户端还是服务器端。 3. **安全检测**:检查网络中是否存在异常流量,如扫描、攻击等行为,及时发现并防止安全风险。...

    tcp.rar_c语言编程_tcp_tcp 抓包_抓包_抓包分析

    通过学习这个资源,你不仅可以掌握C语言编程技巧,还能深入了解TCP协议的工作流程,包括三次握手、四次挥手、拥塞控制、滑动窗口机制等核心概念。此外,对于网络故障排查和性能优化来说,掌握抓包分析技巧是必不可少...

    p199 - p241TCP抓包实战解析

    这表示捕获了 TCP 三次握手过程的三个网络包,序列号分别为 0、1、2。 tcpdump 和 Wireshark 是网络协议分析的重要工具,可以对网络包进行捕获和分析,查看网络包的详细信息,并对 TCP 三次握手和四次挥手过程进行...

    Tcpdump & Wireshark

    TCP保证数据包的有序传输和错误检测,通过三次握手建立连接,四次挥手释放连接。在Wireshark中,可以详细查看TCP报文的序列号、确认号、窗口大小、校验和等字段。 **学习资源** 提供的压缩包中包含了以下学习资料...

    网络TCP/UDP抓包工具

    网络TCP/UDP抓包工具是网络诊断和分析中不可或缺的一部分,它们可以帮助我们深入了解网络通信的细节,例如数据传输过程、协议交互以及可能存在的问题。在本文中,我们将深入探讨网络抓包工具的重要性和使用,以及...

    网络方面的tcp/ip抓包图

    在抓包过程中,我们可以观察到TCP三次握手和四次挥手的过程,这是TCP连接建立与关闭的关键步骤。三次握手确保了连接的可靠性,四次挥手则确保连接的正确释放。同时,通过抓包,可以查看TCP序列号、确认号、窗口大小...

    微客網絡TCP多功能抓包

    它采用了三次握手建立连接,确保数据的顺序传输和错误检测。微客网络TCP多功能抓包工具就是针对TCP协议进行数据捕获的工具,能够解析出TCP连接中的相关信息,包括源IP、目标IP、端口号以及数据内容等。 1. **TCP抓...

    tcp全连接和半连接问题查询步骤

    在 TCP 的三次握手过程中,有两个队列:syns queue(半连接队列)和 accept queue(全连接队列)。半连接队列用于存储客户端的 SYN 请求,服务器收到 SYN 请求后,将其放入半连接队列中,并回复 SYN+ACK 给客户端。...

    以太网数据抓包,用于TCP-IP调试

    - **连接问题**:查看TCP三次握手是否成功,是否存在SYN重传、FIN/RST标志异常等。 - **丢包**:统计数据包丢失率,分析可能的原因,如网络拥塞、硬件故障等。 - **延迟**:分析RTT(往返时间),查找可能导致高...

    SANGFOR_WOC_v9.1_2015年度渠道高级认证培训07_数据包分析案例.ppt

    它可以显示详细的网络包信息,并提供过滤功能,帮助分析TCP三次握手和其他协议。 5. **数据包分析目的**: - 确保PC发起的请求到达WOC。 - 检查TCP三次握手是否成功建立。 - 检查服务端WOC是否正常接收和转发...

    tcpdump.exe工具

    4. **协议分析**:学习和理解网络协议的工作机制,例如TCP三次握手、HTTP请求响应等。 六、注意事项 使用tcpdump时要注意隐私和法律问题,因为它可以捕获所有经过选定接口的数据包。在企业环境中,确保遵守数据保护...

    抓包.zip

    例如,TCP协议的三次握手和四次挥手过程,HTTP请求的头信息,以及FTP的数据传输模式等,都能在抓包结果中找到清晰的踪迹。 五、网络故障排查 网络抓包在故障排查中起着关键作用。当网络连接出现问题时,通过抓包...

    tcpdump使用方法

    - **协议分析**:学习和理解网络协议的工作原理,如TCP三次握手、四次挥手过程。 通过熟练掌握TCPDump和Wireshark,网络专业人士能够深入理解网络通信的细节,从而更好地维护网络环境的稳定和安全。

    计算机网络实验——抓包,优秀实验报告!

    - 数据包分析:选取几个关键数据包进行深入分析,解释它们在网络通信中的作用,比如TCP三次握手和四次挥手过程,或者HTTP请求与响应的交互。 - 结果讨论:根据抓包结果,讨论网络性能、可能的问题或优化建议。 - ...

    面试需要知道的 TCP 知识1

    本篇文章主要针对开发者,旨在帮助读者理解并掌握面试中常见的TCP知识点,通过实例解析三次握手和四次挥手过程,并使用tcpdump工具进行实践。 首先,我们来看TCP的核心概念——三次握手。三次握手是为了建立一个...

Global site tag (gtag.js) - Google Analytics