社区
网络编程
帖子详情
原始套接字的问题。
wkgenius
2003-07-07 06:57:58
我用原始套接字写了个程序,并把网卡设为混杂模式,想接收网络上的所有数据,可是出了自己的机器发出和收到的数据,只能接到别的机器和网关通信的,还有别的机器进行广播和组播的数据,而且,奇怪的是,我可以接收到网络上所有的ICMP报文。
请问为什么?
原始套接字是工作在IP层还是链路层?
...全文
98
17
打赏
收藏
原始套接字的问题。
我用原始套接字写了个程序,并把网卡设为混杂模式,想接收网络上的所有数据,可是出了自己的机器发出和收到的数据,只能接到别的机器和网关通信的,还有别的机器进行广播和组播的数据,而且,奇怪的是,我可以接收到网络上所有的ICMP报文。 请问为什么? 原始套接字是工作在IP层还是链路层?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hookuy
2003-07-14
打赏
举报
回复
gz
farfh
2003-07-14
打赏
举报
回复
gz
wkgenius
2003-07-10
打赏
举报
回复
我收到的ICMP报文目的地址既不是广播,也不是组播。
我就是我感到奇怪的原因呀。
cwanter
2003-07-10
打赏
举报
回复
你确信收到的ICMP报文的目标地址是广播地址吗?是不是组播地址?
wkgenius
2003-07-09
打赏
举报
回复
可是在交换机网络下,我可与接到其他机器之间传送的ICMP报文,也就是说,为什么交换机会把ICMP报文广播?
cwanter
2003-07-09
打赏
举报
回复
ICMP可以是广播数据,也可以不是~
NetDoggy
2003-07-09
打赏
举报
回复
gz
wkgenius
2003-07-08
打赏
举报
回复
为什么说ICMP是广播数据?
kingzai
2003-07-08
打赏
举报
回复
你首先确认你的局域网环境是HUB还是交换机,如果是交换机,必须在网关或代理上。如果你想监测IP层以下的包,则必须使用WINPCAP或驱动。
qinghero
2003-07-07
打赏
举报
回复
学习
wkgenius
2003-07-07
打赏
举报
回复
ICMP是广播数据?为什么?
Kingston
2003-07-07
打赏
举报
回复
1、从OSI体系结构来看,集线器属于OSI的第一层物理层设备,而交换机属于OSI的第二层数据链路层设备。也就意味着集线器只是对数据的传输起到同步、放大和整形的作用,对数据传输中的短帧、碎片等无法进行有效的处理,不能保证数据传输的完整性和正确性;而交换机不但可以对数据的传输做到同步、放大和整形,而且可以过滤短帧、碎片等。
2、从工作方式来看,集线器是一种广播模式,也就是说集线器的某个端口工作的时候,其他所有端口都能够收听到信息,容易产生广播风暴,当网络较大时网络性能会受到很大的影响,那么用什么方法去避免这种现象呢?交换机就能够起到这种作用!当交换机工作的时候,只有发出请求的端口和目的端口之间相互响应而不影响其他端口,因此交换机就能够隔离冲突域和有效的抑制广播风暴的产生。
3、从带宽来看,集线器不管有多少个端口,所有端口都是共享一条带宽,在同一时刻只能有二个端口传送数据,其他端口只能等待,同时集线器只能工作在半双工模式下;而对于交换机而言,每个端口都有一条独占的带宽,当二个端口工作时并不影响其他端口的工作,同时交换机不但可以工作在半双工模式下而且可以工作在全双工模式下。
wkgenius
2003-07-07
打赏
举报
回复
那交换机和HUB格式工作在哪一层呢?
交换机和HUB有什么区别?
cwanter
2003-07-07
打赏
举报
回复
http://www.xfocus.net/articles/200104/147.html
http://www.xfocus.net/articles/200205/395.html
http://www.xfocus.net/articles/200204/377.html
Kingston
2003-07-07
打赏
举报
回复
你可以把程序放在网关路由上测试。
Kingston
2003-07-07
打赏
举报
回复
你的机器连接的不是HUB,是交换机等,这样你的网卡就不能收到不属于你的数据,因为交换机和HUB是工作在不同的层。
铖邑
2003-07-07
打赏
举报
回复
你必须是集线器才能接收其它机器的数据,ICMP是广播数据,所以你可以收到,原始套接字工作在IP层。
linux
原始套接字
绑定网卡,Linux
原始套接字
实现分析
之所以要转这篇文章,是因为这篇文章是我看到的同类博客中写得最好的,但非常可惜,这篇博客中只有一篇文章,没有什么收藏价值,故将其原文转载,以供今后学习查阅。本文从IPV4协议栈
原始套接字
的分类入手,详细介绍了链路层和网络层
原始套接字
的特点及其内核实现细节。并结合
原始套接字
的实际应用,说明各类型
原始套接字
的适应范围,以及在实际使用时需要注意的
问题
。一、
原始套接字
概述协议栈的
原始套接字
从实现上可以分为“...
原始套接字
简介
一
原始套接字
概述
原始套接字
,指在传输层下面使用的套接字。流式套接字和数据报套接字这两种套接字工作在传输层,主要为应用层的应用程序提供服务,并且在接收和发送时只能操作数据部分,而不能对IP首部或TCP和UDP首部进行操作,通常把这两种套接字称为标准套接字。 但是,如果我们开发的是更底层的应用,比如发送一个自定义的IP包、UDP包、TCP包或ICMP包,捕获所有经过本机网卡的数据包,伪装本机...
原始套接字
要解决上面这些
问题
需要
原始套接字
。
原始套接字
主要应用在底层网络编程上,之前的TCP、UDP的套接字称为标准套接字,下图所示为标准套接字与
原始套接字
之间的关系。标准套接字与网络协议栈的TCP、UDP层打交道,而
原始套接字
则与IP层级网络协议栈核心打交道。
原始套接字
提供以下3种标准套接字不具备的功能。使用
原始套接字
可以读/写分组。例:ping程序就使用
原始套接字
发送ICMP回显请求,并接受ICMP回显应答。用于多播的守护程序,同样适用
原始套接字
来发送和接收IGMP分组。上述功能同样允许使用构造的应用程序完全作
原始套接字
概述
原始套接字
(SOCK_RAW)不同于流式套接字、数据报套接字。
原始套接字
是基于IP数据包的编程,流式套接字只能收发TCP协议的数据,数据报套接字只能收发UDP协议的数据。前面讲述的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据,原有的头部信息在传递过程中被“隐藏”了。 协议栈的
原始套接字
从实现上可以分为“链...
java
原始套接字
打开_
原始套接字
标准套接字分为:l 流式套接字(SOCK_STREAM):面向连接的套接字,应用于TCP应用程序。l 数据包套接字(SOCK_DGRAM):无连接的套接字,应用于UDP应用程序。
原始套接字
:是一种对原始网络报文进行处理的套接字,主要用途有:l 发送自定义的IP数据包l 发送ICMP数据包l 网卡的侦听模式,监听网络上的数据包l 伪装IP地址l 自定位协议的实现
原始套接字
主要应用于底层...
网络编程
18,358
社区成员
64,164
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章