HTTP请求相关内容(二)

常见的HTTP 状态码,并描述各状态码的意义

一篇介绍状态码的博客
HTTP状态码 维基百科

1xx消息(这一类型状态码,代表请求已被接受,需要继续处理)
2xx成功(这一类型状态码,代表请求已被成功接收,理解,并接受)
3xx重定向(这一类型状态码,代表需要客户端采取进一步的操作才能完成请求)
4xx客户端错误(这一类型状态码,代表客户端看起来发生了错误,妨碍了服务器的处理)
5xx服务器错误(这一类型状态码。代表服务器无法完成明显有效的请求)

  • 状态码200表示:请求成功。
  • 状态码202表示:服务器已接受请求,但尚未处理。
  • 状态码204表示:服务器已经成功处理了部分GET请求。
  • 状态码301表示:请求的资源已被永久的分配了新的URL。
  • 状态码302表示:请求的资源临时的分配了新的URL。
  • 状态码400表示:请求错误,请求报文中存在语法错误。
  • 状态码401表示:发送的请求需要有通过HTTP认证的认证信息。
  • 状态码403表示:禁止请求,请求被服务器拒绝了。
  • 状态码404表示:服务器上无法找到请求的资源。
  • 状态码500表示:服务器错误,服务器端在执行请求时发生了错误。
  • 状态码503表示:服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。

一个 HTTP post 请求的内容,包括四部分。

其中
第四部分的内容是 username=ff&password=123
第二部分必须含有 Content-Type 字段
请求的路径为 /path

1
2
3
4
5
6
7
8
1 POST /path HTTP/1.1
2 Host: www.baidu.com
2 User-Agent: curl/7.63.0
2 Axxept: */*
2 Content-Length: 24
2 Content-Type: application/x-www-form-urlencoded
3
4 username=ff&password=123

参考博客

一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么

1.URL输入

URL的格式定位了需要请求的地址,格式如下

协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

2.DNS解析

DNS解析就是根据域名查找IP地址并找到服务器。DNS解析过程就是寻找哪台服务器上有你需要资源的过程,例如www.zhihu.com,其实不是知乎网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。所以互联网设计者需要在用户的方便性与可用性方面做一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析。它实际上充当了一个翻译的角色,实现了网址到IP地址的转换。

3.TCP连接

知道了服务器的IP地址,下面就开始与服务器建立连接了。

  • 客户端向服务器发送了一个建议连接的请求(您好,我想认识你);
  • 服务器接到请求后发送同意连接的信号(好的,很高兴认识您);
  • 客户端接到同意连接的信号后,再次向服务器发送了确认信号(我也很高兴认识您),然后,客户端与服务器两者建立了联系;

    4.发送HTTP请求

    发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。

数据经过应用层、传输层、网络层、数据链路层、物理层逐层封装,传输到下一个目的地。其中每一层的作用如下:

(5)应用层:
为应用进程提供服务,加应用层首部封装为协议数据单元。

(4)传输层:
实现端到端通信,加TCP首部封装为数据包,TCP控制了数据包的发送序列的产生,不断的调整发送序列,实现流控和数据完整。

(3)网络层:
转发分组并选择路由;加IP首部封装为IP分组。

(2)数据链路层:
相邻的节点间的数据传输;加首部[mac地址]和尾部封装为帧。

(1)物理层:
具体物理媒介中的数据传送,数据转换为比特流。
下一个目的地接受到数据后,从物理层得到数据然后经过逐层的解包 到 链路层 到 网络层,然后开始上述的处理,在经网络层 链路层 物理层将数据封装好继续传往下一个地址。
到达最终目的地,再经过5层结构,逐层剥离,最终将数据送到目的主机的目的端口。

  • 一个正常的 http request header 一般包括请求的方法,例如GET或者POST等,不常用的还有PUT 和 PATCH, DELETE, HEAD, OPTIONS,以及TRACE
  • 一般的浏览器只能发送GET和POST请求

客户端向服务器发起http请求的时候,会有一些请求信息,请求信息包括四个部分(最少三部分,第四部分可省略)

1
2
3
4
1.请求方法 URI协议/版本
2.请求头(Request Header)
3.请求正文:
4.要上传的内容

5.服务器处理请求并返回HTTP报文

HTTP响应报文也是由三部分组成:状态码,响应报头,响应报文。

6.浏览器解析并渲染页面

浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件渲染树,等到渲染树完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

7.连接结束

  • 1.客户端向服务器发送一个断开连接的请求(不早了,我该走了);
  • 2.服务器接受到请求后发送确认收到请求的信号(知道了);
  • 3.服务器向客户端发送断开通知(我也该走了);
  • 4.客户端接到断开通知后断开连接并反馈一个确认信号(好的),服务器收到确认信号后断开连接;