【问题标题】:Relationship between TCP & SOCK_STREAM and between UDP & SOCK_DGRAMTCP 与 SOCK_STREAM 以及 UDP 与 SOCK_DGRAM 的关系
【发布时间】:2020-07-04 02:36:00
【问题描述】:

SOCK_STREAM 互联网套接字是否总是使用 TCP?

SOCK_DGRAM 总是使用UDP?

也就是说,这些对的元素之间是否存在一一对应的关系:

  • SOCK_STREAM & TCP
  • SOCK_DGRAM & UDP

?

【问题讨论】:

    标签: sockets unix network-protocols


    【解决方案1】:

    没有。

    SOCK_STREAM 仅表示套接字是字节流。正是SOCK_STREAMIPPROTO_TCP 的组合创建了一个TCP 套接字,因为TCP 使用字节流。

    SOCK_DGRAM 只是表示套接字使用数据报。正是SOCK_DGRAMIPPROTO_UDP 的组合创建了一个UDP 套接字,因为UDP 使用数据报。

    当您在 protocol 参数设置为 0 的情况下调用 socket() 时,IPPROTO_TCPSOCK_STREAM默认值IPPROTO_UDP默认值 > 为SOCK_DGRAM。但是没有什么可以阻止其他套接字协议在需要时使用SOCK_STREAMSOCK_DGRAM。例如,在某些平台上,您可以使用 IPPROTO_ICMPSOCK_DGRAM 来替代使用 IPPROTO_ICMPSOCK_RAWSOCK_RAW 需要管理员权限,但 SOCK_DGRAM 不需要)。

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2011-05-09
      • 2013-07-01
      • 2013-03-18
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      相关资源
      最近更新 更多