接口协议之抓包分析 TCP 协议

举报
橙子_hogwarts 发表于 2022/04/22 16:12:29 2022/04/22
【摘要】 TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。## 环境准备对接口测试工具进行分类,可以如下几类:- 网络嗅探工具:tcpdump,wireshark- 代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy- 分析工具:curl,postman,chrome Devtool- ## 抓包分析TCP协议## tcpdu...



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

## 环境准备

对接口测试工具进行分类,可以如下几类:
- 网络嗅探工具:tcpdump,wireshark
- 代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy
- 分析工具:curl,postman,chrome Devtool

## 抓包分析TCP协议

## 

tcpdump是一款将网络中传送的数据包的“头”完全截获下来提供分析的工具。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句去掉无用的信息。
让 tcpdump 时刻监听 443 端口,如果有异样就输入到 log 文件中

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

```


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

![](https://ceshiren.com/uploads/default/original/3X/1/6/168f4e0547a6527d9c48d3b60eb3b00f60135f92.png)


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


抓取一个 http 的 get 请求:
1.在百度上搜 mp3"http://www.baidu.com/s?wd=mp3"
2.用 tcpdump 截获这个 get 请求,并生成 log
3.用 wireshark 打开 tcpdump 生成的 log
使用 wireshark 查看 log:

![](https://ceshiren.com/uploads/default/original/3X/c/b/cb0785de235dcc1862235552449c87a914e8b56a.png)

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 连接成功)状态,完成三次握手。
经过三次握手,就可以进一步交流,就像下面这样:

![](https://ceshiren.com/uploads/default/original/3X/9/2/92391355de9a73764dc8509073d4b40ee6c6c03e.png)

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

![](https://ceshiren.com/uploads/default/original/3X/4/c/4c5e97dd2b0428192976e294fc22844b3355d2c3.png)
- 第一次挥手:客户端向服务器端发送一个 FIN,请求关闭数据传输。
- 第二次挥手:服务器接收到客户端的 FIN,向客户端发送一个 ACK,其中 ack 的值等于 FIN+SEQ
- 第三次挥手:服务器向客户端发送一个 FIN,告诉客户端应用程序关闭。
- 第四次挥手:客户端收到服务器端的 FIN,回复一个 ACK 给服务器端。其中 ack 的值等于 FIN+SEQ

原文链接

请点击更多技术文章,有惊喜哟

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。