ftp协议分析(一)

作者: 肖建彬 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.xiaojb.com/archives/it/ftp.shtml

根据是使用port模式还是passive模式,ftp使用不同的tcp端口号,在详细描述ftp前,我们来简单讨论一下tcp端口号的一些基本概念。tcp使用端口号来标识所发送和接收的应用,端口号可以帮助tcp来分离字节流并且帮相应字节传递给正确的应用程序。

  tcp端口号可以是半永久的和暂时的。服务器端监听在半永久的端口上来让客户端访问。客户端使用暂时的端口在本地标识一个对话,客户端端口只在使用tcp服务时候才存在,而服务器端口只要服务器在运行就一直在监听。

tcp端口可以归为3类:

  1、众所周知的端口来标识在tcp上运行的标准服务,包括ftp、http、elnet、smtp等,这些端口号码范围为0-1023;

  2、注册端口号用来标识那些已经向iana(internet assigned numbers assigned numbers authority)注册的应用,注册端口号为1024-49151;

  3、私有端口号是非注册的并且可以动态地分配给任何应用,私有端口为49152-65535;注册的端口号本来打算只给注册的应用使用,

ftp port模式和ftp passive模式

  当你对一个ftp问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为active(port)模式;近来,由于port模式的安全问题,许多客户端的ftp应用缺省为passive模式。

2.1 ftp port模式

