登录
首页 >  Golang >  Go问答

用 go HTTP 客户端如何获取 TCP 数据包详细信息?

来源:stackoverflow

时间:2024-03-01 08:54:22 214浏览 收藏

大家好,我们又见面了啊~本文《用 go HTTP 客户端如何获取 TCP 数据包详细信息?》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我需要能够验证来自一组 HTTP 服务器的响应数据上的 TOS/DSCP 标记。给定要测试的目标 URL 列表,是否有可能在 go 中生成 HTTP 请求,然后能够检查响应的 TCP 数据包详细信息以获得 TOS 值?

此时我的假设是,可能需要创建一个套接字,然后动态生成一个包含 HTTP 请求负载的 TCP 数据包。我一直在四处寻找是否有任何库可以帮助完成此任务,但尚未找到任何具体内容。

注意:简单的 TCP 连接将无法提供足够的数据 - 相关目标服务器将根据 HTTP 服务器名称动态更改 TOS/DSCP 标记(因此本质上,单个物理服务器将根据不同的服务器以不同的 TOS 标记进行响应) vHost 请求),因此能够验证实际 HTTP 响应数据包的 TOS 非常重要,而不是像 ping 这样简单的东西。 TCP 3 次握手中的 TOS 值也不可信 - 它必须是包含 HTTP 数据的数据包。


解决方案


我最终使用 gopacket/pcapnet/http 解决了这个问题。

简而言之,我最终所做的是编写一个创建通道的函数,然后调用一个 goroutine 来执行实际的数据包捕获和解析。 goroutine 将捕获到的 TOS 值传回通道,然后原函数进行 http 请求,然后读取通道以获取 TOS 结果。仍有一些正在进行中的工作,但到目前为止,该解决方案似乎运行得相当不错。

本篇关于《用 go HTTP 客户端如何获取 TCP 数据包详细信息?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>