WEB开发网
开发学院网络安全防火墙 Linux防火墙数据包捕获模块 阅读

Linux防火墙数据包捕获模块

 2006-07-04 12:38:22 来源:WEB开发网   
核心提示: int socket(int domain, int type,int protocol);3)recvfrom()函数定义用recvfrom()函数来实现接收数据包,recvfrom()是具备“阻塞式I/O”特性的函数,Linux防火墙数据包捕获模块(4),能够在

int socket(int domain, int type,int protocol);

3)recvfrom()函数定义

用recvfrom()函数来实现接收数据包,recvfrom()是具备“阻塞式I/O”特性的函数,能够在没有数据包到达的情况下暂时挂起等待,直至接收到数据包后,再激活转入下一步处理。recvfrom()函数的原型为:

int recvfrom(SOCKET s,char FAR *buf,int len,int flags,struct sockaddr FAR *from,int *fromlen);

本函数从已连接套接口上接收数据,并捕获数据发送源的地址。对于SOCK_STREAM类型的套接口,最多可以接收缓冲区大小个数据。如果套接口被设置为线内接收带外数据(选项为 SO_OOBINLINE),且有带外数据未读入,则返回带外数据。应用程序可通过调用ioctlsocket()的SOCATMARK命令来确定是否有带外数据待读入。对于SOCK_STREAM类型套接口,忽略from和fromlen参数。

4)一些“字节顺序”转换函数

因为网络和主机采用的存储字节时内存顺序安排方式的差异,就存在“字节顺序”的问题。在网络环境下存储时,高位字节存放在内存的起始位置,而低字节则存放在较高的位置。主机形式的存放顺序恰好相反,低位字节存放在内存的起始位置。这就需要以下相应的字节顺序转换函数:

inet_ntoa():将32位的网络二进制数值转换为可读十进制形式的带点分割符的IP地址。

inet_addr():将带有分割符的IP地址转换为32位的unsigned long的格式。

ntohs():将网络字节顺序转换为32位的主机字节顺序。

ntohl():将网络字节顺序转换成16位的主机字节顺序。

htonl():将32位u_long的值由主机字节顺序转换为网络字节顺序。

htons():将16位u_long的值由主机字节顺序转换为网络字节顺序。

上一页  1 2 3 4 5 6 7  下一页

Tags:Linux 防火墙 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接