第六章应用层
应用层简介: 应用层为每一类问题规定一种协议,其许多协议都是基于客户服务器的方式
应用层协议:
HTTP(HyperText Transfer Protocol,超文本传输协议),用于实现 WWW(World Wide Web)服务
DNS(Domain Name System,域名系统),用于实现域名到 IP 地址的映射
FTP(File Transfer Protocol,文件传输协议),用于实现交互式文件传输功能
SMTP(Simple Mail Transfer Protocol,简单邮件传送协议),用于实现电子邮箱传送功能
SNMP(Simple Network Management Protocol,简单网络管理协议),用于管理与监视网络设备
DHCP(动态主机配置协议)
TELNET(远程终端协议)
SMTP,POP3,IMAP 电子邮件
常用端口:
TCP:HTTP 80,HTTPS 443,Telnet 23,FTP 20 21,SMTP 25
UDP:DNS 53,SNMP 161 162,TFTP 69,RPC 111
1. HTTP 协议
HTTP 是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议,是基于 TCP/IP 协议之上的应用层协议。HTTP 定义了客户端如何从服务器请求 Web 页面,以及服务器如何把 Web 页面传送给客户端。HTTP 采用了请求 / 响应模型,客户端向服务器发送一个请求报文,服务器以一个状态行作为响应。
【HTTP 特点】
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
灵活:HTTP 允许传输任意类型的数据对象。 正在传输的类型由 Content-Type 加以标记。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态保存:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大(缺点)。另一方面,在服务器不需要先前信息时它的应答就较快,可以更快地处理大量事务(优点)。
支持 B/S 及 C/S 模式。
补充:对于无状态保存,如果用户登录一家购物网站,希望即使用户跳转到该站的其他页面也能继续保持登录状态。HTTP/1.1 虽然是无状态协议,但为了实现该保存状态的功能,引入了 Cookie 技术。
对于无连接,早期的 HTTP 是请求响应之后直接断开,但现在的 HTTP/1.1 不直接断开,而是等几秒钟,如果用户在这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,那么就会断开连接,这样可以提高效率,减少短时间内建立连接的次数,因为建立连接也是耗时的。
【HTTP 各版本比较】
HTTP 0.9:第一个 HTTP 版本,只支持 GET 请求。
HTTP 1.0:支持 GET、HEAD、POST 方法;使用短连接(即为每个请求建立一个 TCP 连接,请求完成后立即断开连接),所以连接无法复用,每次连接都要经历三次握手和慢启动。
HTTP 1.1:1)引入 keepalive 连接(长连接),以便连接复用。HTTP1.1 默认是长连接,而 HTTP1.0 使用长连接需要添加请求头 Connection: Keep-Alive。
HTTP 2.0:1)多路复用:允许同时通过单一的 HTTP 连接发起多重的请求-响应消息;2)首部压缩;3)服务器端推流;
【HTTP 请求 + 响应步骤】
客户端连接到 Web 服务器:HTTP 客户端通常就是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP 套接字连接,比如 http://www.abc.com
发送 HTTP 请求:通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由 请求行、请求头部、空行和请求数据 4 部分组成
服务器接受请求并返回 HTTP 响应:Web 服务器解析请求,定位请求资源并将资源复本写到 TCP 套接字,由客户端读取。一个响应由 状态行、响应头部、空行和响应数据 4 部分组成
释放 TCP 连接:若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,TCP 连接释放;若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求
客户端浏览器解析 HTML 内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示
1.1 HTTP 的请求与响应报文
【HTTP 请求(Request)】
客户端发送一个 HTTP 请求到服务器的请求消息包括:请求行(request line)、请求头部(header)、空行 和 请求数据 四个部分。
(1)HTTP 请求行: 包括请求方法、请求地址和协议版本
请求方法:HTTP/1.1 定义了 8 种请求方法,最常用的是 get 和 post
请求地址(URL):资源位置的识别方法,组成为 <协议>://<主机>:<端口>/<路径>?<参数>,端口、路径和参数可以省略
协议版本:格式为 HTTP/主版本号.次版本号,常用的有 HTTP/1.0 和 HTTP/1.1
浙公网安备 33010602011771号