2011-04-19 32 views
0

因此,我试图在原始套接字上制作一个玩具(bash?)实现TCP,以更好地理解协议。在原始套接字上实现协议并使用O_DIRECT

据我所知,/ 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 

我找不到有关如何发送数据没有Linux的TCP实现使用O_DIRECT这是我想我应该使用的信息。

+0

O_DIRECT仅用于诚实的文件和块设备。 – adobriyan 2011-04-20 10:50:25

回答

1

下面是关于FreeBSD 7.0和Linux 2.6中原始套接字的信息。

SOCK_RAW揭秘

SOCK_RAW揭秘是一纸我写的关于解释的FreeBSD 7.0和Linux 2.6内核的原始套接字机制的实现。它深入到网络内部,展示了这个强大的套接字类型的细节以及它在现场的工作原理。

http://sock-raw.org/papers.html

如果您还没有/dev/tcp Bash中做,你可能想看看理查德·史蒂文斯的袜子程序(http://www.icir.org/christian/sock.html)。