应用层

作者: 刚子来简书啦 | 来源:发表于2020-09-15 23:29 被阅读0次

在操作系统术语中,进行通信的实际上是进程而不是程序。进程通过一个称为套接字(socket)的软件接口在网络上发送和接收报文(message)。套接字是同一台主机内应用层与传输层之间的接口。开发者可以控制套接字在应用层的所有东西,但是对该套接字的传输层几乎没有控制,仅限于:1)选择传输层协议(TCP或UDP);2)设定几个传输层参数,如最大缓存、最大报文段长度等。

应用 应用层协议 支撑的传输层协议
电子邮件 SMTP TCP
远程终端访问 Telnet TCP
Web HTTP TCP
文件传输 FTP TCP
流媒体 HTTP、RTP TCP或UDP
因特网电话 SIP、RTP或专用 UDP

HTTP协议

Web的应用层协议是超文本传输协议(HyperText Transfer Protocal, HTTP)。HTTP协议定义了Web客户机是如何向Web服务器请求Web页面,以及服务器如何将Web页面传送给客户机的。HTTP使用TCP作为它的传输层协议。

服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息,所以我们说HTTP协议是一个无状态(stateless)协议。HTTP协议是无状态的,但是通过引入Cookie技术,再用HTTP协议通信,就可以管理状态了。

HTTP协议的初始版本中,每进行一次HTTP通信,就要断开一次TCP连接。以当年的通信情况来说,因为都是些容量小的文本传输,所以即使这样也没有多大问题。可随着HTTP的普及,一个HTML页面往往包含多张图片,这就导致每次请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。

为了解决上述TCP连接的问题,HTTP/1.1和一部分的HTTP/1.0提出了持久连接(HTTP Persistent Connections,也称为HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。在HTTP/1.1中,所有的连接默认都是持久连接,但在HTTP/1.0内并未标准化。

HTTP报文有两种:请求报文和响应报文。

请求报文
请求报文的通用格式

HTTP请求报文的第一行叫做请求行(request line),后面的行叫做首部行(header line)。

请求行包含3个字段:请求的方法、请求的URI和HTTP版本。

请求的方法 说明 支持的HTTP协议版本
GET 获取指定URI的资源 1.0、1.1
POST 传输报文实体的主体 1.0、1.1
PUT 传输文件 1.0、1.1
HEAD 获取报文首部,不响应实体 1.0、1.1
DELETE 删除文件 1.0、1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议连接代码 1.1
LINK 建立和资源之间的联系 1.0
UNLINK 断开连接关系 1.0

HTTP协议本身并没有规定URI允许的长度(GET的URL长度)和报文实体的大小(POST的表单大小),具体的限制是由客户端的浏览器或服务端的web服务自行进行设定的,且各个浏览器的标准并不统一。

响应报文
响应报文的通用格式

HTTP响应报文的第一行叫做状态行,包含3个字段:HTTP版本、表明响应结果的状态码和原因短语。其它部分与请求报文结构类似。

状态码 类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
200 OK 正常处理
204 No Content 服务器返回的响应中不包含实体的主体部分
206 Partial Content 服务器执行了客户端的范围请求
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
301 Moved Permanently 永久重定向
302 Found 临时性重定向
303 See Other 请求的资源存在另外一个URI,应使用GET方法定向获取资源
304 Not Modified 客户端发送附带条件的请求时,若请求资源未满足条件,直接返回304
307 Temporary Redirect 临时重定向,保持原来的请求方法,即禁止将POST变成GET
4XX Client Error(客户端错误状态码) 服务器无法处理请求
400 Bad Request 请求报文中存在语法错误
401 Unauthorized 请求需要有通过HTTP认证的认证信息
403 Forbidden 请求资源的访问被服务器拒绝了
404 Not Found 服务器上无法找到请求的资源
5XX Server Error(服务器错误状态码) 服务器处理请求出错
500 Internal Server Error 服务器端在执行请求时发生了错误
503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

HTTPS协议

HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。

通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。所以,HTTPS其实就是身披SSL协议这层外壳的HTTP。在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

SSL属于应用层

SSL是独立于HTTP的协议,所以不光是HTTP协议,其它运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。

HTTPS通信

步骤1:客户端通过发送 Client Hello 报文开始SSL通信。报文中包含客户端支持的SSL版本和加密组件列表(所使用的加密算法及密钥长度等)。

步骤2:服务器可进行SSL通信时,会以 Server Hello 报文作为应答。报文中包含SSL版本和加密组件。服务器应答的加密组件是从接收到的客户端加密组件列表中筛选出来的。

步骤3:接着,服务器发送 Certificate 报文。报文中包含公开密钥证书。

步骤4:最后,服务器发送 Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。

步骤5:SLL第一次握手结束后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密钥串。该报文已使用步骤3中的公开密钥进行加密。

步骤6:接着,客户端发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。

步骤7:最后,客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤8:服务器同样发送 Change Sciper Spec 报文。

步骤9:服务器同样发送 Finished 报文。

步骤10:服务器和客户端的 Finished 报文交换完毕后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。

步骤11:应用层协议通信,即发送HTTP响应。

步骤12:由客户端断开连接。断开连接时,发送 close_notify 报文;这步之后发送 TCP FIN 报文来关闭与TCP的通信。或者直接发送关闭。

要进行HTTPS通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买。证书价格可能会根据不同的认证机构略有不同。

相关文章

  • Linux 网络管理

    ↓发送接口 ↕ 应用层 ← 应用层协议 → 应用层 APDU接口 ↕ ...

  • http网络编程

    http协议基础 所谓网络编程,指的是应用层和传输层。 层级 内容 应用层 <应用层>TELNET,SS...

  • http网络编程

    http协议基础 所谓网络编程,指的是应用层和传输层。 层级 内容 应用层 <应用层>TELNET,SS...

  • 网络分层包含哪几部分?分别的作用

    五层 应用层 - http / ftp / dns - 报文 (应用层、表示层、会话层合并为应用层) 传输层 - ...

  • 计网笔记-应用层

    应用层分为两部分:应用程序,应用层协议 应用层 为用户提供Web访问,电子邮件,文件传输等功能的服务 应用层协议 ...

  • 网络协议底层原理(八):应用层

    一、应用层 应用层位于五层模型中的第一层,应用层的作用就是遵守各种应用层协议,从而产生数据,然后向下发送给传输层,...

  • 应用层架构之重构Controller

    本篇在 应用层架构之CDD 这篇的基础上提出,重构Controller和应用层。 这是关于CDD那篇 应用层架构之...

  • 计算机网络体系结构

    1.应用层 应用层是体系结构中的最高层。应用层直接为用户的应用程序提供服务。应用层协议很多,比如支持万维网应用的H...

  • 29 分布式缓存重建并发冲突问题以及zookeeper分布式锁

    上一篇 “分发层 + 应用层” 双层nginx 架构 之 应用层实现, 主要讲解了实现应用层数据缓存更新,为模板提...

  • tcp/ip协议族

    关注应用层协议就行了, 应用层往下的就不要关注了

网友评论

      本文标题:应用层

      本文链接:https://www.haomeiwen.com/subject/lvrqphtx.html