社区
网络编程
帖子详情
原始套接字的问题。
wkgenius
2003-07-07 06:57:58
我用原始套接字写了个程序,并把网卡设为混杂模式,想接收网络上的所有数据,可是出了自己的机器发出和收到的数据,只能接到别的机器和网关通信的,还有别的机器进行广播和组播的数据,而且,奇怪的是,我可以接收到网络上所有的ICMP报文。
请问为什么?
原始套接字是工作在IP层还是链路层?
...全文
148
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层。
UVa 10361 - Automatic Poetry
其实 这都题目并不难,就是简单处理字符串的
问题
,不过有一点要注意的是,在取s2,s3,s4,s5 的时候,空格也是其中的一部分。 下面是我的代码: #include #include int main() { int i,j,n,x,key,key1; int flag; char s1[1000][100]; char s2[100],s3[100],s4[100],s5[10
UVA - 10361 Automatic Poetry
UVA - 10361 Automatic Poetry题目大意:题目大意:给出两个序列,第一个 s1s3s5,第二个 S…。输出两个序列,第一个删除括号,即 s1s2s3s4s5,第二个将 s2 与 s4 交换位置后替换…,即 Ss4s3s2s5。解题思路:根据 < 和 > 将字符串分成 5个部分 交换 s2 s4 即可#include
#include
#in
UVA 10361-Automatic Poetry
UVA 10361-Automatic Poetry题目大意: 给俩个字符串,第一个含有俩次<>,第二个以…结尾,输出第一条将第一个字符串的<>去掉,第二条将第二个字符串的…改为规定规律的字符串解题思路: 边输入边输出边判断#include
#include
#include
using namespace std; int main(
uva10361 Automatic Poetry
10361 Automatic Poetry “Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!” In Tomb Raider XIV, Lara is, as ever, gunning her way through ancient Egyptian pyramids, prehistoricca
UVa10361 Automatic Poetry
Problem I Automatic Poetry Input: standard input Output: standard output Time Limit: 2 seconds Memory Limit: 32 MB “Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!”
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章