FTP-HTTP-HTTPS的学习总结

2023-05-16

FTP协议的学习

一,学习的要点

 ftp的掌握总体架构、了解状态机

请求响应的格式、常用操作码及响应的含义

PORT与PASV的区别、断点续传

上传、下载文件的基本流程

   1,FTP的架构主要有两种形式

 

  UserPI(用户解释器)和ServerPI(服务器解释器)建立控制连接

  UserDTP(用户数据传输过程)和ServerDTP(服务器数据传输过程)建立数据连接

  用户的指令驱动数据传输

  服务器的响应让用户端知道FTP过程的状态

 

         这是一个用户端与两个FTP服务器建立控制连接,两个服务器之间建立数据连接的架构。用户端向两个服务器发送指令,来控制两个服务器之间的数据传输。

        下面以一个例子说明用户端怎么通过指令来控制服务器A和B之间的数据传输,以A向B发送数据为例子

C->A:Connect(C与A建立控制连接)

C->B:Connect(C与B建立控制连接)

C->A:PASV(C与A进入被动连接的模式)

A->C:227+(IP+端口)

C->B:PORT(A的IP+端口)

B->C:200 okay

C->A:STOR

C->B: RETR

2,FTP请求的命令

   FTP请求的命令分为三类:访问控制命令,传输参数命令,服务命令

   访问控制命令主要与账户登录和退出及改变工作目录有关的命令

   传输参数命令主要是传输IP地址和端口号,及文件传输的类型,格式参数

   服务命令主要是进行数据的上传和下载,断点上传和下载及重命名等

   具体命令见RFC文档

3,响应码

   响应码由三位数字组成,每一位的数字都代表不同的类型

   1yz:positive preliminary reply

      预备应答,常见的就是数据上传和下载命令发出后,会有一个1yz的响应,告诉对方可以进行数据传输了,传输完成后回应2yz响应

   2yz:positive completion reply

      完成回答,成功接收命令并执行了命令

   3yz:positive intermediate reply

      中间应答,这个我个人理解就是先暂时给你一个中间答复,不说命令执行成功了还是失败了,具体还要看你后面的表现。常见的就是登陆过程,当用户端发送了USER 命令后,服务器端会给一个3yz的响应,告诉用户端还需要密码验证

   4yz: transient negative completion reply

      暂时拒绝回答,当服务器端忙不过来的时候,会给一个4yz的应答,这时候服务器会预留一个时间,让用户端可以重发这个命令

   5yz:permanent negative completion reply

      永久拒绝回答,收到这个回复,意味着用户端的命令没有执行

第二位数字也有各自的意义,这里就不一一列出了

HTTP协议的学习

一,学习的要求

请求响应的格式

各个操作码及响应的含义

常用头域字段的含义

相对URL与绝对URL的区别

   1,请求的格式,方法,及请求的头域

Request = request-line

             *((general-header|

Request-header|

Entity-header) CRLF)

              CRLF

[entity-body]

     Request-line = Method sp Request-URI sp HTTP-version CRLF

Method方法主要有8个方法

      OPTIONS:请求服务器告知其支持的各项技能  

              OPTIONS * HTTP/1.1  通常服务器会回应ALLOW:GET,HEAD(只是打个比方)

      GET:从服务器获取资源

      HEAD:与GET方法类似,只不过回应的时候不带实体,只返回头域

      POST,PUT:这两个方法一起讲,因为他们都是向服务器发送数据,网上也有很多讲这两个方法的不同点,在RFC文档上,两者最根本的区别在于其请求的URI意义不一样,PUT方法是不会将数据apply到另一个资源上去,post方法可用于在存在的资源上注释,通过追加操作来扩展数据库,发送新闻等

      DELETE:删除资源

      TRACE:记录经过的代理服务器

      CONNETC:这个与代理服务器相连时使用

  2,响应的格式,响应码

     Response = status -line

              *((general-header|

response-header|

entity-header)  CRLF)

CRLF

[entity-body]

      Status-line = HTTP-VERSION SP STATUS-CODE SP REASON-PHRASE CRLF

     响应吗

     1XX:informational  请求接收了,但需要后续的

     2XX:success  请求被成功接收,理解并且执行了

     3XX:redirection 重定向

     4XX:client error

     5XX:  server error

 HTTPS协议的学习

 

由于HTTP是明文传输,在HTTP的基础上,为了保证传输数据的保密性,加强安全,发展出了HTTPS。在传输数据之前,会进行TLS协议的握手,双方约定加密的过程。针对上面的图进行解释。

