原始套接字和普通的TCP套接字有什么不同?

 我来答
qyq592140
推荐于2019-09-10 · TA获得超过9811个赞
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:3万
展开全部

原始套接字可以读写内核没有处理的IP数据包,而流套接字(就是TCP流)只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。

这两句程序你就可以创建一个原始套接字.然而这种类型套接字的功能却与TCP或者UDP类型套接字的功能有很大的不同:TCP/UDP类型的套接字只能够访问传输层以及传输层以上的数据,因为当IP层把数据传递给传输层时。

下层的数据包头已经被丢掉了.而原始套接字却可以访问传输层以下的数据,,所以使用raw套接字你可以实现上至应用层的数据操作,也可以实现下至链路层的数据操作.

比如:通过sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))方式创建的raw socket就能直接读取链路层的数据.

1、使用原始套接字时应该注意的问题(参考<<unix网络编程>>以及网上的优秀文档)

2、对于UDP/TCP产生的IP数据包,内核不将它传递给任何原始套接字,而只是将这些数据交给对应的

UDP/TCP数据处理句柄(所以,如果你想要通过原始套接字来访问TCP/UDP或者其它类型的数据,调用socket。


思沐源
2024-10-28 广告
作为江苏聚推传媒科技有限公司扬州分公司的工作人员,对于矩形连接器有一定的了解。矩形连接器是一种电子元件,广泛应用于各种电子设备中,具有结构紧凑、连接可靠、传输性能稳定等优点。在我们的业务范围内,虽然主要专注于技术服务、技术开发、软件开发等领... 点击进入详情页
本回答由思沐源提供
错骞位博敏
2019-09-06 · TA获得超过3657个赞
知道大有可为答主
回答量:3128
采纳率:26%
帮助的人:209万
展开全部
我们常见的就是原始、tcp、udp3种套接字,主要区别:
原始套接字可以读写内核没有处理的IP数据包,而流套接字(就是TCP流)只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式