简述HTTP协议

130 阅读3分钟

HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

1. HTTP协议的主要特点

  • 简单快速
  • 无连接
  • 无状态

2. URL

URL:Uniform Resource locator 统一资源定位,我们在浏览器的地址栏里输入的网站地址就叫做URL,URL描述了一台特定服务器上某资源的特定位置,也就是我们每个人家里的门牌号。它们可以明确说明如何从一个精确、固定的位置获取资源。

举个例子,看如下的URL链接:

https://www.weibo.com:8080/AAA/index.jpg

链接由下面的几部分组成:

  • 协议:协议有多种,常见的有http以及https,上面的例子使用的就是https,该部分代表超文本传输的协议,后面是使用 // 来区分后面的域名部分。
  • 域名:这里的域名是www.weibo.com,也可以使用IP地址作为域名使用,如192.168.1.5。一般用域名比较方便查看记忆,同时也便于隐藏我们的id,比较安全。
    • www:代表一个Web(万维网)服务器;
    • weibo.com/:这部分就是网页的服务器的域名,或站点服务器的名称;
    • AAA/:这部分是服务器上的子目录,就好像我们的文件夹;
    • Index.jpg:index.jpg是文件夹中的一张图片信息
  • 端口:这里跟在域名后面的‘8080’是端口部分,这部分是可有可无的。

3. HTTP请求报文

一个 HTTP 请求,包含 4 个部分。

  • 请求行
  • 请求头
  • 空行
  • 请求数据

下图是请求报文的格式:

image.png

下面是一个 GET 请求的示例:

GET /index.html?a=1&b=2 HTTP/1.1
Host: localhost.charlesproxy.com:3000
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/74.0.3729.131 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,
application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: _ga=GA1.2.448607888.1557887884; _gid=GA1.2.2022442462.1557887884
Connection: keep-alive
  • HOST :服务器的域名。
  • User-Agent :浏览器的浏览器身份标识字符串。
  • Accept:能够接受的回应内容类型( Content-Types )。
  • Accept-Encoding:能够接受的编码方式列表。
  • Accept-Language:能够接受的回应内容的自然语言列表。
  • Cookie:之前由服务器通过 Set- Cookie 发送的一个超文本传输协议 Cookie
  • Connection:该浏览器想要优先使用的连接类型。

4. HTTP响应报文

HTTP响应报文由四部分组成: 状态行, 响应头部, 空行, 响应正文。

下面给出响应报文的格式: image.png

响应报文示例:

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
Server:Apache Tomcat/4.0-b1(HTTP/1.1Connector)
Conection:close
<html>
    <head></head>
    <body>
        <!--body goes here-->
    </body>
</html>

4.1 状态码

1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误