使用tcpdump分析TCP的三次握手和四次挥手

使用tcpdump分析TCP的三次握手和四次挥手

自我感觉网络基础太薄弱了,最近打算恶补一下,先从TCP的建立连接和断开连接开始吧。

理论知识

从课本上我们都学过TCP建立连接的三次握手和断开连接的四次挥手,网络上相关的介绍博客也很多,推荐一个博客计算机之间是如何进行通信的?;详解三次握手和四次挥手,介绍得非常透彻易懂,感谢作者。

建立TCP server和client

使用python写了两个脚本:server.py和client.py,分别使用python socket实现TCP的server端和client端,脚本非常简单,直接照搬Python 网络编程| 菜鸟教程

server.py

import socket
import sys
import time

if __name__ == '__main__':
    port = int(sys.argv[1])

    s = socket.socket()
    host = socket.gethostname()
    print host
    s.bind((host, port))

    s.listen(5)
    while True:
        c, address = s.accept()
        print 'client address:', address
        print '\n'
        print c.recv(1024)
        c.send('reply')
        time.sleep(1)
        c.close()

client.py

import socket
import sys

if __name__ == "__main__":
    port = int(sys.argv[1])

    s = socket.socket()
    host = socket.gethostname()
    s.connect((host, port))
    s.send('query')
    print s.recv(1024)
    s.close()

抓包工具

我是在Linux测试,使用的是tcpdump,命名行

$ tcpdump -S tcp -i lo port {port}
  • tcp表示抓取TCP协议报文
  • -i lo是抓取localhost的报文,如果不用-i lo,默认无法抓取本地环回地址(127.0.0.1)的报文。lo是ifconfig命令返回的本地环回地址网卡标记。
  • port 抓取固定端口上的报文

抓包步骤

  1. 在第一个terminal中运行tcpdump -S tcp -i lo port {port}。
  2. 在第二个terminal中运行python server.py {port}
  3. 在第三个terminal中运行python clie
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们来解释一下TCP三次握手的过程: 1. 客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序号(ISN)2. 服务器收到SYN包后,会回复一个SYN+ACK(同步+确认)包,其中确认号是客户端发送的ISN加1,并且服务器也会生成一个自己的随机序列号。 3. 客户端再次回复一个ACK(确认)包,其中确认号是服务器发送的ISN加1。 这样,TCP连接就建立起来了。现在我们来分析一下抓包数据。 在抓包工具中,你可以使用Wireshark或者tcpdump来捕获网络数据包。当你开始抓包后,你会看到大量的数据包被捕获和显示。 对于TCP三次握手的抓包分析,你需要过滤出与目标IP地址和端口相关的数据包。使用过滤器表达式"tcp.dstport == 目标端口 && ip.dst == 目标IP地址"可以帮助你过滤出特定的数据包。 在抓包的结果中,你应该能够看到三个关键的数据包: 1. SYN包:这是客户端发送的第一个数据包,源IP地址是客户端的IP地址,目标IP地址是服务器的IP地址,源端口是随机生成的,目标端口是服务器监听的端口。 2. SYN+ACK包:这是服务器作为对SYN包的回复发送的数据包,源IP地址是服务器的IP地址,目标IP地址是客户端的IP地址,源端口是服务器监听的端口,目标端口是客户端发送SYN包时的源端口。 3. ACK包:这是客户端作为对SYN+ACK包的回复发送的数据包,源IP地址是客户端的IP地址,目标IP地址是服务器的IP地址,源端口是客户端发送SYN+ACK包时的源端口,目标端口是服务器监听的端口。 通过分析这些数据包的源、目标IP地址、端口号以及序列号和确认号等信息,你可以看到TCP三次握手过程中的交互步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值