1,首先客户端会发送一个clienthello给服务器端

   Clienthello包含的内容有:

确定使用的协议版本号

生成一个随机数,设为R1,用于后面密码的生成。

SessionID,若为初次握手,则该项为0

密码套件,客户端会列出所支持的加密方法

压缩方法

2,服务器端接收到客户端的clienthello后也会发送一个serverhello

  Serverhello的作用是:

确定使用的协议版本

生成一个SessionID

生成一个随机数R2

确定使用的加密方法

确定使用的压缩方法

3,服务器端向接收端发送证书certificate

4,  服务器端发送serverkeyexchange报文,该条报文的作用是携带额外的密码交换的参数。

5,serverhellodone服务器端告诉接收端,hello阶段结束

6,客户端接收服务器端的证书,验证证书的有效性

7,客户端利用相关算法生成第三个随机数为pre-master-secret,利用RSA(非对称加密)或者(DH对称加密),将该数发给服务器端

8,至此两端都拥有三个随机数,利用这三个参数生成mater-secret。

9,客户端发送changecipherspec报文告诉服务器端,接下来进入数据加密传输方式

10,客户端发送finish报文,其实这个报文是用主密钥加密,给服务器端,看服务器端能不能将这个报文解密,也是在正式传输数据之前进行一次演练

11,服务器端也利用三个随机数生成master-secret,并对客户端发送过来的finish报文进行解密,并发送changecipherspec报文告诉客户端进入加密方式

12,服务器端同样加密一段数据发给客户端,即finish报文

13,客户端解密服务器端的finish报文,上述所有步骤成功的话

