求双世宠妃云资源百度云资源!!!

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
有人说可以绑定同一个端口,怎么用?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
富足长乐, 积分 7899, 距离下一级还需 101 积分
论坛徽章:0
SO_REUSEADDR and SO_REUSEPORT Socket Options
富足长乐, 积分 7899, 距离下一级还需 101 积分
论坛徽章:0
具体可以看看unix网络编程
7.5 Generic Socket Options&&SO_REUSEADDR and SO_REUSEPORT Socket Options 相关说明
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的
多播,不用于TCP。
富足长乐, 积分 7899, 距离下一级还需 101 积分
论坛徽章:0
书上提到的第一种情况好像可以用于tcp
SO_REUSEADDR allows a listening server to start and bind its well-known port, even if previously established connections exist that use this port as their local port. This condition is typically encountered as follows:
a)A listening server is started.
b)A connection request arrives and a child process is spawned to handle that client.
c)The listening server terminates, but the child continues to service the client on the existing connection.
d)The listening server is restarted.
By default, when the listening server is restarted in (d) by calling socket, bind, and listen, the call to bind fails because the listening server is trying to bind a port that is part of an existing connection (the one being handled by the previously spawned child). But if the server sets the SO_REUSEADDR socket option between the calls to socket and bind, the latter function will succeed. All TCP servers should specify this socket option to allow the server to be restarted in this situation.
[ 本帖最后由 zhuhefang2006 于
20:52 编辑 ]
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
原帖由 zhuhefang2006 于
20:50 发表
书上提到的第一种情况好像可以用于tcp
SO_REUSEADDR allows a listening server to start and bind its well-known port, even if previously established connections exist that use this port as their l ...
谢谢,受教了
论坛徽章:1
当然可以。
先 listen,再 fork,就可以了。
论坛徽章:0
父进程创建监听socket,然后fork出子进程,那么这些进程都在监听同一个端口了.4331人阅读
Socket(6)
void ReceiveTest()
//1 创建套节字
System.Net.Sockets.Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReuseAddress,true);
// s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
//2 绑定到 4567 端口
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 4503);
EndPoint ep = (EndPoint)
////////////////重用端口 ,邦定同一个端口,///////////////
//这一句是一定要加的,加上这句可以使得两个程序监听同一个端口
s.ExclusiveAddressUse =
//重用端口
s.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
//////////////////
s.Bind(ep);
//3 加入多播组 234.5.6.7
MulticastOption optionValue = new MulticastOption(IPAddress.Parse(&239.239.239.239&));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, optionValue);
//4 接收多播组数据
Console.WriteLine(&开始接收多播组 234.5.6.7 上的数据...&);
byte[] buffer = new byte[1024];
while (true)
int nRet = s.ReceiveFrom(buffer, ref ep);
if (nRet & 0)
string data = Encoding.UTF8.GetString(buffer, 0, nRet);
Console.WriteLine(data);
uClient.Send(System.Text.Encoding.GetEncoding(&GB2312&).GetBytes(&这是IIS发过来的&), 15);
注意最关键的是这一段
//这一句是一定要加的,加上这句可以使得两个程序监听同一个端口
s.ExclusiveAddressUse =
//重用端口
s.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:421749次
积分:5442
积分:5442
排名:第4126名
原创:166篇
转载:105篇
评论:59条
(1)(1)(2)(1)(1)(1)(2)(1)(1)(1)(3)(1)(7)(12)(1)(2)(1)(1)(4)(2)(1)(3)(2)(4)(1)(1)(1)(6)(2)(1)(1)(1)(1)(1)(2)(4)(2)(10)(1)(1)(1)(21)(1)(3)(2)(1)(3)(4)(5)(2)(4)(9)(3)(8)(2)(3)(3)(1)(2)(2)(6)(11)(34)(15)(8)(2)(8)(1)(16)怎样实现多个进程在同一个端口监听,就像web服务器一样
主  题:
怎样实现多个进程在同一个端口监听,就像web服务器一样
请大虾指点,实现的机制是什么?怎样才能不导致冲突?
hoker_long(long)
) 信誉:100
<font color="#02-05-19 20:26:01Z
得分:<font color="#
有一个叫tunnel的技术,但是我没有完全搞懂,你可以去http://www.看看,他们有一个httptunnrl的东东,可以研究研究。
hoker_long(long)
) 信誉:100
<font color="#02-05-19 20:28:01Z
得分:<font color="#
另外有一篇文章,不过没有具体的讲工作机制!
由http后门探讨开
什么是局域网安全,系统管理员怎样才能保障局域网的安全?这是一个不断变化的安全概念,很长的一个时期以来,在局域网与外界互联处放置一个防火墙,严格控制开放的端口,就能在很大程度上掌握安全的主动权,方便的控制网内外用户所能使用的服务。比如,在防火墙上仅仅开放80,53两个端口,那么无论是内部还是外面的恶意人士都将无法使用一些已经证明比较危险的服务。
但要注意一点,防火墙在某种意义上是很愚蠢的,管理员对防火墙的过分依赖以及从而产生的懈怠情绪将不可避免的形成安全上的重大隐患,“通道“技术就是一个很好的例子,这也是本文要讨论的。
那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上。
我们举例说明:
A主机系统在防火墙之后,受防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,B主机系统在防火墙之外,是开放的。现在假设需要从A系统Telnet到B系统上去,怎么办?使用正常的telnet肯定是不可能了,但我们知道80端口是开放的。这个时候使用Httptunnel通道,就是一个好的办法,思路如下:
在A机器上起一个tunnel的client端,让它侦听本机的一个不被使用的任意指定端口,如1234,同时将来自1234端口上的数据指引到远端(B机)的80端口上(注意,是80端口,防火墙允许通过),然后在B机上起一个server,同样挂接在80端口上,同时指引80端口的来自client的转发到本机的telnet服务端口23,这样就ok了。现在在A机上telnet本机端口1234,根据刚才的设置数据包会被转发到目标端口为80的B机,因为防火墙允许通过80端口的数据,因此数据包畅通的穿过防火墙,到达B机。此时B机在80端口侦听的进程收到来自A的数据包,会将数据包还原,再交还给telnet进程。当数据包需要由B到A返回时,将由80端口再回送,同样可以顺利的通过防火墙。
实际上tunnel概念已经产生很久了,很有可能读者也早已使用过类似的技术,只不过自己不清楚罢了。不相信的读者可以看看如下网http://www.。这是一个以提供tunnel服务为生的公司,通过他们的在线tunnel server,局域网内的用户可以使用被防火墙所屏蔽的ICQ,E-MAIL,pcanywhere, AIM,MSN, Yahoo,Morpheus,Napster等等诸多软件。读者是不是可以由此想想自己是否接触及使用过这一概念?
好了,下面来介绍一个在“非公开领域”使用的的通道软件,httptunnel
什么是httptunnel?
什么是Httptunnel,嘿嘿,作者偷个懒,从它的主页上直接拷贝一段话,自己看吧,说的很清楚。
httptunnel creates a bidirectional virtual data connection tunnelled in HTTP requests. The HTTP requests can be sent via an HTTP proxy if so desired.
This can be useful for users behind restrictive firewalls. If WWW access is allowed through a HTTP proxy, it's possible to use httptunnel and, say, telnet or PPP to connect to a computer outside the firewall.
怎么样,很清楚吧,我们下面大致介绍一下它的使用。
1:httptunnel的使用
httptunnel目前比较稳定的版本是3.0.5, 支持各种常见的unix系统,包括window平台。可以从ftp://ftp.nocrew.org/pub/nocrew/unix/httptunnel-3.0.5.tar.gz下载,它的安装是比较简单的,照INSTALL文件做就可以了,这里不介绍。
整个软件安装完毕后,我们会得到两个关键文件,htc和hts,其中htc是客户端(c),而hts是server(s)端,我们来看看具体怎么使用的。
假设有A(域名)机,B(域名)机,两机均为solaris环境,A机在防火墙保护中,B机在防火墙以外,防火墙的管理员控制了访问规则,仅ALLOW 80和53端口的进出数据包。而我们的任务是要利用Httptunnel从A机telnet到B机上,穿过防火墙的限制。操作如下:
首先我们在A上启动client端,命令很简单,:
#htc -F 1234 :80,
系统回到提示符下,此刻我们用netstat Can 可以看到系统内多出了1234端口的侦听
*.1234 *.* 0 0 0 0 LISTEN
然后我们在B机上启动server端,命令如下:
#hts CF localhost:23 80
系统回到提示符下,此刻我们用netstat看
*.80 *.* 0 0 0 0 LISTEN
80端口处于侦听状态,需要注意的是,如果系统本身跑的有web服务(80端口本身处于侦听),并不会影响Httptunnel的工作。
Ok,server以及client端都启动了,我们可以开始我们的“通道“试验了,在上执行一下如下命令看看:
#telnet localhost 1234
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
This is yiming's private box! Any question,contact me with yiming@security.
^_^,看到B机的登录提示符了,输入账号密码看看是否工作正常?
Login:yiming
Password: () )
bak check go httpd lost+found mrtg run soft wg
呵呵,工作正常呀,和正常的telnet没有什么差别哟。
仔细观察整个过程,会发现在最开始的地方显示的是Trying 0.0.0.0...,Connected to 0.而不是Trying …,Connect to ,这就很直观的可以看出来client端是转发1234数据包到本机80端口的。(然后再转发到远端)而不是直接连接远端的B机。
hoker_long(long)
) 信誉:100
<font color="#02-05-19 20:39:07Z
得分:<font color="#
上面是比较直观的测试,ommmm,我还有点怀疑,server和client之间会不会还是通过23端口通讯,只不过我们没有看到呢?抓取数据包来看看吧,它可是不会骗我们哟。我们在server起个tcpdump瞧瞧。
#tcpdump host
tcpdump: listening on hme0
14:42:54.767 & .80: S :(0) win 8760 &mss 1460& (DF)
14:42:54..80 & .51767: S :(0) ack
win 8760 &mss 1460& (DF)
14:42:54.768 & .80: . ack 1 win 8760 (DF)
14:42:54.768 & .80: P 1:44(43) ack 1 win 8760 (DF)
14:42:54.768 & .80: P 44:48(4) ack 1 win 8760 (DF)
篇幅所限,上面只是截取了结果中的一点点数据包,但已经可以说明问题了,我们看到server和client之间顺利的完成了三次握手,然后开始push数据,而且通讯确实走的是80端口。有点意思噢,呵呵。
看是看出来了,但太不直白,到底在搞什么呀,我们再稍微改动一下tcpdump的运行方式,进一步在来看看telnet的数据是否被封装在80端口的数据包内传输?
#tcpdump CX host
14:43:05. & .51768: . 60) ack 89 win 8760 (DF)
0xdc 3b23 4000 ff06 e2c2 yyyy yyyy E...;#@......f.D
0x0010 xxxx xxxx 0050 de42 5fd5 ac4f 39ac 016f .f.#.P.B_..O9..o
0x38 98e4 61 6c20 3636 P."8....total.66
0xa64 d78 722d ..drwxr-xr-x..2
0x6f 6f74 72 6f6f 7420 9.root.....root.
呵呵,这次清楚多了,上面应该是一次ls命令的输出结果,可以清楚的看到telnet的结果!果然telnet的数据是在80端口的数据包内!
由上面的内容,我们可以想象一下,如果单纯的信赖防火墙,会产生什么样的后果?
这种行为不能被发现吗?使用入侵检测系统来看看,先用snort,这可是大名鼎鼎的open free IDS啦,我使用了snort 1.8.2,算是比较高的版本了,它对整个过程抓获的数据包产成了告警,如下:
[**] WEB-MISC whisker splice attack [**]
12/02-14:42:54.767-& :80
TCP TTL:251 TOS:0x0 ID:3327 IpLen:20 DgmLen:42 DF
***AP*** Seq: 0x49CA0BA7 Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:03.767 -& :80
TCP TTL:251 TOS:0x0 ID:3439 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C20 Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:04.768-& :80
TCP TTL:251 TOS:0x0 ID:3496 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C4E Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
我们看到snort对抓获的数据包产生了WEB-MISC whisker splice attack的告警,然而这种攻击并没有发生,同时snort对tunnel数据包没有察觉。这样snort就同时犯了IDS系统的两个大忌,false positive,false negative。是snort这个入侵检测系统水平太低吗?不是,作者本人使用snort已经将近一年了,感觉好极了。而且snort可是刚刚(2001年12月)被一家英国的独立测试实验室NSS评为THE BEST的,它的对手可是包括ISS,CISCO SECURE IDS,CA ETRUST,CYBERSAFE CENTRAX,NFR等诸多高档的商用IDS系统呢。
同样,作者试了试手头其他的IDS系统,没有能够察觉的(包括商用的)。
这也很正常,因为这也是基于签名的IDS系统的通病,目前决大数IDS系统包括著名的商用软件ISS,NFR等都是基于签名的,也就是说系统维护着一套特定攻击数据包的数据模式签名。系统工作时,检查经过的数据包的内容,和自己数据库内数据模式签名对比,如果和某种攻击模式签名相同,那么就判断发生了某种攻击。
由此我们可以看出很明显的存在若干问题:如对签名的依赖不可避免的导致两个结果,false negative ,false positive。也就是说会产生漏报和误报,这一点很容易理解,当新出现一种攻击模式时,由于IDS系统内没有相应的数据签名,那么就不可能捕获相应的攻击数据包,false negative由此发生。同时,过于依赖签名模式也很容易误报,就象我们上面的例子。同时,对数据签名的依赖会在一定程度上降低系统性能―经过的数据包都需要和IDS系统的签名对照。
此外,基于签名的IDS系统本身有可能由于依据签名这一特性而被攻击,一个例子是stick ,这个程序的作者利用IDS系统进行签名匹配工作原理,发送大量带有攻击特征的数据包给IDS系统,使IDS系统本身处理能力超过极限,从而导致IDS系统无法响应。按照作者Coretez Giovanni的说法,运行2秒钟stick就能使著名的商用IDS系统ISS real secure崩溃。
好了,看来依靠手头的IDS是无法察觉这种行为了,有其它办法吗?我们仔细分析一下截获的httptunnel数据包再说吧。
仔细观察截获的httptunnel数据包,我们发现紧跟着三次握手完成后的第一个数据包包含着一个POST动作,是由htc(client端)发送到hts(server端)的。如下:
14:55:39.767 & .80: S :(0) win 8760 &mss 1460& (DF)
0x2c d3cc 4000 fb06 53c9 xxxx xxxx E..,..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3c
.f.D.7.P..j&....
0x38 04 05b4 0000 `."8..........
14:55:39. & .51767: S :(0) ack
win 8760 &mss 1460& (DF)
0x2c cb85 4000 ff06 5810 yyyy yyyy E..,..@...X..f.D
0x0010 xxxx xxxx 0050 ca37 af98 77e4 d1ec 6a3d .f.#.P.7..w...j=
0x38 ef79 b4 `."8.y......
14:55:39.767 & .80: . ack 1 win 8760 (DF)
0x28 d3cd 4000 fb06 53cc xxxx xxxx E..(..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5 .f.D.7.P..j=..w.
P."8.7........
14:55:39. & .51767: . ack 44 win 8760 (DF)
0x28 cb86 4000 ff06 5813 yyyy yyyy E..(..@...X..f.D
0x0010 xxxx xxxx 0050 ca37 af98 77e5 d1ec 6a68 .f.#.P.7..w...jh
0x38 070c 0000 P."8....
14:55:39.767 & .80: P 1:44(43) ack 1 win 8760 (DF)
0x53 d3ce 4000 fb06 53a0 xxxx xxxx E..S..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5 .f.D.7.P..j=..w.
0x38 d23a 54 202f 696e P."8.:..POST./in
0x2e c 3f63 30 dex.html?crap=10
0x38 48 2e .HTTP/1.
看起来是发送client端的数据包到server端的,那么server有什么反应呢?我们往下看
seacool(阿伟)
) 信誉:99
<font color="#02-05-20 20:48:10Z
得分:<font color="#
web服务器也只有一个进程呀,只是它在连接建立之后,会产生一个连接Socket(前面的那个叫作监听Socket).用来传数据的是连接Socket.
yokishiro(狂狼啸月)
) 信誉:100
<font color="#02-05-20 21:23:24Z
得分:<font color="#
fly2skylee(飞天)
) 信誉:100
<font color="#02-05-22 16:00:25Z
得分:<font color="#
这并没有实现多个进程在同一个端口侦听,只是在这个端口上做了个代理.
让大家的连接服务都从这个代理上走而已.
cloudwon(地球之巅)
) 信誉:100
<font color="#02-05-24 17:23:06Z
得分:<font color="#
呵呵,查了一些资料,明白了。
使用了setsockopt函数的so_reuseaddr技术,可以实现一个连接socket和多个监听socket。
谢谢大家了。
,得分记录:
hoker_long
fly2skylee习题答案5-6_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
习题答案5-6
上传于|0|0|文档简介
&&网络协议分析,答案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 欢世宠妃百度云资源 的文章

 

随机推荐