网卡和它与网络的接口(50分)

  • 主题发起人 主题发起人 cat.yy
  • 开始时间 开始时间
我只谈谈以太网,目前以太网的传输介质多是采用双绞线+hub/switch或者50欧同轴电缆。
以太网涉及很多基本概念。以太网采用的技术是CSMA/CD,全称是Carry Sense Multiple
Access with Collition Detection,即载波侦听/冲突监测。当网卡工作时,它会不停
的监测以太网总线上载波,以便随时接收侦。当网卡想要发送一个数据侦时,它总是选
择在以太总线没有载波的时候发送,这样,大部分的冲突可以解决。但是冲突还是可能
发生的。当两个网卡同时检测到一个没有载波的间隔后,同时开始发送数据侦,冲突就
发生了。解决这种冲突的方法是冲突检测(Collition Detection),当以太总线上某
一个网卡检测到有冲突时,它便试图发送足够大量的无用侦,加剧这种冲突以便所有的
网卡都能知道这个冲突。当发送数据侦的网卡检测到冲突,它会停止发送,然后采用一
种算法等待一段随机的时间,然后重新检测载波,在适当的时机重新发送。
 
以太网为了在网卡之间发送数据侦,必须有一条总线,网卡把带有地址信息的数据侦
广播的以太总线上,其他所有的网卡就都得到这个广播,接着它们测试是不是属于自
己的数据侦,是则接收。网卡在发送侦之前要检测是不是已经有别的网卡在发送,也
就是载波侦听。在发送侦的时候,要检测是不是有冲突,即是冲突检测。为了做到这
两点,以太网对数据侦的最小长度和网的最大直径有要求。太大的网络直径或者太小
的数据侦都会检测不到载波和冲突的情况。在满足以太网这些要求的情况下,以太总
线和其中的网卡形成一个域,称之为“冲突域”。用一条同轴电缆把若干的网卡连起
来,就形成一个冲突域。
 
为了增大网络直径,出现了网桥。网桥把两个冲突域连通起来,利用数据侦中的网络号
域,控制数据侦的广播。假设N1,N2为两个网段,A,B在N1中,C,D在N2中,那么,A-->B
和C-->D的数据侦都只在各自的网段中广播。但是如果有A-->C的数据侦,只要通过网桥
把N1中的数据侦广播到N2中。网桥使得A-->B和C-->D不再发生冲突,所以N1,N2是两个
冲突域。但是,N1和N2又是连通的,它们构成一个大的域,叫做“连通域”
 
HUB——
为了便于管理,人们把总线缩小到一个HUB(集线器)中,每一个网卡使用一条双绞线连
到HUB上。根据网卡和HUB的不同,有10Base-T,100Base-TX,100Base-T4等标准,他们分别
使用2,2,4对线进行连接。例如在10Base-T中用了1236四根两对线,一对用于发送,一
对用于接收。在HUB中,为每一个端口提供了一个收发器,它的任务就是把网卡发送来的
信号放到HUB中的总线上,并从总线上接受信号,发送到网卡上。HUB,双绞线和网卡形成
了一个冲突域。
 
SWITCH——
随着100M和更快的以太网的出现,网卡之间的冲突以及每一时间总线上只能有一个网卡
发送成为了主要瓶颈。因此,出现了没有冲突的一太网。这种以太网采用Switch来连接
各个网卡,Switch使用交换技术来避免出现冲突。Switch为其上的每一个口设置一个寄
存器栈用于保存该口上网卡的物理地址。这样,网卡A给网卡B发送的数据侦就不用在总
线上广播了,而是通过查找物理地址,直接送到网卡B所在的口上,从而解决了冲突。
Switch使得以太网上的数据传送成为点对点传送,把冲突域缩小。
 
哎,累了,有空再灌吧!

---------------------------------------------------------------------

SiNianKoala 就是 SiNianKoala
 
<b>SiNianKoala</b>,意外收获,嘿嘿
不过问题还没解决

有没有什么办法把网卡锁住(非物理方法)
如果不知道口令(程序设的) 没法通过网卡连入网络

我原想拦截所有发往网卡的消息 把他们吃了 然后发一个错误提示框声称
“XXX错误,可能无法完成操作”
但<b>Cheka</b>说“估计一般的钩子是做不到了,得用VxD”,
我首先不清楚VxD究竟是什么样的技术

大家看看有什么好法儿
 
呵呵,现在真的比较累。感兴趣的话找点时间看看Windows2000 DDK和Windows 98 DDK
那里面有详细的说明。

---------------------------------------------------------------------------
SNKoala == SiNianKoala
 
可是,VXD究竟是什么???
 
<i>期期盼盼冷冷清清急急切切奇奇</i>
<i>帘卷西风,人比黄花苦</i>

