在原始套接字之上实现协议并使用 O_DIRECT
所以,我试图在原始套接字之上制作一个 TCP 的玩具(bash?)实现,以更好地理解该协议。
我知道 /dev/raw 已被弃用,取而代之的是 O_DIRECT (为什么?),并且在我的内核中未启用。
$ zgrep -i raw /proc/config.gz
CONFIG_IP_NF_RAW=m
CONFIG_IP6_NF_RAW=m
CONFIG_SERIO_RAW=m
# CONFIG_RAW_DRIVER is not set
CONFIG_SND_RAWMIDI=m
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_HIDRAW=y
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_GADGET_VBUS_DRAW=2
# CONFIG_LINE6_USB_RAW is not set
CONFIG_ATH6KL_HTC_RAW_INTERFACE=y
我找不到有关如何在没有使用 O_DIRECT 的 Linux TCP 实现的情况下发送数据的信息,我想我应该使用 O_DIRECT。
So, I am trying to make a toy (bash?) implementation of TCP on top of raw sockets, to better understand the protocol.
I understand that /dev/raw is deprecated in favor of O_DIRECT (why?) and is not enabled in my kernel.
$ zgrep -i raw /proc/config.gz
CONFIG_IP_NF_RAW=m
CONFIG_IP6_NF_RAW=m
CONFIG_SERIO_RAW=m
# CONFIG_RAW_DRIVER is not set
CONFIG_SND_RAWMIDI=m
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_HIDRAW=y
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_GADGET_VBUS_DRAW=2
# CONFIG_LINE6_USB_RAW is not set
CONFIG_ATH6KL_HTC_RAW_INTERFACE=y
I cannot find information on how to send data without linux's TCP implementation using O_DIRECT which is what I guess I should use.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一篇有关 FreeBSD 7.0 和 Linux 2.6 中原始套接字的信息论文。
如果您没有
/dev/tcp
在 Bash 中,您可能需要查看 Richard Stevens 的 sock 程序 (http://www.icir.org/christian/sock.html)。Here's an informative paper on raw sockets in FreeBSD 7.0 and Linux 2.6.
If you do not have
/dev/tcp
in Bash, you may want to look at Richard Stevens' sock program (http://www.icir.org/christian/sock.html).