连接时端口的使用,以及FTP的Port/Passive模式

1 view
Skip to first unread message

Cat

unread,
Sep 24, 2005, 1:27:47 PM9/24/05
to ZSU...@googlegroups.com
首先,TCP/IP是基于端口对端口的模式传输数据的。这是什么意思呢?也就是每一台电脑一般仅有一个IP,但是需要使用网络的软件有很多歌,它们发送和接收的数据都很多,如果各自都去查看所有网络数据然后找出哪些是自己的,那就很麻烦。这就好像很多人都住在一栋房子里,如果邮寄地址仅仅到房号,那么当收信的时候就要先拆开来看看确认是谁的信,因此发信必须注明房号甚至是给谁的,以免造成不必要的麻烦。

第二,因为TCP协议是双方通讯的可靠协议,而不像UDP那样单方广播的不可靠协议,所以TCP连接的双发都必须是端口相关的。否则一方发信的时候仅仅说自己来自"xx大街xx号",另一方就无法准确回信。

第三,在连接前,一方先监听某一个本地端口,这方通常称之为Server;另一方用任意一个本地端口主动连接这个远程端口,这方通常称之为Client。这就是一个连接操作。

第四,也就是重点,实际上Server不会用监听的那个端口去接受这个连接,而是分配任意一个空闲端口来接受这个连接。例如我们通常听说的HTTP服务默认在80端口,这相当于HTTP对外宣称我们在80服务窗口,但是当客户排队到80服务窗口后,客服mm会对他说请到xx号空闲窗口进行此次业务,然后HTTP服务也派一位客服mm到该窗口接待该为客户,客户马上离开80窗口于是马上就可以接待下一位客户了。所以当你听说一个服务在某个端口的时候,仅仅是指该服务监听该端口从该端口引导连接,任何一个正在使用该服务的连接其实都不会占用该端口。

第五,FTP的Port/Passive模式:Port模式也就是主动模式,意思是在上述第四点所说的成功连接之后,Client会提供自己的IP和一个开放的端口,然后让Server来主动连。这个过程就好比,Client到FTP
Server的21窗口进行连接,而此次业务是在Server的xx空闲窗口进行的,谈话内容就是Client告诉Server我在我的yy窗口等你,你拿好我要下载的数据,然后"主动"送过来我的yy窗口。至于Passive模式则正好相反,在xx商量时,可能因为Client不想让Server主动派人来送数据或者其他原因,Client提出要求在Server的yy窗口准备好数据,然后他自己来拿。

第六,Port/Passive模式有时候也被叫做Push/Pull模式,从上面的举例很容易理解为什么这样叫。Push就是Server主动把数据"推"给Client,而Pull则相反。

最后,预告明天讲什么:为什么安全模型通常把权限分为Null/Permit/Denied。

Li Berry

unread,
Sep 24, 2005, 8:57:16 PM9/24/05
to ZSU...@googlegroups.com
这样几好,我学到以前不会的东西了

在 05-9-25,Cat<cat...@gmail.com> 写道:

Cat

unread,
Sep 30, 2005, 4:18:33 AM9/30/05
to ZSU...@googlegroups.com
另外补充一下,一般我们见到port/pasv的指令后面跟的参数都是{a,b,c,d,e,f},而且0<=a,b,c,d,e,f<256。a,b,c,d一眼就看得出是IP地址4段0~255的整数,特别是在port模式下那就是你自己的IP地址,你不可能看不出。然后e,f是什么呢?这时候你就应该推测是端口号。可是端口号只有一个啊,为什么有两个数?这时候你先要有一点常识:

其实我们平时看到的a.b.c.d,你可以简单的认为这是一个4位256进制数,不过它不想16进制那样用ABCDEF来表示大于9的数,二是直接用10进制数来表示某一位的数值,然后用点号分割位。a.b.c.d这种形势,其实是可以转化为真正的10进制数的,这时候就是一个10位的10进制数(因为256的4次方是4294967296,是一个10位10进制数)。例如meftp2的地址222.200.190.16,也可以按照这个方法转换为10进制数,也就是222*256^3+200*256^2+190*256+16=3737697808,现在你用FlashFXP打开ftp://list:MaxcellList@3737697808:2121看看?同样是打开了meftp2对吧。

那么好了,我们会过来看我们的"两个端口"问题。这两个数值都是0~255之间,然后端口的值是0~65535之间,那么很明显端口就是e*256+f的值了。

还有很多类似的情况,是要凭经验和常识去判断的,所以就要求大家平时多一点看计算机相关的书,或者仅仅是科普类杂志,多一些积累知识,需要的时候就能够用上。

Reply all
Reply to author
Forward
0 new messages