ss 命令:原始套接字和 unix 套接字之间的区别

ss 命令:原始套接字和 unix 套接字之间的区别

ss命令(来自iproute2作为 的更新替代品的工具集netstat)具有--help以下选项

   -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

RAW域套接字和域套接字之间到底有什么区别UNIX

套接字到底是什么PACKET

答案1

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

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

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

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


AUnix套接字另一方面是不是网络套接字 ( 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)

相关内容