我是靠谱客的博主 悲凉抽屉,最近开发中收集的这篇文章主要介绍Linux网络通信之原始套接字SOCKET_RAW,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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.原始套接字没调用绑定与连接(connect)函数时,内核会将所有与协议匹配的IP数据报传递给这个原始套接字

3. 原始套接字实现类别:

a.链路原始套接字 --->接收发送链路层报文数据  (自行构造封装报文首部)

b.网际原始套接字 --->接收发送网际层报文数据 (发送时自行构造IP报文头)

4.协议及所在层

最后

以上就是悲凉抽屉为你收集整理的Linux网络通信之原始套接字SOCKET_RAW的全部内容,希望文章能够帮你解决Linux网络通信之原始套接字SOCKET_RAW所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部