port模式的ftp步骤如下:

  1、 客户端发送一个tcp syn(tcp同步)包给服务器段众所周知的ftp控制端口21,客户端使用暂时的端口作为它的源端口;

  2、 服务器端发送syn ack(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

  3、 客户端发送一个ack(确认)包;客户端使用这个连接来发送ftp命令,服务器端使用这个连接来发送ftp应答;

  4、 当用户请求一个列表(list)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用port命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;port命令也包含了一个ip地址,这个ip地址通常是客户自己的ip地址,而且ftp也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接;

  5、 服务器端发送一个syn包给客户端的暂时端口,源端口为20,暂时端口为客户端在port命令中发送给服务器端的暂时端口号;

6、 客户端以源端口为暂时端口,目的端口为20发送一个syn ack包;

7、 服务器端发送一个ack包;

  8、 发送数据的主机以这个连接来发送数据,数据以tcp段(注:segment,第4层的pdu)形式发送(一些命令,如stor表示客户端要发送数据,retr表示服务器段发送数据),这些tcp段都需要对方进行ack确认(注:因为tcp协议是一个面向连接的协议)

  9、 当数据传输完成以后,发送数据的主机以一个fin命令来结束数据连接,这个fin命令需要另一台主机以ack确认,另一台主机也发送一个fin命令,这个fin命令同样需要发送数据的主机以ack确认;

  10、 客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以fin命令来关闭一个控制连接,服务器端以ack包来确认客户端的fin,服务器同样也发送它的fin,客户端用ack来确认。

下图图示了ftp port模式前几步步骤:
/====================================================================\
| |
| [ ftp client ] [ ftp server ] |
| |
| (tcp:21 连接初始化,控制端口) |
| syn |
| port xxxx ———————-> port 21 [tcp] |
| syn+ack |
| port xxxx <———————- port 21 |
| ack |
| port xxxx ———————-> port 21 |
| |
| (控制操作: 用户列目录或传输文件) |
| |
| port, ip, port yyyy |
| port xxxx <———————- port 21 |
| port seccussful |
| port xxxx <———————- port 21 |
| list, retr or stor |
| port xxxx ———————-> port 21 |
| |
| |
| (tcp:20 连接初始化,数据端口) |
| syn |
| port yyyy <———————- port 20 |
| syn+ack |
| port yyyy ———————-> port 20 |
| ack |
| port yyyy <———————- port 20 |
| |
| |
| (数据操作: 数据传输) |
| data + ack |
| port yyyy <———————> port 20 |
| . |
| . |
| . |
| |
\====================================================================/

one response to “ftp协议分析(一)” linuxfool says:
june 29th, 2007 at 23:43

| (控制操作: 用户列目录或传输文件) |
| |
| port, ip, port yyyy |
| port xxxx port 21 |
| |

第一个我觉得方向错了,不知道说的对不对?

leave a reply

name (required)

mail (will not be published) (required)

website

spam protection: sum of 6 + 8 ?

转载于:https://www.cnblogs.com/kangderui/archive/2010/01/05/1639327.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 元编程

大家好&#xff0c;我是若川。今天给分享一篇来自freecodecamp的好文。我是freecodecamp杭州社区组织者之一&#xff0c;有一群小伙伴一起组织线下分享活动&#xff0c;不过2020年我们杭州社区几乎没有活跃&#xff0c;我也没有什么贡献。另外&#xff0c;我的公众号「若川视野…

python 异常处理模块_扩展Python模块系列(五)----异常和错误处理

在上一节中&#xff0c;讨论了在用C语言扩展Python模块时&#xff0c;应该如何处理无处不在的引用计数问题。重点关注的是在实现一个C Python的函数时&#xff0c;对于一个PyObject对象&#xff0c;何时调用Py_INCREF和Py_DECREF。在编写C语言代码时&#xff0c;需要了解Python…

常见的php笔试题(附答案)搜集整理

转载链接&#xff1a;http://www.yaojinbu.com/p/139.html 常见的php笔试题&#xff08;附答案&#xff09;搜集整理 1.在PHP中&#xff0c;当前脚本的名称&#xff08;不包括路径和查询字符串&#xff09;记录在哪个预定义变量中&#xff1f;而链接到当前页面的URL又记录在哪个…

Js整理备忘(02)——运算符

1、运算符的表示以及优先级 Javascript&#xff08;以下简写为Js&#xff09;的大部分运算符与C或Java是类似的。 记得刚学C语言时老师讲的优先级口诀&#xff0c;非常好记&#xff1a;“括、单、算、移、关”“位、逻、条、赋、逗”&#xff0c;此处也可以套用一下&#xff0c…

手写一个合格的前端脚手架

为什么我们需要一套脚手架为什么我们需要一套脚手架&#xff0c;它能帮助我们解决哪些痛点问题。•前端项目配置越来越繁琐、耗时&#xff0c;重复无意义的工作•项目结构不统一、不规范•前端项目类型繁多&#xff0c;不同项目不同配置&#xff0c;管理成本高•脚手架也可以是…

第一篇cnblog!

本人才疏学浅&#xff0c;终于通过了cnblog的审核&#xff0c;兴奋之余&#xff0c;发表感言——不容易啊&#xff01;在我的博闻里面&#xff0c;随笔类当然就是技术类的比较多的&#xff0c;特别是实例类的。理论类的大部分放在文章板块&#xff0c;本人e文特别好(哈哈&#…

解决error 1045: Access denied for user: 'root@localhost' (Using password: YES)

转载连接&#xff1a;http://jianfw2009.blog.163.com/blog/static/13431366020111016112459158/ 1、先停止mysql服务2、在mysql的目录下找到my.ini&#xff0c;在[mysqld]后面加上skip-grant-tables3、启动mysql服务,打开Command Line Client以空密码登录4、退出mysql,并停止服…

fillcolor是什么意思_fill是什么意思

1. (使)装满;(使)注满;(使)充满If you fill a container or area, or if it fills, an amount of something enters it that is enough to make it full.e.g.Fill a saucepan with water and bring to a slow boil...往平底锅里加满水,小火煮沸。e.g.She made sandwiches, fill…

利用JMeter进行压力测试(1)(转)

转自&#xff1a;http://www.cnblogs.com/game-over/archive/2010/01/08/1642685.html压力测试以软件响应速度为测试目标&#xff0c;尤其是在较短时间内大量并发用户的同时访问时&#xff0c;软件的性能和抗压能力。 JMeter是一款开源的压力测试工具&#xff0c;目前最新Rele…

MyISAM InnoDB 区别

转载链接&#xff1a;http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型&#xff0c;这两个表类型各有优劣&#xff0c;视具体应用而定。基本的差别为&#xff1a;MyISAM…

Git 内部原理图解——对象、分支以及如何从零开始建仓库

我们中的许多人每天都在使用 git&#xff0c;但是有多少人知道它的内部是怎么运作的呢&#xff1f;例如我们使用 git commit 时发生了什么&#xff1f;提交&#xff08;commit&#xff09;与提交之间保存的是什么&#xff1f;两次提交之间难道只是文件的差异&#xff08;dif…

wpsmac和pc版的区别_Mac版WPS Office和微软Office 2019哪个更好?

众所周知&#xff0c; macOS系统生态下&#xff0c;有许多界面精美、功能强大、体验出色的软件&#xff0c;但提到办公套件&#xff0c;人们首先想到的还是微软 Office 套件&#xff0c;其中的Word、 Excel 以及PPT&#xff0c;但用户体验并不如意。但现在&#xff0c;苹果用户…

A tutorial video for MindManager for free

MindManager 2016 for Windows Essential Training 本人学习的时候使用的是MindManager 2018版本的&#xff0c;和2016版本差异不大。 转载于:https://www.cnblogs.com/kelamoyujuzhen/p/10253278.html

Google, 请不要离开我们!

虽然我是.net阵营, 力挺Silverlight, 但是我真心希望谷歌留在中国, 如果她能够靠谈判求的言论自由的权利, 那将对中国的拥有自由信仰的一族产生重大的影响. 谷歌离开了中国, 不是她想抛弃中国市场, 而是中国决策者背叛了人性. 在此留下 Google 2010年1月14日的logo, 智慧的幽默…

高级php面试题及部分答案

转载链接&#xff1a;http://www.2cto.com/kf/201304/201112.html 一. 基本知识点 1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。 200 : 请求成功&#xff0c;请求的数据随之返回。 301 : 永久性重定向。 302 : 暂时行重定向。 401 : 当前请求需要用…

iec104点号_IEC104报文流程(有常用类型标识解释)

参数地址围类别97版基地址2002版基地址遥信1H------400H1H------4000H遥测701H------900H4001H------5000H遥控B01------B806001H------6100H设点B81H------C00H6201H------6400H电度C01H------C80H6401H------6600H遥测和遥信个数不设置上限&#xff0c;可以没有上限限制&…

本周ASP.NET英文技术文章推荐[04/08 - 04/14](附赠自弹超级玛丽主题曲)

摘要 本期共有6篇文章&#xff1a; ASP.NET编译问题的公开Hotfix补丁 期待下个版本AjaxPro 的发布 在ASP.NET 2.0中使用MultiView控件实现多页面表单 数据绑定的技巧&#xff1a;嵌套Eval语句 在ASP.NET 2.0中访问并更新数据&#xff1a;使用数据源控件以编程方式访问数据 AD…

一个离开某门户网站人员自爆黑幕

去年&#xff0c;我已在星星发表了一个关于免费发短信的各类软件的黑幕所在。而事实上的SMS&#xff08;即短信&#xff09;的黑幕远不止于此&#xff0c;今天&#xff0c;我终于有空坐下来&#xff0c;把其中的一些让你感觉平常却实际触目惊心的事情告诉你们&#xff0c;让你们…

28岁自学3年前端成功转行的励志故事

为什么转行因为混得不好。在成为程序员之前&#xff0c;我干过很多工作。由于学历的问题&#xff08;高中&#xff09;&#xff0c;我的工作基本上都是体力活。包括但不限于&#xff1a;工厂普工、销售&#xff08;没有干销售的才能&#xff09;、搬运工、摆地摊等&#xff0c;…

css中!important的作用

转载链接&#xff1a;http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html css中!important的作用 {*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了&#xff0c;以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正去研究过&am…