通常情况下程序员接所接触到的套接字(Socket)为两类
(1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用;
(2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。
从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的全部,因为基于 TCP/IP 的应用,从协议栈的层次上讲,在传输层的确只可能建立于 TCP 或 UDP 协议之上,而 SOCK_STREAM、SOCK_DGRAM 又分别对应于 TCP 和 UDP,所以几乎所有的应用都可以用这两类套接字实现。
本文介绍了Linux网络编程中不常见的原始套接字(SOCK_RAW),对比了它与流式(SOCK_STREAM)和数据报(SOCK_DGRAM)套接字的区别。原始套接字允许自定义IP包、发送ICMP协议包,甚至监听和分析所有网络数据,常用于高级网络编程和网络安全工具的实现。但需要注意,使用原始套接字需要管理员权限,并且直接操作较低级别的网络协议。
订阅专栏 解锁全文
595

被折叠的 条评论
为什么被折叠?



