深入理解HTTP协议 | 青训营笔记

77 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第6天

今天学习的重点内容:

1.HTTP概念

应用层基于TCP的超文本传输字协议

超文本传输协议可以进行文字分割:超文本(Hypertext)、传输(Transfer)、协议(Protocol)

所谓超文本,就是指可以传输文本及其他格式的数据,如音乐,图片,视频等,是一种被广泛应用的应用层协议

而网络协议就是一种约定,约定好数据传输的格式

平时打开的网站基本都是通过HTTP协议来传输数据的,HTTP协议是基于传输层TCP协议实现

对于在浏览器访问一个资源(网页,图片,视频等)来说,就是基于HTTP数据包的格式,从主机A的进程传输到主机B的进程

如:在浏览器输入juejin.cn/(URL)时,浏览器向掘金的服务器发送了一个HTTP请求,掘金的服务器给我们浏览器返回了一个HTTP响应,响应被浏览器解析后,就展示为页面内容。

2.HTTP工作原理

  • 工作在客户端 - 服务器架构上(c/s)
  • 浏览器作为HTTP客户端通过URL向HTTP服务器发送所有请求。(即WEB服务器,常用的web服务器有:Apache服务器、ISS服务器)
  • web服务器根据接收到的请求后,向客户端发送响应消息。

3.与Https的区别

HTTPS简介:

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

两者区别:

  • Https协议需要到ca申请证书,一般免费证书很少,需要交费
  • http是超文本传输协议,信息是明文传输;https则是具有安全性的ssl加密传输协议
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的。Https是有状态的,是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

4.HTTP响应协议

组成

http响应也由四部分构成,分别是状态行,响应头,空行,响应正文

响应头

响应标头是一种 HTTP 标头,其可以用于 HTTP 响应,且与响应消息主体无关。像 AgeLocationServer 都属于响应标头,它们被用于提供更详细的响应上下文。

并非所有出现在响应中的标头都根据规范将其归类为响应标头。例如,Content-Type 标头就是一个表示标头(representation header),指示响应信息正文中的原始数据类型(在应用 Content-Encoding 表示标头中的编码前)。然而,“会话式”的所有标头通常在响应消息中称为响应标头。

响应头中的Content-Type内容类型: 用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

状态码

1xx : 消息,这一类型的状态码,代表请求已被接受,需要继续处理。但是一般服务器禁止向客户端发送此类状态码;

2xx : 成功,这一类型的状态码,代表请求已成功被服务器接收、理解、并接受;

3xx : 重定向,这类状态码代表需要客户端采取进一步的操作才能完成请求;

4xx : 请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理;

5xx : 服务器错误,这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理

在这里,只介绍常见的十个HTTP状态码,也是必须要记住的十个。

200 : 成功,表示访问成功,正常状态。

301 : 永久移动,表示本网页已经永久性的移动到一个新的地址,在客户端自动将请求地址改为服务器返回的新地址。

302 : 临时重定向,表示网页暂时性的转移到一的新的地址,客户端在以后可以继续向本地址发起请求。

303 : 表示必须临时重定向,并且必须使用GET方式请求。

304 : 重定向至浏览器本身,当浏览器多次发起同一请求,且内容未更改时,使用浏览器缓存,这样可以减少网络开销。

401 : 表示协议格式出错,可能是此IP地址被禁止访问该资源,与403类似。

403 : 表示没有权限,服务器拒绝访问请求。

404 : 这是最常见的错误,表示找不到系统资源,但是只是暂时性地。

500 : 表示服务器程序错误,一个通用的错误信息。

503 : 表示服务器繁忙,或者服务器负载,通常这只是一个临时状态。