首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ss命令:原始套接字和unix套接字之间的差异

ss命令:原始套接字和unix套接字之间的差异
EN

Unix & Linux用户
提问于 2018-09-01 05:44:16
回答 1查看 1.9K关注 0票数 3

ss命令(来自iproute2工具集,作为netstat的较新的替代方案)在--help中有以下选项

代码语言:javascript
复制
   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets

在这里,RAWUNIX域套接字究竟有什么区别?

PACKET套接字实际上是什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-09-01 07:42:58

原始套接字是网络插座 (通常是AF_INETAF_INET6 )。它可用于创建原始IP包,这些包可用于故障排除或无需使用SOCK_STREAM实现您自己的TCP实现:

原始套接字允许在用户空间中实现新的IPv4协议。原始套接字接收或发送原始数据报,不包括链路级别的标头。[raw(7)]

nmap这样的工具使用原始套接字,以便在初始的SYNSYN-ACK之后停止TCP握手,因为TCP连接从未完全建立。作为网络套接字,它使用sockaddr_in作为地址。

然而,原始套接字的创建通常受到限制。只有特权进程才能创建它们。

另一方面,unix套接字不是网络套接字(AF_UNIX)。这是一个本地插座:

AF_UNIX (也称为AF_LOCAL)套接字家族用于有效地在同一台机器上的进程之间进行通信。[unix(7)]

它使用另一个地址结构(sockaddr_un)。这是一个没有通过网络层的在单个进程间通信系统上实现双向通信的通用方法

数据包套接字是驱动程序级别上的原始数据包:

分组套接字用于在设备驱动程序(OSI第2层)级别接收或发送原始数据包。它们允许用户在物理层之上的用户空间中实现协议模块。[packet(7)]

其他套接字作用于网络层(OSI层3)或更高层。此时,您将直接与网络接口的驱动程序对话。

有关更多信息,请参见socket(2)ip(7)packet(7)raw(7)socket(7)unix(7)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/466181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档