客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议。如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. mvc ef LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。

    private sys_User GetUserInfo() { sys_User model = null; var userId = Convert.ToInt32(AccountHelper.G ...

  2. Clock rate

    https://en.wikipedia.org/wiki/Clock_rate The clock rate typically refers to the frequency at which a ...

  3. Source Insight设置

    Source Insight设置 1.背景色选择     要改变背景色Options->preference->windows background->color设置背景色,设置自定 ...

  4. Angular-ngtable联动全选

    之前于Angular第三方插件ngTable的官网demo上看到的例子,但苦于demo中联动全选为选中所有,项目中并不适用,因此做了下小小的修改,修改目的只是为实现其功能,方法不敢苟同,若有更加简便的 ...

  5. chm转换为html

    在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile ...

  6. JMeter学习-028-JMeter默认jmx脚本分发目录(路径)定制

    我们在分布式执行参数化脚本时,为尽可能多的利用Slave资源,尽可能将参数文件配置为相对路径,以更好的去适配Slave环境.与此同时,每台Slave的服务jmeter -s 启动的路径可能不尽相同,同 ...

  7. SublimeText教程

    1安装插件 1.請先確認已經安裝好Package Control 未安裝的話請看:安裝第一個Sublime Text套件 2.按下CTRL + SHIFT + P並且輸入Package Control ...

  8. 手机APP开发:学JAVA转安卓APP开发是不是很容易?

    成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...

  9. grunt 入门学习

    前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Lo ...

  10. WebSocket///////////////////////z

    作者:Ovear链接:http://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有,转载请联系作者获得授权. 一.WebSoc ...