什么是套接字编程中的RAW套接字 [英] what is RAW socket in socket programming

查看:226
本文介绍了什么是套接字编程中的RAW套接字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我完成套接字编程时,我无法清楚地理解RAW_SOCKET.

When i gone through socket programming i could not clearly understand RAW_SOCKET.

我的理解是

如果使用此选项AF_INET打开一个套接字,则RAW_SOCKET表示我可以创建我的now头文件 在AF_INET标头之前,但最终以AF_INET协议的格式发送数据. 是我的理解是正确的.如果有错,可以给我解释一下.

If i open a socket with this option AF_INET , RAW_SOCKET mean's I can create my now header before AF_INET headers but finaly the data is send in the format of AF_INET protocol. Is my understanding is correct . If wrong can some explain me.

谢谢

推荐答案

数据包在每一层中都有两个不相交的部分:标头,有效载荷

In every layer,packet has two disjoint sections: Header, Payload

非原始套接字意味着您可以确定传输层有效载荷.即创建传输,网络和数据链路层标题是OS的任务.

non-Raw socket means you can just determine Transport Layer Payload. i.e it is OS task to create Transport,Network and Data Link layer headers.

原始套接字意味着您可以确定数据包的每个部分,无论是标头还是有效载荷.请注意,原始套接字是一个通用词.我将原始套接字分类为:网络套接字和数据链接套接字(或L3套接字和L2套接字)

Raw socket means you can determine every section of packet,either header or payload. Please note that raw socket is a general word. I categorize raw socket into: Network Socket andd Data-Link Socket (or alternativly L3 Socket and L2 Socket)

在L3套接字中,您可以确定网络层中数据包的标头和有效负载.例如,如果网络层协议为IPv4,则可以确定IPv4标头和有效负载.因此,您可以设置传输层标头/有效负载,ICMP标头/有效负载,路由协议标头/有效负载.

In L3 Socket you can determine header and payload of packet in network layer. For example if network layer protocol is IPv4, you can determine IPv4 header and payload. Thus you can set transport layer header/payload, ICMP header/payload, Routing Protocols headder/payload.

在L2套接字中,您可以在数据链路层中设置数据包的标头和有效负载,即数据包中的所有内容.因此,您可以使用L3 Socket完成所有工作,并确定ARP标头/有效载荷,PPP标头/有效载荷,PPPOE标头/有效载荷.....

In L2 Socket you can set header and payload of packet in data link layer, i.e everything in packet. Thus you do everything done with L3 Socket + determine ARP header/payload, PPP header/payload, PPPOE header/payload , .... .

正在编程:

  • socket(AF_INET,RAW_SOCKET,...)表示L3套接字,网络层协议= IPv4
  • socket(AF_IPX,RAW_SOCKET,...)表示L3套接字,网络层协议= IPX
  • socket(AF_INET6,RAW_SOCKET,...)表示L3套接字,网络层协议= IPv6
  • socket(AF_PACKET,RAW_SOCKET,...)表示L2套接字,数据链路层协议=以太网

第三个参数指定有效负载协议.

Third parameter specify payload protocol.

这篇关于什么是套接字编程中的RAW套接字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