sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包 2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧 3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))过时了,不要用啊 理解一下SOCK_...
by icunow - Linux文档专区 - 2014-04-15 14:32:30 阅读(1588) 回复(4)
关于linux下原始套接字发送分片包的问题? 如题,在linux环境下,使用原始套接字发送数据包, 如果是普通的小于1500字节的TCP,UDP,ICMP数据包都没有问题, 但是如果是大于1500字节,程序就会分片IP包,可是问题来了 IP分片的代码都是同一个函数,但是TCP,UDP协议只能够发出第一个分片包,余下的分片包就发不出来了, 而ICMP则没有这个问题,都能够发出来,并且可以收到对方的响应 分片包都是使用sendto发送,返回值都是对...
在调试unix网路编程的例子,内容如下: #include "unp.h" int main(int argc, char **argv) { int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SE...
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接 字的 选项了. getsockopt 和setsockopt int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optl en) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen) level 指定控制套接字的层次.可以取三种值: 1)SOL_SOCKET:通用套接字选项. 2)IPPRO TO_IP:IP 选项. 3)IPPROTO_TCP:TCP 选项. o...
服务器端
#include
recv 和send recv 和send 函数提供了和read 和write 差不多的功能.不过它们提供 了第四个参数来控制 读写操作. int recv(int sockfd,void *buf,int len,int flags) int send(int sockfd,void *buf,int len,int flags) 前面的三个参数和read,write 一样,第四个参数可以是0 或者是以下的组合 | MSG_DONTROUTE | 不查找路由表 | | MSG_OOB | 接受或者发送带外数据 | | MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 | | MSG_WAITALL ...
struct timeval timeo = {3, 0}; retval = select(sockfd+1,&set, NULL,NULL,&timeo); 我在linux下用 ret=recvfrom(sockfd,recvpacket,sizeof(recvpacket),0,(struct sockaddr *)&from_addr6,&fromlen6); 来接收ICMPv6响应信息,但是超时问题一直没解决,上面两句也用到了,但是不知道所以然,请哪位解释一下!先谢过了
linux网络编程中,套接字选项是一个很重要的编程问题,当解决某些问题时我们可以考虑使用套接字选项。会很好利用套接字选项来编程可以提升你的网络编程水平!下面转载一篇很好的讲解套接字选项so_reuseaddr的文章。 socket编程:SO_REUSEADDR例解 kevintz 2000-6-19 网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用。而 且很多网友在编写网络程序时也会...
计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺 序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需 要进行转换。 我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的: struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char sa_data[14]; /* 14 字节...