原始套接字和普通的TCP套接字有什么不同?
2个回答
展开全部
原始套接字可以读写内核没有处理的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 广告
2024-10-28 广告
作为江苏聚推传媒科技有限公司扬州分公司的工作人员,对于矩形连接器有一定的了解。矩形连接器是一种电子元件,广泛应用于各种电子设备中,具有结构紧凑、连接可靠、传输性能稳定等优点。在我们的业务范围内,虽然主要专注于技术服务、技术开发、软件开发等领...
点击进入详情页
本回答由思沐源提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询