客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议。如FTP,PPTP,H.323和SIP均属于复杂协议。

这里主要介绍ftp协议的工作原理。首先,ftp通信协议有两种工作模式,被动模式和主动模式。

  • 主动模式

以上图为例,假设客户端IP为192.168.2.10,服务器端IP为192.168.2.11,首先客户端使用端口1966连接服务器的21端口,接着客户端会发送一个含有PORT 192,168,2,10,19,137字符的数据包给服务器端。

服务器端接收到这个数据包之后,从PORT 192,168,2,10,19,137字符串中了解到,客户端192.168.2.10(字符串中的前四段)在其上动态启用了一个端口5001(字符串的后两段19*256+137=5001),接着服务器端会固定使用端口20去连接客户端的端口5001.

1955-21端口的连接为控制连接,20-5001端口的连接为数据连接

  • 被动模式

假设客户端IP为192.168.2.10,服务器端IP为192.168.2.11,首先客户端使用端口1955连接服务器的21端口,接着客户端对服务器端发送一个含有PASV命令的数据包给服务器端,服务器端收到这个数据包之后就会知道,客户端要求以被动(Passive)模式来传输数据,接着服务器端发送一个含有PORT 192,168,2,11,,114,134字符串的数据包给客户端。

客户端在收到这个数据包后,从PORT 192,168,2,11,,114,134字符串中了解到,服务器端192.168.2.11(字符前4段)在其上动态打开了一个端口29318(字符串后两段114*256+134=29318),接着客户端会使用另一个端口1956去连接服务器端的端口29318.

1955-21端口的连接为控制连接,1956-29318端口的连接为数据连接

ftp协议详解的更多相关文章

  1. FTP协议详解(转)

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application ...

  2. 转FTP协议详解

    转自:http://www.cnblogs.com/li0803/archive/2010/11/16/1878833.html FTP 是File Transfer Protocol(文件传输协议) ...

  3. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  4. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  5. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  7. HTTP协议详解(真的很经典)

    HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...

  8. HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  9. 关于http协议详解

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...

随机推荐

  1. 在java中获取attr的值

    首先说如何获取已经在style里面定义好的attr的值,以colorPrimary为例: TypedValue value = new TypedValue(); mContext.getTheme( ...

  2. error: RPC failed; result=22, HTTP code = 411

    git config http.postBuffer 524288000orgit config --system http.postBuffer 524288000  

  3. 一个js简单的日历显示效果的函数

    用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格table生成,分成两个部分. 第一个部分:就是前面的第一排,我用一行<t ...

  4. val()失效

    在表单设置了disabled或者readonlye,那么val()方会失效,可以采用$().attr('value','')

  5. :active 为什么在ios上失效

    :active是针对鼠标,而手机上是没有鼠标,而是touchstart,所以早成了ios上不兼容 解决方法是: window.onload = function(){ document.body.ad ...

  6. Livermore心法--策略篇

    「三三不尽,六六无穷」就是Livermore选股法的精要,以6%设关键位,3%定突破. 可是,在买卖策略方面,却不能光靠看突破就随便买入. 以Livermore的讲法,通常一只股突破前关键位后,会有轻 ...

  7. [Bug] 解决透明 Activity 在 Android 6.0 背景不透明

    如何复现 连续启动两个 Activity ,其中 Activity 1 为 不透明 的 Activity Activity 2 为 透明 的 Activity 通常用于引导页面,例如:豌豆夹锁屏引导用 ...

  8. c语言第8次作业

    #include<stdio.h> int main() { ]={}; int m; ; ;m<;m++) { a[m]=m+; !=&&a[m]%!=) n++; ...

  9. No Spring WebApplicationInitializer types detected on classpath。启动时不报错,但是页面打不开。

    一片红,没有黑色disPatcher的加载. 百度,但是没有用,二十分钟浪费,这个问题的本质就是web.xml中的disPatcher没有加载,但是我肯定和代码无关,配置文件也没有变化过,值可能是to ...

  10. synchronized四要素及抽象

    面向对象,java的核心思想就是面向对象编程,以贴近人类在现实生活中的思考方式,任何事物我们都会把它抽象成一个对象,一辆车,一个人,对象是我们思考的基石. 我想说的是,我们写汉字的时候,不会在脑海中命 ...