首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否在TCP三次握手中获取SYN/ACK数据包的TCP序列号?

能否在TCP三次握手中获取SYN/ACK数据包的TCP序列号?
EN

Stack Overflow用户
提问于 2013-03-18 18:24:04
回答 3查看 2K关注 0票数 1

我有一个tcp客户端程序,当它通过发送SYN来启动与远程tcp服务器的3次握手时,它将从服务器接收SYN/ACK。

是否可以读取SYN/ACK数据包的序列号和确认序列号?如果是,该怎么做呢?顺便说一句,我正在开发linux c,谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-18 18:34:38

是的,这是可能的,但它并不像传统的套接字编程那样容易。这对你隐藏了握手的舞台。

您应该使用像pcap这样的工具来捕获您需要的内容。或者,Raw sockets

票数 1
EN

Stack Overflow用户

发布于 2013-03-18 18:37:51

使用原始TCP套接字。在创建原始套接字时有一个IPPROTO_TCP协议选项。这样,数据就是嵌入在链路层报头中的所有内容,因此您将看到IP报头,然后是TCP报头,然后是接收到的每个数据包的有效负载数据。您需要从它解析序列。

TCP Header Formatter的引用

票数 0
EN

Stack Overflow用户

发布于 2018-09-12 20:53:33

您可以使用linux中的tcpdumpwireshark找到TCP序列或确认号。然后,只需分析数据包,您就可以弄清楚了。

但是,要构建自己的程序来找出TCP序列或确认号,则需要使用C语言中的pcap库来捕获所有数据包,然后编写代码仅嗅探数据包中的TCP序列和确认号。

您可以设置自己的TCP序列和ACK编号,前提是您构建了自己的数据包。你可以使用Libnet来做这件事,构造你自己的数据包,或者使用原始套接字

如果您不熟悉TCP 库,那么可以编写一个简单的bash脚本,将捕获的所有数据包重定向到一个文件中,然后使用AWK / SED过滤技术找出序列和ACK号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15474466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档