FTP-HTTP-HTTPS的学习总结

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,进入数据加密传输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ftzchina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值