Vxd好象是虚拟设备,不知对否??
 
<b>期期盼盼冷冷清清急急切切奇奇<b>
<b>帘卷西风,人比黄花苦<b>

歪歪猫(cat.yy)怎么这么凄凉!
 
最近在摸索Sygate的实现方法,给你贴点东东,看有没有帮助。
<pre>
Dump of file Wg0n.sys

File Type: EXECUTABLE IMAGE

Section contains the following imports:

ntoskrnl.exe
10F04 Import Address Table
11020 Import Name Table
0 time date stamp
0 Index of first forwarder reference

1C2 KeInitializeSpinLock
F2 InterlockedExchange
2D DbgPrint
389 RtlQueryRegistryValues
47 ExFreePool
FE IoAllocateMdl
246 MmMapLockedPages
3A ExAllocatePoolWithTag
18F IofCompleteRequest
81 ExfInterlockedRemoveHeadList
7E ExfInterlockedInsertTailList
11F IoDeleteDevice
35A RtlInitUnicodeString
115 IoCreateDevice
12D IoFreeMdl
106 IoBuildPartialMdl

NDIS.SYS
10EE0 Import Address Table
10FFC Import Name Table
0 time date stamp
0 Index of first forwarder reference

73 NdisFreePacket
2B NdisAllocatePacket
3E NdisCloseAdapter
74 NdisFreePacketPool
2C NdisAllocatePacketPool
EB NdisOpenAdapter
104 NdisRegisterProtocol
67 NdisDeregisterProtocol
</pre>
上面是从Sygate的SYS中DUMP出来的东东。
<b>路漫漫其修远兮,吾将上下而求索</b>
要是谁知道Sg的详细实现方法,麻烦帮我一把,免去我苦苦的摸索。
 
帮助绝对有,不过首先得明白该如何“解毒”
(唉,知道的太少,让大家见笑了,不过还想锁那网卡)

-------------------------------------------------------------
<b>SNKoala == SiNianKoala</b>,
你是否每次都删除自己??
你在哪??
 
我又来了!
其实上面的东西没什么用处,我只是想看看能不能从上面的东西中找到努力的方向而已。
因为Sygate能实现NAT功能,所以它肯定能达到你的目的的。上面是Sygate安装的驱动的
静态引入表,也就是说Sygate的驱动用到了这些函数,所以我觉得,Sygate是实现了一个
协议栈,然后再把处理过得packet传给原来的tcp/ip协议栈。所以,你也可以学Sygate
实现一个协议栈,然后重新邦定。不过如果只是想破坏,我想协议栈可以不实现而只是
修改一下网络设备的邦定即可。可以看看网络设备驱动程序的安装部分,里面有怎么修改
邦定的说明。
我的要求可能比你的还要复杂。朋友公司的网络限制只能使用110端口(也就是只能收收
pop3的信),我想实现一个透明的tunnel,让所有的tcp/ip操作都透过这个tunnel,由
110端口传到另外一台能上网的机子上。不过太难了,所以到现在还是无从下手。况且现
在也没时间。所以索性在这借个地方,看看有那位高手以前做过,能出手相助,不胜感激!
 
<b>SNKoala == SiNianKoala</b>
能告诉我你在哪儿吗(catyy1101@263.net)??
 
又是网卡!
网卡区分是否接受桢是通过一个判别的寄存器,
你可以通过一个端口来设置它。具体的我忘了。
立刻参考<<西安电子科技大出的<<网卡的设计,驱动分析>>书名不对,大概是这个意思>
不过是居于dos下的还有大量的汇编源代码。你看一下就明白了。
在以太网中的桢的传输是每个机器都受到的,只不过在网卡的设置上
一般都是非自己的ip的包和公用的包都不接受。
设置一下,接受所有包就成了杂乱模式
在linux下只要在配置里改一下就课轻松做到.
不过这就是所有的sniffer的工作原理.
但哟一个缺陷,就是只对同一网段里才有效。
如果2台机器江是通过了hub等连接的无效。

sNKoala的要求做的其实也可做到.
不过你自己的在重心收到包后进行在一次的打包,
这非的作驱动不可,要不速度跟不上。
这个驱动就是祈祷一个转发器的作用.
windowsDDK里有一个网络的驱动的例子.
研究一个,在根据个个协议的格式重新打包,发出.
 
小猫眯:这个问题我很感兴趣,不过50分怕是吝啬了一点——我准备开一个系列问了
 
fox:你说的书我没有找到,能否确认一下书名和出版日期?

我开了一个系列问“拷问网卡”,希望众位大侠赐教——分数没问题,我还剩5000呢!
 
拷问网卡(0):
以太网的电气参数规格
 
50分太少
我开300分吧
大家快看新问题吧
 
后退
顶部