2011-04-19 36 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)。