【问题标题】:Does a SOCK_STREAM socket strip away the TCP bits around data?SOCK_STREAM 套接字是否会剥离数据周围的 TCP 位?
【发布时间】:2012-09-26 08:14:24
【问题描述】:

有人能解释一下socket(AF_INET, SOCK_STREAM, 0) 绑定到接口时的实际作用吗?

我有一个像这样在接口上监听的套接字,例如,如果我从浏览器执行 http GET,当我在套接字上执行 read() 时,我确实看到缓冲区从“GET /HTTP ...”数据与我的wireshark捕获相同事物的HTTP协议数据包中显示的数据相同。为什么我没有看到 TCP SYN、SYN/ACK、ACK 数据包作为缓冲区的开始?

我认为在接口上使用这个套接字可以显示所有内容,但它似乎只显示数据,而不是它周围的元数据。

【问题讨论】:

    标签: sockets tcp network-programming bind


    【解决方案1】:

    这是一个SOCK_STREAM 套接字。它在两个应用程序之间提供字节流。您永远不会在字节流套接字上看到数据包,只能看到字节流。字节流通过数据包交换发生是应用程序不可见的实现细节。 (如果两个端点都在同一台机器上,甚至可能会被绕过。)

    【讨论】:

    • 有趣。因此,例如,如果这是 HTTPS,我会从字面上看到加密内容而不是明文吗?
    • 是的,你会的。 (除非你有一些不寻常的平台在内核中实现了 SSL/TLS 并且正在使用该内核实现。)
    猜你喜欢
    • 2021-11-16
    • 2023-04-08
    • 2023-03-05
    • 2019-04-23
    • 2014-02-15
    • 1970-01-01
    • 2013-12-29
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多