V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  plan9  ›  全部回复第 5 页 / 共 8 页
回复总数  157
1  2  3  4  5  6  7  8  
2012-12-24 14:57:38 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
还给我定了性了。。。

我有半句说到并发问题吗?并发是跟文件描述符等系统资源有关的,这个我知道

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是一样的。分配新的端口这点的确是我说错了
2012-12-24 10:55:34 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@clino 内核会分配端口跟修改内核参数可以支持65535以上兵法有矛盾吗?

nat前面已经有人回答了,路由会维护一个port pool,也会分配端口的,我没说路由是用socket接口实现的
2012-12-23 22:53:44 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@clino
非要逼我去查书...
UNIX网络编程 第四章第六节
他们返回的实际上是文件描述符,但是书中写的是返回的是一个socket,每个socket都有自己的ip跟端口
监听用的socket称作listening socket,通信用的socket称作connected socket

而且问了一下,linux内核每次新建一个socket确实会分配一个新的端口
2012-12-23 15:59:13 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@Kymair
我理解你的意思了,你说的是不考虑这个[虚拟的连接]的情况,单纯从tcp/ip来看,只是一些包而已
我考虑的是假想这个连接是真是存在的,而process之间正是通过这个虚拟的连接来进行通信的

角度不一样,看待问题的方式也不一样,所以产生了分歧
2012-12-23 15:17:55 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@Kymair
可能我说的不清楚...
一般写tcp程序的时候
服务端通常会
bind(),listen(),accept(),而accept会返回一个新的文件描述符,服务器通过这个文件描述符与客户端进行通信,这就是我说的服务端会通过新的端口与客户端进行通信

而客户端会socket(),connect(),而socket也会返回一个新的文件描述符,这也就是我说的没建立一个新的连接,都会分配一个新的端口的意思
2012-12-23 15:04:06 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@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应该就是保证端口不重复的
2012-12-23 12:49:58 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@Kymair
我的意思是netstat命令应该只是显示监听的端口
比如你通过80连接服务器,然后跟服务器通信的时候会使用另外一个端口,但是netstat显示的只是你监听的端口

上面这句话前半句有依据,后半句没有...
2012-12-23 12:31:24 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@Kymair
netstat显示的只是监听用端口吧?
实际上服务器会打开一个新的端口连接的,当然这里的端口理解成文件描述符比较好
2012-12-23 12:19:25 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@Ley
这个不好说是运营商还是墙的问题,@wwwjfy上面已经说了我的判断比较武断
如果是运营商的问题的话你可以断下网,重新获取一个ip试试,如果是墙的话就不知道该怎么办了
2012-12-23 12:13:05 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@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的解释应该是很全面了
2012-12-23 02:10:13 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@binux
同一个端口不可以建立复数个通信的,我记得端口复用只是转发而已

具体请参考@Kymair 的答案
2012-12-23 01:09:32 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@binux
@wwwjfy
写错了...
源地址1.1.1.1,源端口8888,目的地址1.1.1.2,目的端口88,协议tcp
之前已经用了8888这个端口了,所以下次发包会换一个端口
源地址1.1.1.1,源端口8889,目的地址1.1.1.3,目的端口88,协议tcp
2012-12-23 00:58:25 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@wwwjfy
>>查了一下没找到1个ip是否可以有超过65535个端口,虽然我猜对于路由这种配置不会太难
嗯,我也没有找到很多资料
不过找到了这个
http://wenku.baidu.com/view/36bedf40336c1eb91a375dca.html
貌似是Cisco的某款路由器的设置文档,nat的最大tcp连接数可以0到65535之间可以自由设置

>>问题是如果端口已经用完,应该是移到下一个可用的ip,或者新连接无法建立吧,不觉得应该切断已有连接
这个我也不懂...感觉运营商可能会切断长时间占用的连接

>>过段时间连接同样端口成功就认为是这样的原因也比较武断,可能性不止这一种。至少GFW可能封一段时间会解封,比如访问google就是这样
这个我道没有考虑到,是有点武断

>>另外,除非有什么特殊事件,用户不会一下子猛增,运营商应该有这种准备,应该会有好多备用ip,而且工作着的ip也不应该是满负荷的..
现在可用ip越来越少了,用户越来越多,运营商应该会给每个ip分配固定的用户吧,感觉有很大可能连接数会超过限制
2012-12-23 00:15:25 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@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个端口的,当然这里的端口只是文件描述符,你不可能一个端口同时跟两台机器进行通信把?
2012-12-22 22:44:16 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@cabbala @sinxccc
找到技术根据了,
google了一下,确实nat只能理论支持最大同时65535个连接数
原文在这里http://itpro.nikkeibp.co.jp/article/COLUMN/20090525/330579/
不过是日文的

linux确实可以通过修改文件描述符增加,不过一般没有人改这个东西吧
2012-12-22 21:57:30 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@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确实不大懂...这样理解错在什么地方啊?
2012-12-22 21:18:46 +08:00
回复了 plan9 创建的主题 奇思妙想 关于某墙的端口封锁
@lwjefSub 大多数都不是公共ip吧

@cabbala 不要噗...这个很伤人的...而且理论上是6万个TCP连接啊

@ericFork 我说的不是vpn被封,而是有人反映端口被封,但是换个端口就可以继续使用了,感觉这个有很大可能是我说的原因,至于udp的也被封的很惨就是我猜测的错误了...
2012-12-20 15:47:04 +08:00
回复了 plan9 创建的主题 iPhone 被app store以不够美观为由拒绝的app,付截图。。。
@sutar ?没看懂什么意思
@cabbala 不会画图,也不会做动画。。。而且当初这个app用了amazon的好几个服务,有点贵,就放弃了
2012-12-20 15:36:10 +08:00
回复了 plan9 创建的主题 iPhone 被app store以不够美观为由拒绝的app,付截图。。。
@SAGAN -_-
@Radeon 感谢夸奖。。。
@cabbala 我感觉是因为下面那个圆疙瘩被苹果拒的
@shellex 希望能指出缺点啊
为什么我登录不了微信公众平台
没有遇到跟我一样问题的人么
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1756 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 16:44 · PVG 00:44 · LAX 08:44 · JFK 11:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.