14,进入数据加密传输

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FTP-HTTP-HTTPS的学习总结 的相关文章

  • FastDFS的安装配置及其使用

    一 fastDFS是什么 fastDFS是c语言编写的一款开源分布式文件系统 xff0c 使用fastDFS可以很方便搭建一套高性能的文件服务器集群提供文件上传 下载等服务 二 fastDFS工作原理 fastDFS包括Tracker se
  • centos编译hadoop源码包

    一 所需工具 JDK maven protobuf CMake ant hadoop 2 x x src 如下所示 xff1a 二 安装 1 安装jdk 2 安装maven 可以参考如下地址 xff1a https blog csdn ne
  • CentOs搭建Zookeeper

    下载地址 https mirrors tuna tsinghua edu cn apache zookeeper zookeeper 3 4 14 一 zookeeper环境搭建 安装jdk xff1a 略 本次我们在192 168 0 1
  • CensOs搭建Solr环境并配置

    下载地址 xff1a https mirrors tuna tsinghua edu cn apache lucene solr 8 1 1 注 xff1a 这里我使用的8 1 1版本 xff0c 可以根据自己需要选择版本 若是版本相差较大
  • Centos安装Docker

    Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c 也可以实现虚拟化 Docker 技术的三大核心概念 xff0c
  • Docker图形管理工具的安装与使用

    1 搜索Portainer镜像 docker search portainer 2 下载镜像 docker pull portainer portainer 3 启动 docker run d p 9000 9000 restart 61
  • PV3953L1光流定点激光定高四轴悬停模块说明书

    PV3953L1光流定点激光定高四轴悬停模块说明书 视频效果 xff1a STM32F103 270飞控 四轴飞行器大机架 DIY安装 视频教程 1 产品图片 型号 xff1a PV3953L1 接线标识 xff1a V xff1a 3 3
  • 【OpenCV3.2】Detection of ArUco Markers

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉 领域扮演着十分重要的角色 xff1a 机器人 导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因
  • FreeRTOS学习之前后台系统存在的问题

    最近报了百问网7天物联网的训练营 https www 100ask net detail term 6216e88bc00cf 3clJb1 25 和在B站上学习的韦东山老师的freeRTOS做了下学习记录 1 什么是前后台系统 这是一个典
  • 速腾聚创16线激光雷达rslidar-16的ros驱动安装与rviz点云显示

    原链接 https community bwbot org topic 520 运行测试平台 小强ROS机器人 速腾聚创16线激光雷达rslidar 16的供电是直流12v 3A xff0c 通信接口是rs485网络接口 小强ros开发平台
  • freeRTOS滴答时钟相关源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程 xff0c 网址 xff1a 韦东山直播公开课 xff1a RTOS实战项目之实现多任务系统 第1节 xff1a 裸机程序框架和缺陷 哔哩哔哩 bilibili和7天物联网训练营 第
  • freeRTOS相对延时函数-vTaskDelay源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程 xff0c 网址 xff1a 韦东山直播公开课 xff1a RTOS实战项目之实现多任务系统 第1节 xff1a 裸机程序框架和缺陷 哔哩哔哩 bilibili和7天物联网训练营 第
  • freeRTOS绝对延时函数 vTaskDelayUntil源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程 xff0c 网址 xff1a 韦东山直播公开课 xff1a RTOS实战项目之实现多任务系统 第1节 xff1a 裸机程序框架和缺陷 哔哩哔哩 bilibili和7天物联网训练营 第
  • 北京邮电大学计算机考研信息汇总

    See you in BUPT 北京邮电大学计算机考研报考资料 复试资料汇总 for 2019 by 凝紫暮 CSDN xff1a 北京邮电大学计算机考研信息汇总 GitHub Pages 北京邮电大学计算机考研信息汇总 适用报考范围 xf
  • C++面向对象程序设计——类和对象(个人整理)

    对象 xff1a object 客观世界中任何一个事物都可以看成一个对象 xff0c 如自然物体 xff08 汽车 xff0c 房子 xff0c 班级 xff09 可以看到一个班级作为一个对象有两个要素 xff1a 1 班级所属系和专业 x
  • C++面向对象程序设计——类和对象的进一步讨论

    构造函数 xff1a 构造函数是一种特殊的成员函数 xff0c 它不需要用户来调用它 xff0c 而是在建立对象时自动执行 在一个类中定义了全部是默认参数的构造函数后 xff0c 则不再定义重载构造函数 xff08 否则容易出错 xff09
  • C++面向对象程序设计——继承与派生

    什么是继承与派生 xff1a 在C 43 43 中可重用性是通过 继承 这一机制来实现的 xff0c 因此继承是C 43 43 的一个重要的组成部分 声明派生类的一般形式为 xff1a class 派生类名 xff1a 继承方式 基类名 派
  • UCOS-II时间管理

    uC OS II时间管理 xff1a 任务延时函数 xff0c OSTimeDly INT16U ticks 申请该服务的任务可以延时一段时间 xff0c 这段时间的长短是用时钟节拍的数目来确定的 实现这个系统服务的函数叫做 OSTimeD
  • UCOS-II内存管理

    内存管理 xff1a 我们知道 xff0c 在 ANSI C 中可以用 malloc 和 free 两个函数动态地分配内存和释放内存 但是 xff0c 在嵌入式实时操作系统中 xff0c 多次这样做会把原来很大的一块连续内存区域 xff0c
  • UCOS-II任务设计

    UCOS II任务设计 任务函数的结构 xff1a 在用户任务函数中 xff0c 必须包含至少一次对操作系统服务函数的调用 xff0c 否则比其优先级低的任务将无法得到运行的机会 xff0c 这是用户任务与普通函数的明显区别 任务函数按照执

