【转】linux socket()调用与arp报文发送
Linux提供最常用的网络通信应用程序开发接口--Berkerley套接字(Socket).它既适用于同一主机上进程间通信(IPC),又适用于不同主机上的进程间通信。套接字的设置通过socket调用完成:
int socket(int family,int type,int protocol);
其中family指通信域或协议族,Linux系统支持的网络协议族有PF_UNIX,PF_IPX,PF_PACKET等几十种;type为套接字类型,目前有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET等;protocol是套接字所用的特定协议类型号.
Linux系统提供的基于数据链路层开发应用程序的接口集成在套接字中,它是通过创建packet类型的套接宇.使应用程序可直接在数据链路层接收或发送未被系统处理的原始的数据报文(如ARP报文),用户也可以使用packet类型的套接宇在物理层上定义自己特殊的网络协议。只有注册号为0的用户(超级用户)进程才能建立或打开用于访问网络低层的套接字.在Linux系统中,用以下三种方式创建的packet套接字可直接用于访问数据链路层:
(1)PF_INET协议族中SOCK_PACKEI类型的套接字
(2)PF_PACKET协议族中SOCK_RAW类型的套接字
(3)PF_PACKET协议族中SOCK_DGRAM类型的套接字
Linux 2.0中对数据链路层的操作主要使用SOCK_PACKET定义的packet套接字.初始化定义如下:
sockfd=socket(AF_INET,SOCK_PACKET,protocol);
其中,protocol用于决定套接字所使用的物理层协议(在IEEE802.3中定义).笔者在此选择常用的物理层协议ETH_P_IP(Internet协议).SOCK_PACKET使用一种比较老的sockaddr_pkt数据结构来设置网络接口。
在Linux 2 2中使用PF_PACKET代替SOCK_PACKET来定义packet套接字.这种套接字的初始化定义如下:
sockfd=socket(PF_PACKET,socket_type,protocol);
其中socket_type只能为SOCK_RAW或SOCK_DGRAM,protocol为物理层通信协议(同上)。SOCK_RAW和SOCK_DGRAM类型套接字使用一种与设备无关的标准物理层地址结构sockaddr_ll,但具体操作的报文格式不同。SOCK_RAW套接字直接向网络硬件驱动程序发送(或从网络硬件驱动程序接收)没有任何处理的完整数据报文(包括物理帧的帧头),这就要求程序员必须了解对应设备的物理帧帧头结构,才能正确地装载和分析报文。SOCK_DGRAM套接字收到的数据报文的物理帧帧头会被系统自动去掉,同样,在发送时.系统将会根据sockaddr_ll结构中的目的地址信息为数据报文舔加一个台适的物理帧帧头。
默认情况下.从任何接口收到的符合指定协议的所有数据报文都会被传送到packet套
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
将php服务器架到linux下时没有注意该问题,
前几天倒是碰到了在linux下验证码的图片无法显示的情况,发现linux下也要有gd库的支持,于是安装了php5-gd(本人使用的是php5)
,这个问题解决了
今天突然发现img图片无法显示,上网搜了一把,又经过测试得出如下结论
<img src="pc.jpg"......>
他会以当前路径 ......
Linux 首先创建ramfs文件系统(/)
然后把initrd.img文件加载到 / 目录下。
其它文件系统是做为ramfs的一个目录结点挂载上去的。
initrd.img是一个用zip压缩的cpio格式的压缩文件。按下面步骤实现解压
第一步:将initrd.img改名为initrd.img.gz
mv initrd.img initrd.img.gz
第二步:用gunzip解压生成initrd.img
gunzi ......
一、下载
gd-2.0.33.tar.gz http://www.boutell.com/gd/
jpegsrc.v6b.tar.gz http://www.ijg.org/
libpng-1.2.7.tar.tar http://sourceforge.net/projects/libpng/
zlib-1.2.2.tar.gz http://sourceforge.net/projects/zlib/
freetype-2.1.9.tar.gz http://sourceforge.net/projects/freetype/
php-4.3.9.tar.g ......
linux下file descriptoer限制
默认分类 2009-11-21 14:47 阅读0 评论0
字号: 大大 中中 小小
Tuning file descriptor limits on Linux
Linux limits the number of file descriptors that any one process may open; the default limits are 1024 p ......