当前位置: 首页 > news >正文

[svc]ftp协议数据连接的2种模式

玩明白了以太网2的二层数据格式, ip格式 tcp/udp个时候, 需要玩一玩一些有用的基于这些已上的协议数据了. 如 dhcp ftp等.比较有趣.

ftp协议

分控制连接21端口 和数据连接 20端口

数据连接站在服务端角度来讲分两种模式: 主动模式(服务端主动用自己的20端口去连客户端,适合防火墙)
被动模式(服务端被动等客户端来连服务端的一个随机端口.)

1312420-20180118145734349-1022435147.png

每个协议都有控制层面(对应控制报文),和数据层面(对应的传输数据,有些只有控制层面,如dhcp不需要传数据)

FTP服务端会监听2个端口, 控制进程20,数据进程21(主动模式)

数据连接,站在服务器角度,有2种模式:
    主动模式:ftp server从20端口主动向客户端发起连接,由于源端口固定,所以适用于模式防火墙模式.
    被动模式:ftp server被动等待客户端来连我的这个端口(控制连接后会告知会将passive ip/port告知了客户端)
一般情况下默认都是被动模式

ftp两种模式

原图和两枚ftp数据包: https://github.com/lannyMa/scripts/tree/master/pkgs/ftp
1312420-20180118172432115-1038990266.png

主动模式数据交互过程

14.1 客户端 14.128服务端

  • 建立控制连接,3次握手, 客户端连服务端21端口
    1312420-20180118171443287-685357345.png

  • 待连接建立后,客户端告知服务端 active ip/port
    1312420-20180118171502959-1076851863.png

  • 服务端主动和客户端建立数据连接(站在服务端角度,是服务端主动去找客户端)
    1312420-20180118171643334-1338715411.png

  • 传输数据
    1312420-20180118171708240-1375433639.png

  • 断开数据连接
    1312420-20180118171746662-1125296572.png

  • 断开控制连接
    1312420-20180118171809459-1438384660.png

被动模式数据交互过程

  • 客户端主动去和服务端建立控制连接
    1312420-20180118171852240-1877152556.png

  • 服务端告知客户端passive mode /ip/port
    1312420-20180118171921568-1793702141.png

  • 客户端主动去和服务端建立数据连接(站在服务端角度,是服务端被动等客户端)
    1312420-20180118172001693-1772615198.png

  • 客户端和服务端之间断开数据连接
    1312420-20180118172111365-1687208964.png

  • 客户端和服务端之间断开控制连接
    1312420-20180118172138521-244686008.png

转载于:https://www.cnblogs.com/iiiiher/p/8311458.html

相关文章:

  • 网上舆情分析报告写作框架及六大技巧
  • 网络舆情分析软件工具汇总及功能作用详解
  • idea中dependencies中总是有红色波浪线(缺少dependency)的解决办法
  • 如何监测大数据舆情信息动态的方法技巧
  • 网络舆情舆论信息监督和收集的现代化技术解决方法
  • 关于OS命令注入的闭合问题
  • 网络舆情传播路径渠道与动态监测的方法
  • C++循环链表的实现
  • 网络舆情监测与分析研判工作如何高效做好的解决方案
  • 【2018-01-19】Sql Server-触发器
  • 如何写网络舆情数据分析报告的技巧及注意事项详解
  • 函数配接器
  • 互联网时代如何做好媒体舆情信息监测工作的方法
  • 政企新媒体舆情信息检测工作如何做的平台解决办法
  • BZOJ.2242.[SDOI2011]计算器(扩展欧几里得 BSGS)
  • JavaScript对象详解
  • JS数组方法汇总
  • Lucene解析 - 基本概念
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Swift 中的尾递归和蹦床
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • XForms - 更强大的Form
  • 半理解系列--Promise的进化史
  • 蓝海存储开关机注意事项总结
  • 你真的知道 == 和 equals 的区别吗?
  • 用mpvue开发微信小程序
  • AI算硅基生命吗,为什么?
  • elasticsearch-head插件安装
  • 回归生活:清理微信公众号
  • # 透过事物看本质的能力怎么培养?
  • (ros//EnvironmentVariables)ros环境变量
  • (四) Graphivz 颜色选择
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)大型网站的系统架构
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .Net语言中的StringBuilder:入门到精通
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @JsonSerialize注解的使用
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [Bugku]密码???[writeup]
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [bzoj1324]Exca王者之剑_最小割
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件
  • [hdu1561] The more, The Better 【树形DP】
  • [HJ56 完全数计算]
  • [leetcode 数位计算]2520. 统计能整除数字的位数
  • [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列
  • [Linux](15)线程基础,线程控制,线程的互斥与同步
  • [linux]linux命令学习-netstat
  • [MRCTF2020]Ez_bypass1
  • [NOIP2005]过河
  • [one_demo_1]php中的文件锁
  • [Prism]Composite Application Guidance for WPF(9)——命令