抓包分析 TCP 协议

这篇具有很好参考价值的文章主要介绍了抓包分析 TCP 协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。

环境准备

对接口测试工具进行分类,可以如下几类:

网络嗅探工具:tcpdump,wireshark
代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy
分析工具:curl,postman,chrome Devtool

抓包分析TCP协议

tcpdump
tcpdump 是一款将网络中传送的数据包的“头”完全截获下来提供分析的工具。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句去掉无用的信息。

让 tcpdump 时刻监听 443 端口,如果有异样就输入到 log 文件中

sudo tcpdump port 443 -v -w /tmp/tcp.log

利用这条命令,会把得到的报告放到目录 /tmp/tcp.log 中。

常用参数 含义
port 443 监听 443 端口
-v 输出更加详细的信息
-w 把数据写到 log 中

wireshark
wireshark 也是一款网络嗅探工具,它除了拥有 tcpdump 功能,还有更多扩展功能,比如分析工具,但是在接口测试中,抓包过程往往都是在服务器进行,服务器一般不提供 UI 界面,所以 wireshark 无法在服务器工作,只能利用 tcpdump 抓包生成 log,然后将 log 导入 wireshark 使用,在有 UI 界面的客户端上进行分析。

抓包分析 TCP 协议

抓取一个 http 的 get 请求:

在百度上搜 mp3 http://www.baidu.com/s?wd=mp3
用 tcpdump 截获这个 get 请求,并生成 log
用 wireshark 打开 tcpdump 生成的 log

使用 wireshark 查看 log:

抓包分析 TCP 协议,软件测试,tcp/ip,网络协议,网络,功能测试,软件测试,自动化测试,程序人生

log 的前几段信息是三次握手。因为信道是不可靠的,在发送数据前,就必须确保信道稳定,而三次握手就像是下面这些操作:

第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SENT 状态,等待服务器确认。
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(seq=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP 连接成功)状态,完成三次握手。

经过三次握手,就可以进一步交流,就像下面这样:

抓包分析 TCP 协议,软件测试,tcp/ip,网络协议,网络,功能测试,软件测试,自动化测试,程序人生

结束交流时,也需要进行四次挥手:

抓包分析 TCP 协议,软件测试,tcp/ip,网络协议,网络,功能测试,软件测试,自动化测试,程序人生

第一次挥手:客户端向服务器端发送一个 FIN,请求关闭数据传输。
第二次挥手:服务器接收到客户端的 FIN,向客户端发送一个 ACK,其中 ack 的值等于 FIN+SEQ。
第三次挥手:服务器向客户端发送一个 FIN,告诉客户端应用程序关闭。
第四次挥手:客户端收到服务器端的 FIN,回复一个 ACK 给服务器端。其中 ack 的值等于 FIN+SEQ。
注意: 一个请求可能分为多个包,一个数据也是这样,于是在 wireshark 会看到很多包。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

抓包分析 TCP 协议,软件测试,tcp/ip,网络协议,网络,功能测试,软件测试,自动化测试,程序人生

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

抓包分析 TCP 协议,软件测试,tcp/ip,网络协议,网络,功能测试,软件测试,自动化测试,程序人生文章来源地址https://www.toymoban.com/news/detail-827566.html

到了这里,关于抓包分析 TCP 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Wireshark数据抓包分析之传输层协议(TCP协议)

            通过使用wireshark对TCP协议的数据包的抓取分析TCP协议的具体内容         1.需要了解TCP协议的三次握手过程         2.需要了解TCP协议的四次挥手的过程 part1:3次握手和4次挥手的数据包的获取 1.通过使用TCP测试工具在机器一中创建服务器,并且进行相应的配置,然

    2024年02月11日
    浏览(40)
  • TCP/IP(十七)实战抓包分析(一)ICMP

    一   TCP实战抓包分析 网络排查案例 ①  抓包分析 涉及 的内容 二    wireshark专栏 10分钟成为抓包大师  wiresahrk 协议分析  wireshark相关翻译  wireshark分析各种协议 libpcap 早期旧版本wireshark教程 wireshark高级用法 wireshark lua插件扩展 可以考虑购买专栏 各种协议进行报文分析 w

    2024年02月07日
    浏览(39)
  • Wireshark抓包分析TCP协议:三次握手和四次挥手

    面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢? 其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议等;而应用层协议都是要基于传输层的两个协议之上的,也就是TCP协议和UDP协议。我们在使用

    2024年01月21日
    浏览(46)
  • 数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析

    OSI模型(OSI model),开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI)。 抓包通常抓取数据链路层、网络层、传输层的包。 OSI主要关注5层,数据从上至下逐级封装,加入每层的头部信息,在物理层转换为比特率发送; 接收端使用逆向顺序

    2024年02月16日
    浏览(53)
  • Wireshark抓包分析微信功能----tcp/ip选修课期末大作业

    分析相关功能所抓取的数据包和完整大作业报告(word版)均已上传至 Wireshark抓包分析微信功能----tcp/ip选修课期末大作业-网络监控文档类资源-CSDN文库 适合Wireshark入门的小伙伴们或者赶计算机网络期末大作业无从下手的uu们。 铁汁们,请放心食用!加油吧,期末人!开卷,绝

    2024年02月08日
    浏览(68)
  • ​网络socket编程(二)——面向流的TCP编程及测试(SocketTool)、Wireshark软件使用

    目录 一、书接上回(select()函数使用注意事项) 二、面向流(TCP)的socket编程 2.1 TCP服务端编程和测试 2.1.1 TCP服务器原理流程图 2.1.2 TCP服务端编程实战 2.1.3 测试 2.2 TCP客户端编程和测试 三、Wireshark抓包软件的使用 3.1 Wireshark是什么 3.2 Wireshark抓包界面 3.3 Wireshark过滤器设置 3.3

    2024年04月17日
    浏览(39)
  • TCP/IP协议栈源代码分析

    在 Linux 内核启动过程中,inet_init 是在网络子系统初始化的一部分,负责初始化 TCP/IP 协议栈。下面是从 start_kernel 到 inet_init 的调用路径: start_kernel: start_kernel() 是 Linux 内核启动的入口函数,位于 init/main.c 文件中。 kernel_init: kernel_init() 在 start_kernel 中被调用,它位于 init/ma

    2024年02月03日
    浏览(46)
  • 网络程序设计:TCP/IP协议栈源代码分析

    从调用栈中可以看到inet_init被调用的过程 start_kernel函数位于 init/main.c中,是内核的入口位置, 它在系统引导过程中被调用。执行该函数后,内核初始化各种子系统,包括调度器、内存管理、文件系统等。在函数最后,会调用 rest_init 函数来继续剩余的初始化工作。 在rest_in

    2024年01月15日
    浏览(55)
  • 网络程序设计实验-TCP/IP协议栈源代码分析

    ​ inet_init代码如下: 调用inet_init的过程中,涉及到的函数如下: 1. start_kernel: start_kernel 是Linux内核的启动函数,定义在 init/main.c 文件中。 在启动过程中,首先执行 start_kernel ,这个函数负责进行内核的初始化工作。 2. rest_init: 在 start_kernel 中,会调用 rest_init 函数,该函数的

    2024年02月03日
    浏览(71)
  • Linux内核中的TCP/IP协议栈源代码分析

    目录 背景知识-Linux源码简介 TCP/IP协议栈相关问题 inet_init是如何被调用的?从start_kernel到inet_init调用路径 1.start_kernel(): 2.inet_init() : 3.fs_initcall() 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? TCP的三次握手源代码跟踪分析,跟踪找出设置和发

    2024年02月02日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包