关于网络应用层的协议分析

今天我来更新网络部分的最后一部分。关于应用层的几种协议说明。

一、FTP协议

1.1 FTP的整个过程

1.2双通道协议的说明

1.3 FTP模式控制

1.4 FTP的命令和响应码说明

二、Telnet协议

2.1 交互式协议

三、HTTP协议

3.1 HTTP工作流程

3.2 HTTP哑式协议

3.3 HTTP的的使用方法

 

前言:其实应用层里面有很多协议,不过本人其实用到的目前我能想到的好像其实也就这么多,如果后续我还用到了其他协议那样我再更新吧。

一、FTP协议

FTP(FILE  TRANSCATION  PROTOCOL),也叫文件传输协议,也是我们一种非常常用的协议,目前来说我往ARM设备上拷贝东西用的基本都是这个协议,这个协议可以分成以下几个部分说明。

1.1 FTP的基本工作流程

FTP的基本工作流程为以下步骤:首先服务器通过地址绑定的方法来让广播自己的IP地址,当客户端登陆上去以后,输入session(源端口,目的端口,源IP,目的IP)来与客户端相连接,这个时候经过三次握手以后两者进行连接,此时两者就连接上了,之后客户端向服务器发送命令上传或下载文件,此时服务器会开辟出第二通道(数据通道)来传送数据,传送完毕后,数据通道关闭。其过程如图所示。(TCP三次握手的部分就省略了)

 

 

1.2 双通道协议说明

FTP采用双通道协议,换句话说他的传输命令和数据是采用不一样的通道的。如前面图所表示的那样,FTP传输命令,认证采用的是一条通道,即命令通道,而传送数据是采用另一条通道,即数据通道。为什么要这样设置呢?我们可以考虑如下场景:如果我当前数据传输通道数据还没有传输完那么此时我想发送一条命令,如果只有一条通道他会阻塞的,所以综上所述,采用两条通道将命令和数据分开这样比较好处理问题。

 

1.3 FTP模式控制

正如上图所画的,FTP一共有两种模式,分别为主动模式(active模式)和被动模式(PASV模式),主动模式就是服务器主动连接客户端,被动模式就是服务器被动被客户端连接。先说主动模式吧,首先客户端会分配出一个随机端口N,并通过命令通道会发送一个请求给服务器,告诉服务器此时你主动连接我的N+1号端口,此时服务器的20号端口会主动连接客户端的N+1号端口。再说被动模式,被动模式中,客户端会向服务器问询连接地址,此时服务器会分配一个随机端口MM>1024,并将其发送给客户端,此时客户端会主动连接服务器。

这里要说明的是:一般来说都采用被动模式,这是因为,第一服务器主动连接客户端恐怕会被防火墙干掉,第二,服务器的端口是20,太明显了。所以一般默认采用被动模式。

 

1.4 FTP的命令和响应码

FTP常用的命令有:

USER: 指定用户名。通常是控制连接后第一个发出的命令。“USER gaoleyi ”: 用户名为gaoleyi 登录。

PASS: 指定用户密码。该命令紧跟 USER 命令后。“PASS gaoleyi ”:密码为 gaoleyi。

SIZE: 从服务器上返回指定文件的大小。“SIZE file.txt ”:如果 file.txt 文件存在,则返回该文件的大小。

CWD: 改变工作目录。如:“CWD dirname ”。

PASV: 让服务器在数据端口监听,进入被动模式。如:“PASV ”。

PORT: 告诉 FTP 服务器客户端监听的端口号,让 FTP 服务器采用主动模式连接客户端。如:“PORT h1,h2,h3,h4,p1,p2”。

RETR: 下载文件。“RETR file.txt ”:下载文件 file.txt。

STOR: 上传文件。“STOR file.txt ”:上传文件 file.txt。

REST: 该命令并不传送文件,而是略过指定点后的数据。此命令后应该跟其它要求文件传输的 FTP 命令。“REST 100 ”:重新指定文件传送的偏移量为 100 字节。

QUIT: 关闭与服务器的连接。

 

响应码:

客户端发送 FTP 命令后,服务器返回响应码。

响应码用三位数字编码表示:

第一个数字给出了命令状态的一般性指示,比如响应成功、失败或不完整。

第二个数字是响应类型的分类,如 2 代表跟连接有关的响应,3 代表用户认证。

第三个数字提供了更加详细的信息。

第一个数字的含义如下:

1 表示服务器正确接收信息,还未处理。

2 表示服务器已经正确处理信息。

3 表示服务器正确接收信息,正在处理。

4 表示信息暂时错误。

5 表示信息永久错误。

第二个数字的含义如下:

0 表示语法。

1 表示系统状态和信息。

2 表示连接状态。

3 表示与用户认证有关的信息。

4 表示未定义。

这就是FTP的全部了。

Telnet协议

   2.1 交互式传输协议

Telnet协议一般来说是我们的远程登陆协议(比如ssh协议就是改进的telnet协议),这个协议采用交互式数据,也就是说我们输入class这句话,他会先发给对方,然后对方会重新发给我们,然后再在终端上回显出来,因为基本我们不会在Telnet上传数据,所以就是单通道。

HTTP协议

三、HTTP协议是

      HTTP协议,即超文本传输协议,我们目前所用的所有上网几乎全是这个协议。

3.1 HTTP工作流程

HTTP的工作流程可以分成以下几个步骤:1、与FTP一样建立三次握手。2、输入HTTP协议的格式,协议类型+IP+内容,这三个部分。3、发送命令。

3.2 HTTP哑式协议

HTTP协议与其他协议不同之处在于其他协议连接成功以后会发送一个欢迎你的意思,而HTTP协议什么反馈也没有,直到发送命令。

3.3 HTTP的使用方法

一般来说HTTP的两个命令,一个式GET,就是获取网页上的信息,第二个就是HEAD,用来获取到HTTP的头部信息。

当然,关于HTTP协议是怎样用的其实我现在还没碰到过项目,留待以后再说。

至此我TCP/IP卷一就全部学习完成了,从以太网,ARPUDPIP,以及最重要的TCP和最后的应用层协议,就基本介绍一遍了,其实说一下,我本身不是做网络出身的,也不是纯在网络公司上班,但是其实现在的公司基本上好像没有没有网络的了,而我感觉所有的网络协议无论是新出的还是原来的基本上都是沿用或是借用TCP/IP协议的一些东西,也正是处于这个原因我才下决心要把整个TCP/IP全部都撸一遍。这也是学这本书的初衷吧。

原文地址:https://www.cnblogs.com/songyuchen/p/14008091.html