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 中。

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:

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 连接成功)状态,完成三次握手。

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

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

  • 第一次挥手:客户端向服务器端发送一个 FIN,请求关闭数据传输。
  • 第二次挥手:服务器接收到客户端的 FIN,向客户端发送一个 ACK,其中 ack 的值等于 FIN+SEQ
  • 第三次挥手:服务器向客户端发送一个 FIN,告诉客户端应用程序关闭。
  • 第四次挥手:客户端收到服务器端的 FIN,回复一个 ACK 给服务器端。其中 ack 的值等于 FIN+SEQ

一个请求可能分为多个包,一个数据也是这样,于是在 wireshark 会看到很多包。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

接口协议之抓包分析 TCP 协议相关推荐

  1. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  2. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  3. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  4. 互联网协议IP抓包分析 -- wireshark

    互联网协议IP抓包分析 – wireshark 互联网协议IP是Internet Protocol的缩写,中文缩写是网协 互联网协议也就是为计算机相互连接进行通信而设计的协议. IP地址协议报文首部 ...

  5. 抓包红色_抓包三部曲 WebSocket 协议原理抓包分析

    这篇文章通过抓包分析 WebSocket 协议的细节,学习一下 WebSocket 执行流程. 1.WebSocket 流程说明 (1)客户端和服务器之间完成三次握手建立 TCP 连接(TLS/SSL ...

  6. 使用WinPcap抓包分析网络协议

    创建一个使用wpcap.dll的应用程序 用 Microsoft Visual C++ 创建一个使用 wpcap.dll 的应用程序,需要按一下步骤: 在每一个使用了库的源程序中,将 pcap.h头文 ...

  7. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  8. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  9. iOS 之 Bonjour 协议简单抓包分析

    引子 因在学习iOS编程之bonjour编程的过程中,对bonjour产生了一些些的好奇,因此就查阅了各种资料以及自己抓包分析该协议. 注:文章作为个人学习记录,不一定准确,如有错误请多多指教,共同进 ...

最新文章

  1. 最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发
  2. mysql表分区列_如何基于char列对MySQL表进行分区?
  3. linux xargs 前一条命令的输出作为下一条命令的参数
  4. 使用JWT实现单点登录(完全跨域方案)
  5. CentOS6实现路由器功能
  6. source insight 4.0 无法同步文件问题
  7. linux中nmap命令,Linux中nmap命令起什么作用呢?
  8. 格雷码转换成二进制c语言程序,基于PLC程序实现格雷码转换成二进制码.pdf
  9. 余世维《成功经理人讲座》之重要又紧急的事情
  10. 微软XSD工具根据XSD文件生成的C#类中多余Specified属性问题
  11. 冒险岛mysql破解_冒险岛079浩浩2020年3月年度一键端版
  12. Struts2进阶版
  13. 练习打字速度效果很好的网站(本人亲测)
  14. 【自动驾驶】基于面部Fatigue检测的技术报告
  15. MATLAB-非线性方程的数值解法——二分法
  16. Oracle后台专家解决library cache锁争用的终极武器
  17. iOS开发中那些容易被我们忽略的代码,常用代码集合
  18. linux 设备模型 不上,Linux设备模型--驱动
  19. qt qrc html,写一个QT资源文件(qrc)
  20. 视频号直播怎么玩儿?手把手教你实操全流程!

热门文章

  1. nginx热升级实现
  2. python全局代理_玩Python之HTTP代理
  3. linux安装 grub失败,安装linux+windows的系统 如果grub引导失败的解决方法
  4. 从编译器角度分析C语言中数组名和指针的区别
  5. 视觉平台搭建——LED光源介绍
  6. c语言 sizeof typeof,typeof、nameof、sizeof的用法
  7. ndnsim r语言 ubuntu_Python语言---数据库
  8. redis五种数据类型的使用场景
  9. windows 10 64位安装Python3.6.4
  10. 物联网时代AMD迎来最强发展契机