有关网络以及网络编程的几个初级问题请教各位(200分)

  • 主题发起人 主题发起人 snowrain2k
  • 开始时间 开始时间
S

snowrain2k

Unregistered / Unconfirmed
GUEST, unregistred user!
1.本机IP与所设网关可否在不同的子网上?这样,本机可否与外界正常通信?
比如:202.100.100.122为本机IP,而网关设为202.100.98.1(网关在本机所接路由器上已经设置,原来是202.100.100.1),理论上只要本机有网关的ip-mac映射就可以通信,将不是同子网的包通通发到网关,但是试验发现不行,网关不相应本机发出的ARP包,即使在本记用arp命令静态加入一条正确的网关的ip-mac对也无法生效,也就无法正常通信。
为什么?

2.同一子网中,两台机器的IP与MAC一模一样,这两台机器是否会报冲突?
以前光是IP不一样,报冲突是因为ARP cache中的IP-MAC 对不一致,这时候就是一致的,还报不报冲突?为什么?

3.我在我的机器上装了两个网卡来模拟一个router,使用win2k,不想利用win2k只带的,想找一个有源码的router模拟软件来学习router的原理以及具体过程,不知道哪里可以找到这样的软件?

4.用socket在windows上基于UDP编程
client不绑定任何端口,server绑定一指定端口,发现可以正常通信。
请问:client绑不绑定有什么区别?
如果上面client不绑定时,是因为os随意分配一个未用的临时端口给Client,那么如果Client发出udp包后,接收Server的相应包之前,有一个程序绑定了这个Client使用的临时端口了,那么Client是否会收到Server的相应包?

5.当网关只开放了http与ftp端口时,就无法使用oicq,上次有人提过,即时只开放了http端口,也可以正常使用ociq,只要在本机上安装一个什么sock2http的软件即可,不知该软件是怎么工作的?

那个sock2http是不是相当于一个proxy,ociq发向外界的包通过它转成http的包(??),然后相应包到本机时该软件又转发给ociq。
1)网关为http开放的是tcp端口,而ociq使用的是udp协议,端口号是怎么解决的。
2)sock2http是怎么判断到达http端口的包中,哪些是正常的http包,哪些是ociq的包。

不好意思,盼望高人解我的迷惑,谢谢。
 
关注。
问题提得不错。
 
呵呵,这些问题好象不算初级问题了吧!
 
呵呵,帮你顶!
 
谢谢iknowabc!
呵呵,斑竹能否提示一二?
 
1.“网关在本机所接路由器上已经设置,原来是202.100.100.1”,这句话什么意思?
ARP只能用在子网内部,主机与网关应在同一子网内,但我不清楚这个子网是物理子网还是
逻辑子网,这个问题挺有意思,我也想知道答案。你可以把子网掩码设成255.255.240.0再
试试。
2.不会报冲突。你可以做一下实验(在windows下可以通过一定方法冒充MAC)
3.其实装了两块网卡就可以作为路由器,而不必模拟。但我不知道是否有这样的模拟软件。
或者可以装一个linux?
4.client不绑定时,确实是因为os随意分配一个未用的临时端口给Client,但这种情况下
这个端口已经绑定,若有另一个程序绑定该端口,系统是要报错的,所以不会出现“有一个
程序绑定了这个Client使用的临时端口”的情况。
5.没用过sock2http,但我想sock2http的作用只是在发送时将UDP封装在HTTP报文中,在接收
时再将HTTP中的UDP包分解出来。所以
“1)网关为http开放的是tcp端口,而ociq使用的是udp协议,端口号是怎么解决的。”
--这个应该不成问题,它发给网关的是就是http(TCP),自然就解决了端口的问题。
“sock2http是怎么判断到达http端口的包中,哪些是正常的http包,哪些是ociq的包。”
--我想使用sock2http生成的http包中会有特定的字段或标志吧。

我不知道说得对不对,抛砖引玉吧,希望大家接着讨论。

 
to zw84611:
4.在不绑定时os的确会分配一个端口给它用,但并不会绑定,另一个程序可以绑定这个临时端口,
所以一旦占用,那个不绑定的程序就不会再收到包了。呵呵,不绑定就是不绑定,OS会分配一个临时端口,但不会帮你绑定。
 
1、对了,这个必须设置掩码才可以。
在一个设置掩码为255.255.0.0似乎页应该可以。
 
学习
up.......
 
2、你的思路太好玩了,呵呵,俺没有实验过,不过下面这个可供你测试,我的计算机以前实验成了,但是现在不行了。

只能得到网络适配器的Mac地址,但是并不一定是硬件本身的,也可以是注册表中设置的。

修改注册表的方法:
HKEY_LOCAL_MACHINE/system/Currentcontrolset/services/classes/net,在下面找到一项叫params的,
在里面加一项NetworkAddress的主键,默认写你要设的mac地址,要连续的写,如004040404040
然后再到params主键下,添一个字符串,名字为NetworkAddress,值还设为你要设的mac,也连续写。
关闭注册表,重新启动,你的网卡地址已改。打开网络邻居的属性,双击网卡会发现有一个高级设置,
实际就是你在注册表中加的新项NetworkAddress,
 
3、Wingate似乎就是这样的一个软件
 
你的问题太难了,我很多都是看不清楚,[:D]
 
本机IP与所设网关必须在相同的子网,你这个例子,路由器和你的机器都设置掩码255.255.0.0就可以
 
2.同一子网中,两台机器的IP与MAC一模一样,这两台机器是否会报冲突?
可能不报地址冲突,但是应该不能正常通信
 
4、 os随意分配一个未用的端口给Client,但不是临时的端口,他一直保留到client这个socket关闭为止
 
sock2http应该是由一个特殊的服务器吧,接收到请求会自动安要求发出udp,接收到以后又转成
http的答复返回
 
问题很有意思。我也提提我的看法与不懂的。
sock2http应该要腾讯那边有配合的服务器才行,
发回来的包也应该是HTTP包吧(网关只开了TCP 80),不知SOCK2HTTP怎么接管了这个包的,
http包应该是由IE之类的软件收的,而且即使接收了,有怎么判定哪个包是HTTP的,哪个包是qq的?
 
呵呵,你没有看见sock2http上可以填proxy的ip吗,当然有专门的sock proxy,有的收费,有的免费
 
后退
顶部