随机推荐

  • xxx is neither a launch file in package nor xxx is a launch file name 错误解决

    原链接 https community bwbot org topic 603 开发测试平台 小强机器人 ROS使用中会遇到这样的错误 一般是在启动launch文件时出现这个错误 这个错误产生的原因时没有找到你要启动的软件包或者你要启动的l
  • 消息代理RabbitMQ——介绍篇

    1消息队列概述 我们现在生活的是一个信息高质量高可用并且持久的一个时代 xff0c 作为技术开发人员 xff0c 我们造就的代码程序需要有能力以简单并且高效可靠的方式将信息传送给需要的接受者 更为重要的是我们要优化消息传递的方式 xff0c
  • Spring Cloud Stream中文翻译

    Ditmars RELEASE 1 Spring Cloud Stream 介绍 Spring Cloud Stream是一个用于构建消息驱动应用的微服务框架 Spring Cloud Stream基于Spring Boot来构建独立生产级
  • Spring Security Architecture翻译

    Spring Security 架构 本指南是Spring Security的入门 xff0c 致力于深入了解框架设计和基本构建块 虽然仅设计应用程序安全性的基础知识 xff0c 但是这样做可以清除开发人员使用Spring Security
  • Spring Boot and OAuth2翻译

    Spring Boot and OAuth2 本指南将向您展示如何使用OAuth2和Spring Boot构建一个使用 社交登录 功能做各种事情的应用程序示例 它从一个简单的单一提供者单点登录开始 xff0c 并运行一个带有身份验证提供程序
  • CMake系列(九) CMake 头文件接口库编译及使用

    文章目录 目录结构结构说明接口目标简述CMake接口目标实现方法 调用关系 源文件头文件CMakeLists txtpublic3 的CMakeListspublic4 的CMakeListsapp4 的CMakeListsmain的CMa
  • CMake常用命令(六)link_libraries 和 target_link_libraries 链接库

    文章目录 link libraries语法作用参数举例 target link libraries作用语法参数作用举例 两者的区别include directories xff1a target include directories xf
  • 北大中文核心期刊计算机类前30%名录

    1 计算机学报 2 软件学报 3 自动化学报 4 计算机研究与发展 5 控制与决策 6 中国图像图形学报 7 计算机辅助设计与图形学学报 8 计算机应用研究 9 计算机科学 属于其他类目但也可以发计算机的期刊名录 1 激光与光电子学进展
  • Xshell 无法连接虚拟机中的ubuntu的问题

    昨天在VMware Player中安装了ubuntu系统 xff0c 今天想通过xshell连接ubuntu xff0c 结果显示 Connecting to 10 7 100 182 22 Could not connect to 39
  • MATLAB无法直接打开M文件

    MATLAB无法直接打开M文件 啊这1 下载MATLAB文件关联 amp 快捷修复文件2 在MATLAB添加路径3 运行associateFiles m4 打开生成的注册表文件5 重启电脑 啊这 穷折腾装了个2020试试 xff0c 发现安
  • LWIP个人移植心得,平台STM32F4,HAL库,CMSIS_OS系统封装

    LWIP个人移植心得 xff0c 平台STM32F4 xff0c HAL库 xff0c CMSIS OS系统封装 1 先在官网下载LWIP源码及例程文件 xff0c 以1 4 1版本为例分别是lwip 1 4 1和contrib 1 4 1
  • Pyqt5 ——setStyleSheet用法

    版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 本文链接 xff1a https blog csdn net weixin 42066185 art
  • 递归互斥量解决死锁问题

    一 递归互斥量 一般情况下 xff0c 我们在同一个线程中对同一个互斥量加两次锁 xff0c 就会死锁 xff08 自我死锁 xff09 如果将互斥量类型属性设置为递归类型 PTHREAD MUTEX RECURSIVE 就不会出现此问题
  • 单相逆变器及基于STM32 SPWM生成代码

    2022 4 26更新 若需商业合作可私聊留VX号 xff0c 博主看到后会添加的 最近在做单相逆变器 xff0c 用篇文章来记录 主电路采用H桥 xff0c 使用IR2104半桥驱动内置630ns死区 xff0c 上管采用自举电容浮地驱动
  • 20200329 百度 测试开发实习 笔试题

    20200329 百度 测试开发实习 笔试题 第一题题目描述 xff1a 输入输出样例输入样例输出提示 第二题题目描述 xff1a 输入输出样例输入样例输出 第一题 题目描述 xff1a 桌子上放着N枚硬币 xff0c 将其从1到N编号 x
  • STM32 VBAT外围电路接法详解

    给大家看几块开发板的VBAT外围电路的设计图 xff1a xff08 1 xff09 xff08 2 xff09 xff08 3 xff09 xff08 4 xff09 xff08 5 xff09 stm32芯片手册要求 xff1a xff
  • PX4混控矩阵的移植

    首先感谢各位提供帮助的大神们 xff0c 我也只是把人的心得总结一下 xff0c 加上自己的一点感悟 xff1a 混控步骤 xff1a 一 忽略偏航进行融合处理 1根据混控矩阵计算得到out xff0c 这一步已经包含油门 xff0c 同时
  • 关于hal库使用笔记——串口接收中断部分

    在HAL库中 xff0c 进入接收中断的方法与标准库很不一样 xff0c 具体方法如下 u8 Res 1 声明一个U8数组 HAL UART Receive IT amp huart1 Res 1 初始化中打开串口1接收中断 重写函数HAL
  • TX2 备份与恢复系统(转)

    转载 xff1a https www ncnynl com archives 201706 1740 html TX2入门教程基础篇 备份和恢复 说明 xff1a 介绍如何为TX2进行备份和恢复 xff08 0 xff09 准备 xff1a
  • FTP-HTTP-HTTPS的学习总结

    FTP协议的学习 一 xff0c 学习的要点 ftp的掌握总体架构 了解状态机 请求响应的格式 常用操作码及响应的含义 PORT与PASV的区别 断点续传 上传 下载文件的基本流程 1 xff0c FTP的架构主要有两种形式 UserPI