2010-08-19 44 views
5

我无法理解或掌握;在套接字编程的底层编程意味着什么。我习惯于使用tcp/udp /文件系统套接字。这些都是围绕自己的协议规范......据我所知,它会使它在堆栈中的应用层工作。低级别Socket编程

在我正在进行的项目中,我看到了一些名为LinkLayer,TransportLayer的文件......但我除了标准套接字调用之外没有看到任何更多的调用.... send/recv/seletct ...

是否事实上你在设置套接字选项的意思是你在一个较低的水平是编程?它仅限于它吗?还是有其他的API可以授予你在内核中的表示权限?

回答

9

这通常是指使用SOCK_RAW插座,这就需要你来组装自己的数据包报头,计算校验和等,您仍然可以使用发送/ recv的/等。但现在你有责任确保每一个位都在正确的位置。

您可以使用SOCK_RAW套接字来实现TCP或UDP以外的协议,或者使用Internet协议来处理更高级别的接口不适应的事情(例如调整数据包的TTL以实现类似于traceroute的操作)。

2

这通常意味着在一个较低的OSI层工作的,例如,不直接发送TCP流或UDP信息包,但各具特色自己的IP或甚至以太网分组或其他低层协议,其将 - 在正常情况下 - 由操作系统来处理。

这可以通过特定的套接字选项,使您能够接收或任何层,偶数层(数据链路)上发送数据来完成。