54、套接字(Sockets)通用信息详解

套接字(Sockets)通用信息详解

1. 路由(Routing)

套接字提供数据包路由功能。系统会维护一个路由信息数据库,在传输数据包时,该数据库用于选择合适的网络接口。

2. 接口(Interfaces)

系统中的每个网络接口都对应着一条消息收发的路径。通常,网络接口会关联一个硬件设备,但像回环接口这类特殊接口则无需硬件设备。

3. 套接字类型(Socket Types)

创建套接字时需指定其类型,该类型定义了通信语义,并决定了合适的通信协议。主要有以下四种类型,不过具体实现中可能会定义更多类型:
- SOCK_STREAM :提供可靠、有序、全双工的字节流通信。在发送或接收数据前,套接字必须处于连接状态。此类型不保留记录边界,即发送和接收数据的操作大小可以不同,且不会丢失数据。数据可能会被缓冲,输出函数成功返回并不意味着数据已送达对端或已从本地系统发出。若在规定时间内数据无法成功传输,连接将被视为中断,后续操作会失败。当线程尝试在已中断的流上发送数据时,会触发 SIGPIPE 信号,但如果在 send()、sendto() 和 sendmsg() 调用中使用了 MSG_NOSIGNAL 标志,则该信号会被抑制。是否支持带外数据传输取决于具体协议。
- SOCK_SEQPACKET :与 SOCK_STREAM 类似,也是面向连接的。区别在于它会保留记录边界,一个记录可以通过多次输出操作发送,也能通过多次输入操作接收,但单次操作不会传输多个记录的部分内容。接收方可以通过 recvmsg() 函数返回的消息标志中的 MSG_EOR 标志

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值