connect() 调用次数 = TCP SYN 段?

发布于 2024-10-16 08:58:34 字数 95 浏览 2 评论 0原文

我可以运行系统调用日志实用程序。现在我看到的 TCP SYN 数据包的数量不等于我记录的 connect() 系统调用的数量?这可能是什么原因? 是否有其他系统调用在内部连接?

I can running a system call logging utility. Now the number of TCP SYN packets I see are not equal to the number of connect() system calls I record? What can be the reason for this?
Do any other system calls call connect internally?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俯瞰星空 2024-10-23 08:58:34

有各种各样的原因。

如果 connect() 由于地址不可路由而失败,它可能根本不会生成 SYN 数据包(例如 arp 超时)。同样,如果连接因其他错误(例如无效参数)而失败。

SYN 数据包可能会发送到您没有查看的接口(例如本地主机),

内核将重试;如果请求没有得到答复,它将在最终返回超时之前重试(可能会多次)。

There are all sorts of reasons.

If a connect() fails because of an unroutable address, it may never generate a SYN packet at all (e.g. arp timeout). Likewise if connect fails with some other error (e.g. invalid parameters).

The SYN packet might go on an interface you're not looking at (e.g. localhost)

The kernel will retry; if there is no reply to a request, it will try again (probably several times) before eventually returning a timeout.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文