Linux网络通信之原始套接字SOCKET_RAW

本文详细介绍了Linux中原始套接字SOCKET_RAW与标准套接字的区别,包括数据处理方式、协议处理层次及其实现类别。原始套接字可以直接处理IP层的数据,不受TCP或UDP限制,可以用于实现如ICMP、IGMP等协议。同时,文章还阐述了不同情况下原始套接字如何选择和接收数据,并提到了网络协议的国际标准结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.原始套接字与标准套接字传输区别

a.标准SOCKET

APP--->STD_SOCKET--->TCP--->IP--->ETH

APP--->STD_SOCKET--->UDP--->IP--->ETH

b.原始SOCKET

APP--->RAW_SOCKET--->IP--->ETH

2.数据处理区别

a. SOCK_RAW可读写内核没处理的IP数据,

SOCK_STREAM只处理TCP数据

SOCK_DGRAM只处理UDP数据  (数据报最大长度为32kb)

b.内核不能将TCP或者UDP产生的IP数据传递给任何原始套接字,内核会将TCP或UDP产生的IP数据对应的TCP或UDP处理

c.IP数据不关注内核是否是有已注册句柄来处理这些数据,都会复制一份IP数据并传递给与协议匹配的原始套接字

d.内核会对不能识别的协议类型数据进行校验后,查看是否有与该协议匹配的原始套接字负责处理这些数据,如果有,复制一份并传递给原始套接字,如果没有,内核丢弃该数据并返回主机不可达消息给原主机

e.如果原始套接字绑定了固定本机IP, 内核只将目的地址为本机绑定IP 的数据传递给原始套接字,如果 原始套接字没有绑定本机固定IP,内核会把所有IP数据报都传递给这个原始套接字.

f.原始套接字在调用了绑定与连接(connect)函数后,内核只将源地址为连接IP地址的IP数据报传递给这个套接字

g.原始套接字没调用绑定与连接(con

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值