定义一个pf_packet = socket(PF_SOCKET, SOCK_RAW, htons(ETH_P_RARP)); 就可以利用函数sendto和recefrom来读取和发送链路层的数据包了(当然,发送ARP包,上面第三个参数要变为 htons(ETH_P_ARP),或者IP的包为ETH_P_IP,可查看文件/usr/include/linux/if_ether.h文件看到所有支持的协议)。 原文链接:https...
SOCK_DGRAM UDP UDP Yes SOCK_RAW IPv4 IPv6 Yes Yes (2)bind函数原型 bind(将一个本地协议地址与socket文件描述符联系起来) 所需头文件 #include <sys/types.h> #include <sys/socket.h> 函数说明 将一个协议地址与socket文件描述符联系起来 函数原型 int bind(int sockfd, const struct sockaddr *addr,...
SOCK_SEQPACKET该协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。 SOCK_RAW socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协议) SOCK_RDM 这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保...
1、socket数据类型 socket类型在Liunx和Python是一样的, 只是Python中的类型都定义在socket模块中, 调用方式socket.SOCK_XXXX 1)流式socket(SOCK_STREAM)用于TCP通信 2)数据报socket(SOCK_DGRAM)用于UDP通信 3)原始socket(SOCK_RAW)用于新的网络协议实现的测试等 4)socket.AF_INET 用于服务器之间网络通信 2. Soc...
SOCK_RAW IPv4 IPv6 Yes Yes (2)bind函数原型 bind(将一个本地协议地址与socket文件描述符联系起来) 所需头文件 #include <sys/types.h> #include <sys/socket.h> 函数说明 将一个协议地址与socket文件描述符联系起来 函数原型 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) ...
type:指定socket类型。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。 protocol:故名思意,就是指定协议。常用的协议有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议(这个协议我将会单独开篇讨论...
数据报Socket(SOCK_DGRAM):用户数据报协议(UDP)则使用数据报Socket,它是无连接的、不保证可靠传输的协议,适合对延迟敏感的应用,如在线视频会议。 原始Socket(SOCK_RAW):这种类型的Socket允许直接访问底层协议,用于那些需要绕过网络协议栈直接向网络发送原始数据的特殊应用。
流式套接字(SOCK_STREAM) 提供面向连接的、可靠的数据传输服务,数据无差错,无重复的发送,且按发送顺序接收。 数据报式套接字(SOCK_DGRAM) 提供无连接服务。不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。 原始套接字(SOCK_RAW) 参考: 《Linux C 编程一站式学习》 ...
SOCKET_RAW 原始套接字(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、ICMP协议。 SOCK_STREAM是数据流,一般为TCP/IP协议的编程。 SOCK_DGRAM是数据报,一般为UDP协议的网络编程; 第三个参数protocol:指定协议。最终采用的协议。常见的协议有IPPROTO_TCP、IPPTOTO_UDP。 如果第二个参数选择了SOCK_STREAM,那么...