加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix套接字,SOCK_SEQPACKET和SOCK_DGRAM

发布时间:2020-12-15 09:18:23 所属栏目:安全 来源:网络整理
导读:看来至少有3种不同的本地/ unix套接字类型(PF_UNIX),SOCK_STREAM,SOCK_DGRAM和SOCK_SEQPACKET。 虽然我知道SOCK_STREAM给你一个双向字节流,如TCP或双向管道,另外两个给你一个messge / packet API,SOCK_DGRAM和SOCK_SEQPACKET的unix套接字有什么区别?
看来至少有3种不同的本地/ unix套接字类型(PF_UNIX),SOCK_STREAM,SOCK_DGRAM和SOCK_SEQPACKET。

虽然我知道SOCK_STREAM给你一个双向字节流,如TCP或双向管道,另外两个给你一个messge / packet API,SOCK_DGRAM和SOCK_SEQPACKET的unix套接字有什么区别?

因为这些只是本地的,我不能想到有人会以一种可以重新排序数据包的方式实现SOCK_DGRAM的好理由。

另外,SOCK_DGRAM / SOCK_SEQPACKET是否使用流控制,或者可以在缓慢读取器的情况下删除邮件?

这里是一个关于SOCK_SEQPACKET的预期用例的好文章,事实上它在IP协议族中并不真正可用,以及如何使用现有的TCP语义获得同样的东西:

http://urchin.earth.li/~twic/Sequenced_Packets_Over_Ordinary_TCP.html

注意,SOCK_SEQPACKET在行为上比SOCK_DGRAM更接近SOCK_STREAM。

引用自引用的网站:

The SOCK_SEQPACKET socket type is similar to the SOCK_STREAM type,and is also connection-oriented. The only difference between these types is that record boundaries are maintained using the SOCK_SEQPACKET type. A record can be sent using one or more output operations and received using one or more input operations,but a single operation never transfers parts of more than one record. Record boundaries are visible to the receiver via the MSG_EOR flag in the received message flags returned by the recvmsg() function. It is protocol-specific whether a maximum record size is imposed.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读