1
lwjefSub 2012-12-22 21:04:27 +08:00
不对,就算不独立端口也不是独占的,再说分明都有独立IP。
|
2
cabbala 2012-12-22 21:06:36 +08:00
你是说一个局域网只能并发60000+ 噗
|
3
ericFork 2012-12-22 21:07:33 +08:00
可惜事情不是你感觉的这个样子的……
1. 作为代理服务商,大量事实证明,并非端口占用导致的…… 2. UDP 的 OpenVPN 封得更惨…… |
4
cabbala 2012-12-22 21:14:11 +08:00
Q:单IP做NAT能支持多少并发连接呢?
A:65535 这个答案是错的 |
5
hemingway 2012-12-22 21:16:15 +08:00
学习了
|
6
plan9 OP |
7
cabbala 2012-12-22 21:31:12 +08:00
|
9
clino 2012-12-22 21:36:42 +08:00
|
10
sinxccc 2012-12-22 21:43:33 +08:00
楼主的大部分猜想是没什么技术根据的,不过第一句部分是对的。
运营商确实有封端口的行为,只不过运营商封锁端口的话,是这个端口根本就无法使用,行为跟墙不一样,很容易区分。 比如说大部分运营商会封锁80端口的上传,部分运营商一段时间内封锁过 PPTP 的端口。 |
11
cabbala 2012-12-22 21:43:38 +08:00 1
NAT的问题,lz我举个例子吧
假如NAT下有两台机器 192.168.0.2 192.168.0.3 他们分别从源端口8888访问不同的主机1.1.1.2和1.1.1.3的88端口 lz你觉得这两个链接是互斥的么?实际不是的。因为识别一个包有五要素: 源地址,源端口,目的地址,目的端口,协议 在这个例子中,NAT做地址转换只是将源地址修改为NAT的对外IP,那么在这个例子中,源地址,源端口,目的端口和协议这四项两个包都是一样的,但是由于目的地址不一样,所以两个包是可以区分的,不互斥。。 |
12
plan9 OP @cabbala
192.168.0.2 192.168.0.3 公网ip是1.1.1.1 他们发出去的包 192.168.0.2源地址1.1.1.1,源端口8888,目的地址1.1.1.2,目的端口88,协议tcp 192.168.0.3源地址1.1.1.1,源端口8888,目的地址1.1.1.3,目的端口88,协议tcp 那样的话不是就变成了1.1.1.1跟1.1.1.2建立连接,1.1.1.1跟1.1.1.3建立连接 然后就是1.1.1.1转发给0.2,0.3 他们不是应该使用两个端口吗? 我nat确实不大懂...这样理解错在什么地方啊? |
13
plan9 OP @cabbala @sinxccc
找到技术根据了, google了一下,确实nat只能理论支持最大同时65535个连接数 原文在这里http://itpro.nikkeibp.co.jp/article/COLUMN/20090525/330579/ 不过是日文的 linux确实可以通过修改文件描述符增加,不过一般没有人改这个东西吧 |
14
cabbala 2012-12-22 23:26:28 +08:00
@plan9 你知道一个大型NAT网络有多少用户么,有多少连接么。。
以我们以前的学校为例,最少有几千用户同时在线,而出口只有三个IP。每个用户一般得近百连接,开P2P上千也很正常 要是最大65535并发连接,那这个网络还怎么用? 你Google的方法不对,重新Google吧。。。网上中文的最少有三篇,英文的不计其数。。。 |
15
cabbala 2012-12-22 23:44:59 +08:00
其实这个问题可以换成下面的问题:
一台http服务器只有一个80端口,为什么可以同时和多台client同时通信? lz想明白这个问题,就能想明白上面的问题了。 |
16
clino 2012-12-22 23:47:58 +08:00
@plan9 对nat没仔细研究过,刚看了 http://baike.baidu.com/view/16102.htm 里的'NAT工作流程',对你的疑问"他们不是应该使用两个端口吗?"的解答应该是在外界看来,这两个连接确实是从1.1.1.1的同一个端口发出的,但是1.1.1.1收到两个连接的包确实可以分别送回内网不同的ip,因为之前"NAT 主机并且会记忆这个联机的封包是由哪一个client 端传送来的"
|
17
plan9 OP @cabbala
所以说大型nat网络经常会出现连接中断的问题啊 那你们以前学校为什么几千个用户就用3个ip,一个不就行了? http://www.360doc.com/content/07/0816/17/26398_676992.shtml http://wenku.baidu.com/view/36bedf40336c1eb91a375dca.html https://www.cpug.org/forums/nat-network-address-translation/6013-number-connections-behind-hide-nat.html 一台http服务器只有一个80端口,为什么可以同时和多台client同时通信? 这个我可以很确定的告诉你,80端口只是连接的时候使用,然后服务器会新开一个端口跟客户端进行通信 @clino 1.1.1.1跟两台机器进行通信的话肯定会使用2个端口的,当然这里的端口只是文件描述符,你不可能一个端口同时跟两台机器进行通信把? |
18
wwwjfy 2012-12-23 00:40:54 +08:00
查了一下没找到1个ip是否可以有超过65535个端口,虽然我猜对于路由这种配置不会太难
问题是如果端口已经用完,应该是移到下一个可用的ip,或者新连接无法建立吧,不觉得应该切断已有连接 过段时间连接同样端口成功就认为是这样的原因也比较武断,可能性不止这一种。至少GFW可能封一段时间会解封,比如访问google就是这样 另外,除非有什么特殊事件,用户不会一下子猛增,运营商应该有这种准备,应该会有好多备用ip,而且工作着的ip也不应该是满负荷的.. |
19
binux 2012-12-23 00:45:34 +08:00
@plan9
192.168.0.2源地址1.1.1.1,源端口8888,目的地址1.1.1.2,目的端口88,协议tcp 192.168.0.3源地址1.1.1.1,源端口8888,目的地址1.1.1.3,目的端口88,协议tcp 首先,只有192.168.0.2/3能发起到1.1.1.2/3的请求。 现在192.168.0.2/3开始发包,它各自声明目的地是1.1.1.2/3:88,ok,没问题 现在1.1.1.2/3开始返回,因为它看不见192.168.0.2/3,它只能发往1.1.1.1:8888 问题来了,1.1.1.1怎么知道应该把1.1.1.2/3的两个包发给谁 很简单,因为1.1.1.1知道192.168.0.2发起的是到1.1.1.2:8888的连接,那1.1.1.2:8888返回的包肯定是给192.168.0.2 over |
21
plan9 OP @wwwjfy
>>查了一下没找到1个ip是否可以有超过65535个端口,虽然我猜对于路由这种配置不会太难 嗯,我也没有找到很多资料 不过找到了这个 http://wenku.baidu.com/view/36bedf40336c1eb91a375dca.html 貌似是Cisco的某款路由器的设置文档,nat的最大tcp连接数可以0到65535之间可以自由设置 >>问题是如果端口已经用完,应该是移到下一个可用的ip,或者新连接无法建立吧,不觉得应该切断已有连接 这个我也不懂...感觉运营商可能会切断长时间占用的连接 >>过段时间连接同样端口成功就认为是这样的原因也比较武断,可能性不止这一种。至少GFW可能封一段时间会解封,比如访问google就是这样 这个我道没有考虑到,是有点武断 >>另外,除非有什么特殊事件,用户不会一下子猛增,运营商应该有这种准备,应该会有好多备用ip,而且工作着的ip也不应该是满负荷的.. 现在可用ip越来越少了,用户越来越多,运营商应该会给每个ip分配固定的用户吧,感觉有很大可能连接数会超过限制 |
22
plan9 OP |
23
Kymair 2012-12-23 01:56:16 +08:00
@plan9 在NAT的问题的更正确一些,楼上几位同学有点想当然了。
@cabbala “NAT做地址转换只是将源地址修改为NAT的对外IP”, 如果NAT只是做这一件事情,那么 两个clients都通过一个NAT device访问同一个server, 那么server发回的包NAT要怎么区分哪个给A哪个给B呢? 答案是,NAT有一个port pool, 会给每个客户分配一个不同的端口,然后用状态表记录下来。 参见http://en.wikipedia.org/wiki/NAT#Translation_of_the_Endpoint |
24
binux 2012-12-23 01:57:17 +08:00
|
25
plan9 OP |
26
Kymair 2012-12-23 02:12:55 +08:00
10.0.0.101要打开一个网页,那么浏览器取一个可用的端口比如1001,这个包发到路由器10.0.0.1时,路由器不仅会把source IP换成自己10.0.0.1, 还会把source port 1001也换成port pool的一个可用的比如2001. 同样10.0.0.102这时也访问网络,路由器会把102的包的source IP换成10.0.0.1, source port换成port pool里的可用值比如2002.
从server返回路由器的包,dest IP都是10.0.0.1, 这个时候就能用port是2001还是2002来识别出包是给101还是102 |
27
cabbala 2012-12-23 02:17:53 +08:00
@Kymair 我举得例子专门挑的目标地址不同的。。。你却在说目标地址相同的情况。
目标地址相同NAT自然会改变源端口了。但这个也推导不出65535这个所谓的NAT最大并发连接数啊 端口是可以复用的,五要素{源地址,源端口,目的地址,目的端口,协议(TCP/UDP)}只要有一个不同就可以区分 |
28
cabbala 2012-12-23 02:19:42 +08:00
@plan9
「同一个端口不可以建立复数个通信的,我记得端口复用只是转发而已」 所以说我才让你好好想想为什么一个只开放了80端口的服务器,却可以连成百上千个client。。。端口是可以复用的,那么多程序在用。。 |
29
cabbala 2012-12-23 02:22:28 +08:00
@plan9 「这个我可以很确定的告诉你,80端口只是连接的时候使用,然后服务器会新开一个端口跟客户端进行通信」
这个。。。。,HTTP服务器是不会多开其他端口的,你信不信我用iptables把除80外的端口全封了,我的web server照样上百并发? |
30
Kymair 2012-12-23 02:54:14 +08:00
@cabbala Cisco的这个网页上讲了各种NAT方式,Static NAT, Dynamic NAT, Overloading和Overlapping. 我在上面提到的是最常见的Overloading. 你可以仔细看看。
http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094831.shtml#examples 的确五个值有一个不同就可以区分,只不过现实中有这样的实现只是你想当然而已。NAT为了节省port去同时根据目标地址及源地址来转发,转换表会相当庞大,实现逻辑会复杂许多。当然如果你有见过这样的NAT设计,麻烦给我网址我去了解一下。 |
31
Kymair 2012-12-23 03:01:21 +08:00
@plan9 尝试一下回答你的问题,那就是其实不管是我们的ADSL, 还是大学里的校园网,大部分都是有routable的public IP的。
|
32
cabbala 2012-12-23 03:13:32 +08:00
@Kymair 「“NAT做地址转换只是将源地址修改为NAT的对外IP”, 如果NAT只是做这一件事情。。。」
拜托。。不要去较真我给lz做的形象化的解释好么。说粗了较真,说细了你说的也不是全部。。 说了这么多,我觉得我说的不清楚,lz不理解。你既然很了解。。那么正好评论下lz的这几个观点,我也学习学习: 「因为好多服务商提供给你的都是一个局域网的ip,而公网ip是由好多人共有的,但是一个ip只能有6万多个端口,所以如果你长时间使用某个端口的,可能会被你的服务商切断连接,或者你所在的ip已经使用了超过单个ip最大端口数也会被切断连接」 「这个我可以很确定的告诉你,80端口只是连接的时候使用,然后服务器会新开一个端口跟客户端进行通信」 原文评论吧,别扯太多。 |
33
cabbala 2012-12-23 03:19:49 +08:00
@Kymair 「尝试一下回答你的问题,那就是其实不管是我们的ADSL, 还是大学里的校园网,大部分都是有routable的public IP的。」
也较下真: 1. ADSL 看运营商,移动和原来的铁通网络,在某些地区就不是公网IP,而是在NAT里 2. 大学校园举个反例,我的母校 南开。虽然确实给分了一些IP,但整个宿舍区的网络出口只有三个IP。。。教育网一个,电信一个,联通一个。 这种情况在国内大学不算少见,说不上大部分都有公网IP 3. 还有大量的人上网用的小区宽带而不是ADSL,所谓的小区宽带,很多地方指的不同。我们那边基本算是去拉根光纤,分个IP,然后搞局域网。 记得以前emule好像有做过统计,国内lowid的比例是很高的。 |
34
cabbala 2012-12-23 03:43:30 +08:00
@Kymair 「NAT为了节省port去同时根据目标地址及源地址来转发,转换表会相当庞大,实现逻辑会复杂许多。当然如果你有见过这样的NAT设计,麻烦给我网址我去了解一下。」
找台Linux,开启NAT,怎么开就不用说了吧。。。这个NAT就是你说的实现逻辑很复杂的那种NAT。 |
35
cabbala 2012-12-23 03:47:58 +08:00
@Kymair 另外补充一个Linux的iptables内的NAT特性,它会尽量保持端口不变。就如我的例子中所说的那样,192.168.0.2和192.168.0.3的sport都是8888,它通过NAT转换后,端口也是8888,除非这个端口被提前用作它用。
而不是你举得例子中的「source port换成port pool里的可用值比如2002」 |
36
Ley 2012-12-23 10:30:37 +08:00
我想求教一下,如果端口被封,该怎么办呢? 自己是通过 Linode 的 VPS 设的一个 L2TP 的 VPN ,但是从开会起,自家的长宽就再也无法连接了,而学校的铁通则一直没有问题。这种情况下,该怎么处理才好?
|
37
Kymair 2012-12-23 10:46:19 +08:00
@cabbala 我只是想说明现实中的实现基本上是不会去按目标地址去判断的,Cisco那个网页四种NAT方式均不是这样,运营商做的NAT也不是这样。
关于你所说的iptables的那个NAT特性,麻烦给我链接我去看一下。我想看看根据目标地址进行NAT的实现是怎样的。 |
38
Kymair 2012-12-23 11:06:55 +08:00
@cabbala
1. 我已经说了 _大部分_ 是有routable的IP的,并没有说_所有_。我的大学和旁边的都有。如果你需要“大多数”的数据的话,中国电信的固网宽带用户截至11月是8900万户(http://www.chinatelecom-h.com/gb/global/home.htm),而中国的宽带用户去年是1.5亿左右(http://news.sohu.com/20120412/n340313585.shtml)。 2. emule的lowid? 即使我们用的是有公网IP的ADSL, 基本上都会用路由器共享给多人使用。 路由器的WAN是routable的IP, 但我们自己的电脑还是路由器NAT过的 |
39
plan9 OP @Kymair 多谢普及nat知识,受教了
@cabbala 详细跟你解释一下这个 >>这个我可以很确定的告诉你,80端口只是连接的时候使用,然后服务器会新开一个端口跟客户端进行通信 tcp通信的时候,根本不是你想像的那样,服务器开一个端口,然后就通过这个端口与客户端连接了.正确的是这样 1,服务器打开80端口并进行监听,这个端口只是用来监听用的,具体通信的时候并不使用(专业术语忘记叫什么了) 2,客户端打开一个通信用的端口,连接服务器的80端口 3,服务器打开一个新的通信用端口,通过这个端口与客户端进行通信,这个过程防火墙是不会进行干扰的 这个不是我瞎说的,如果我没记错的话应该是[UNIX网络编程]这本书 http://www.amazon.cn/s/ref=nb_sb_noss_1/475-4931510-8706610?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&url=search-alias%3Daps&field-keywords=unix+network+programming 再说一下我所理解的端口复用 比如你通过80端口入侵了某个服务器,但是对方防火墙设置了只有80端口可以访问,这时候你会让对方服务器监听本地8000端口,然后让你的程序监听80端口,当有正常的http过来的时候,你的程序转发到本地8000端口上面,然后当你的连接过去的时候你的程序会进行某些你所想要的动作.所以说端口复用开始打开了2个端口的 至于nat,@Kymair的解释应该是很全面了 |
40
plan9 OP |
41
Kymair 2012-12-23 12:24:19 +08:00
|
42
Kymair 2012-12-23 12:28:26 +08:00
|
43
plan9 OP |
45
plan9 OP @Kymair
我的意思是netstat命令应该只是显示监听的端口 比如你通过80连接服务器,然后跟服务器通信的时候会使用另外一个端口,但是netstat显示的只是你监听的端口 上面这句话前半句有依据,后半句没有... |
46
clino 2012-12-23 14:26:28 +08:00
@plan9 "你不可能一个端口同时跟两台机器进行通信把?"这有什么不可能的?对于服务端程序来说,对于提供nat服务的ip来说都是必须具备的能力.
|
47
Kymair 2012-12-23 14:37:40 +08:00
@plan9 不是。你可以google "single port multiple connectionss site:stackoverflow.com" 读一下那几个问题和回答。
|
48
Kymair 2012-12-23 14:48:42 +08:00
@plan9 :-) 我觉得在谈到“连接”时很容易产生一种错觉,时常误以为真有像电话网络那样的独占连接存在,但TCP/IP是基于包的。
IP只是为了找到对应的host, port只是为了找到对应host上的对应process. 多个client同时连接server的同一个端口是没问题的,server内部是可以用source IP, source port区分开来的。 |
49
plan9 OP @clino
tcp通信中ip是用来区别不同机器的,而端口是来区别同一个机器的里不同服务的 每当你连接外部的服务器的时候,系统会自动分配给你一个端口,这个端口是不重复的 而服务端,我已经说了很多次了,通信的用端口并不是监听的端口,服务器端会打开一个新的端口来与client进行通信,而原来的监听用的端口会继续对过来的连接进行监听 >>另外补充一个Linux的iptables内的NAT特性,它会尽量保持端口不变。就如我的例子中所说的那样,192.168.0.2和192.168.0.3的sport都是8888,它通过NAT转换后,端口也是8888,除非这个端口被提前用作它用。 如果NAT只是将源地址替换成一个IP地址,端口保持不变的话是无法区分两个连接的,所以NAT后会修改其中一个源端口的 根据Kymair讲的,路由会维护一个port pool,这个prot pool应该就是保证端口不重复的 |
50
plan9 OP @Kymair
可能我说的不清楚... 一般写tcp程序的时候 服务端通常会 bind(),listen(),accept(),而accept会返回一个新的文件描述符,服务器通过这个文件描述符与客户端进行通信,这就是我说的服务端会通过新的端口与客户端进行通信 而客户端会socket(),connect(),而socket也会返回一个新的文件描述符,这也就是我说的没建立一个新的连接,都会分配一个新的端口的意思 |
51
rankjie 2012-12-23 15:21:14 +08:00
看了此贴,我又默默抱起了我的 [数据通信与网络] ...走了...
|
52
plan9 OP @Kymair
我理解你的意思了,你说的是不考虑这个[虚拟的连接]的情况,单纯从tcp/ip来看,只是一些包而已 我考虑的是假想这个连接是真是存在的,而process之间正是通过这个虚拟的连接来进行通信的 角度不一样,看待问题的方式也不一样,所以产生了分歧 |
53
enj0y 2012-12-23 17:22:49 +08:00
楼主说得不对。想想可能么?香港、美国、日本,所有机房都这样做了?
|
54
clino 2012-12-23 21:03:59 +08:00
@plan9 "通信的用端口并不是监听的端口,服务器端会打开一个新的端口来与client进行通信,而原来的监听用的端口会继续对过来的连接进行监听" 你真的确定是这样吗?实际情况是这样吗? 你这样的说法我能不能得出一个服务端ip连接的客户端不能超过65535?
那你看看这篇"完成端口模型:并发连接数达到9.1万! " http://zhanyonhu.blog.163.com/blog/static/16186044201042055221518/ 再参考这篇 "单机最大tcp连接数" http://wanshi.iteye.com/blog/1256282 nat服务程序和服务端程序的行为差别主要在于nat服务需要对接受和发送的包做地址替换,这部分其实我之前贴的已经解释清楚了,只是你不认真去看而已 |
55
clino 2012-12-23 21:06:18 +08:00
@plan9 才看到你说的这句"而客户端会socket(),connect(),而socket也会返回一个新的文件描述符,这也就是我说的没建立一个新的连接,都会分配一个新的端口的意思"
原来你说的文件描述符等同于"端口"啊... 那你知道你所谓的这个"端口"的限制是多少?是65535吗? |
56
plan9 OP @clino
非要逼我去查书... UNIX网络编程 第四章第六节 他们返回的实际上是文件描述符,但是书中写的是返回的是一个socket,每个socket都有自己的ip跟端口 监听用的socket称作listening socket,通信用的socket称作connected socket 而且问了一下,linux内核每次新建一个socket确实会分配一个新的端口 |
57
clino 2012-12-24 09:26:44 +08:00
@plan9 "而且问了一下,linux内核每次新建一个socket确实会分配一个新的端口" 这句话依据在哪里??? 照你这么说一台 http 服务器的80端口根本不可能并发超过 65535 个客户端连接.
那么再贴几个链接: http://www.cnblogs.com/Solstice/archive/2011/07/01/2095411.html 在真实的 Linux 系统中,可以通过调整内核参数来支持上百万并发连接,具体做法见: http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-3 至于nat服务的实现,根本不可能使用 socket 编程接口,因为实际上nat是对tcp协议的hack |
58
plan9 OP |
59
clino 2012-12-24 11:00:16 +08:00
@plan9 另外也可以去google下 "linux kernel tuning for c500k"
你的想法看起来也是不稀奇的,被称为"The 64k Connection Myth" 看这段的最后一句,如果这种想法是对的,那么DDoS将会是非常容易的 "The 64k Connection Myth It’s a common misconception that you can only accept 64,000 connections per IP address and the only way around it is to add more IPs. This is absolutely false. The misconception begins with the premise that there are only so many ephemeral ports per IP. The truth is that the limit is based on the IP pair, or said another way, the client and server IPs together. A single client IP can connect to a server IP 64,000 times and so can another client IP. Were this myth true it would be a significant and easy-to-exploit DDoS vector." |
60
clino 2012-12-24 11:07:07 +08:00
@plan9 "内核会分配端口跟修改内核参数可以支持65535以上兵法有矛盾吗" 你看到的内核参数修改是修改支持65535端口吗? TCP协议没有对65535这个端口上限做限制吗?你自己修改了内核参数就可以突破TCP协议的限制吗?
|
61
plan9 OP 还给我定了性了。。。
我有半句说到并发问题吗?并发是跟文件描述符等系统资源有关的,这个我知道 http://lxr.linux.no/linux+v3.7/include/net/sock.h http://lxr.linux.no/linux+v3.7/net/socket.c 看了下最新的linux内核socket实现,确实没有分配新的端口,只是建立了一个新的socket,并且新的socket的ip跟port都是跟原来的socket是一样的。分配新的端口这点的确是我说错了 |
63
plan9 OP @clino
我之前的帖子说的是客户端连接服务端,客户端的端口会不够,因为客户端对每个socket都是会分配不同的端口的 而且端口只是内核里记录的一串数字而已,这跟并发又有什么关系?真正的通信是靠文件描述符的,就算每次accept分配不同端口,只要在内核里改变端口数,照样可以超过65535,当然这样做就违反tcp协议了。 |
64
clino 2012-12-24 16:09:12 +08:00
@plan9 "我之前的帖子说的是客户端连接服务端,客户端的端口会不够"这是你对于NAT最初提出的问题,这个你应该已经知道自己是错的了
我提到并发是因为你中间提到的"linux内核每次新建一个socket确实会分配一个新的端口"这句话->可以导出服务端不可能支持>64k连接,然后我找资料来证明是可以>64k的,用来证明你这句话是乱说的,你不要又扯到之前NAT相关的问题 |
65
plan9 OP @clino
我刚才的回复没有说到nat啊,我的意思是普通的socket客户端连接服务器的时候会分配一个新的端口 而且刚才不也说了就算服务端也分配新的端口,更改内核也可以达到高并发,你怎么就可以导出我的意思是服务端不可能支持>64k连接 而且我们这样在这里动不动就百万并发,估计高手看了都在笑呢,不讨论了,让这个话题打住把 |
66
clino 2012-12-24 16:35:57 +08:00 via Android
@plan9 "就算服务端也分配新的端口,更改内核也可以达到高并发" 看到这句我打不住了,不过这次只要重复一下,"你自己修改了内核参数就可以突破TCP协议的限制吗?"
|
67
binux 2012-12-24 16:38:13 +08:00
|
68
plan9 OP |
70
clino 2012-12-24 17:17:50 +08:00
@plan9 可以,不过那就是你自家的私有协议了,和其他的支持TCP协议的设备就不能通讯了,为什么TCP端口会有这个限制?因为TCP HEADER 前面留给端口的只有16位
你要把它改成24位还是32位随便啦,不过别的设备就识别不了你的TCP包了 |
71
plan9 OP @clino
可以兼容的,比如连接80端口的时候,每次生成connected socket的时候多分配一个新的65535以上端口,这个新分配的端口什么也不干,就是为了说明这个端口大于tcp规定的端口,那么就算我每个socket都分配一个端口并发数也是可以超过65535的 可能这个例子也不恰当,我只是想通过这个例子说明并发只是跟系统资源有关的 |
74
test0077 2014-02-14 14:38:35 +08:00
忍不住说一句,你们会抓包吗
|