您现在的位置:首页 >> 前端 >> 内容

全面解析HTTP(一)

时间:2016/12/3 9:48:00 点击:

  核心提示:【前言】很久以前学过《计算机网络》这本书,但是大部分平时编程用不上的知识点忘得一干二净。可是知识要形成体系才对,所以教研室的师兄买了俩本好书我立即借来研读,并且在笔记本中手动整理好知识点。怕笔记本丢失...

【前言】很久以前学过《计算机网络》这本书,但是大部分平时编程用不上的知识点忘得一干二净。可是知识要形成体系才对,所以教研室的师兄买了俩本好书我立即借来研读,并且在笔记本中手动整理好知识点。怕笔记本丢失,所以在把知识点写成博客,存入云端也加深知识点。

【注意】此文是我研读《图解HTTP》这本书的笔记,可以说把一本书的重点给总结概括,也强烈向大家推荐此书,适合用于打牢基础。看此文前请大家看看我之前写的这篇博客网络编程系列之一:Http协议介绍。该文向大家详细介绍了:URL,请求/响应报文

           全面解析HTTP(一)

- 接下来这图是我用xmind画的本文的大体脉络与目录
全面解析HTTP(一)

(一)网络基础TCP/IP协议簇

1.TCP/IP协议簇分为四层:应用层、传输层、网络层和数据链路层。如下图:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="这里写图片描述" src="/uploadfile/Collfiles/20161130/20161130094758421.png" title="\" />

应用层:决定了向用户提供应用服务时通信的活动,比如FTP,DNS以及今天要讲的HTTP。 传输层:对于上层应用层,提供处于网络连接中的俩台计算机之间的数据传输。 网络层:该层规定了通过怎样的传输路径到达对方计算机,并把数据包传给对方。 数据链路层:用来处理连接网络硬件部分。 【注意】发送端在层与层之间传输数据时,没经过一层必定会被打上该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层会把对应的首部消掉。

2.与HTTP关系密切的协议:IP,TCP,DNS

IP协议作用是把各种数据包发送给对方,要保证确实传送到对方那里需要满足各类条件,其中俩个重要条件是:IP地址和MAC地址。IP地址指节点被分配到的地址,MAC地址指的是网卡所属的固定地址。 TCP协议提供可到的传输服务,位于传输层。字节流服务:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。可靠的服务是指:能过把数据准确可靠地传送给对方,也就是三次握手过程(将会在下一篇博文中详细介绍三次握手和四次挥手)。握手中使用了TCP的标志(flag)—SYN(synchronize)和ACK(acknowledgement).

全面解析HTTP(一)

负责域名解析的DNS服务:DNS协议提供通过域名查找IP或是通过IP反查域名。

3.各种协议与HTTP协议的关系

接下来放大招了,对于你在浏览器中输入url到浏览器显示HTML页面的背后过程到底是什么呢?大家可以看我转载的这篇博文:当你在浏览器地址栏输入一个URL后回车,将会发生的事情?或者看下面这幅图:

全面解析HTTP(一)

接下来的URL解析在以前的博文中写过,这里不再提及。

(二).简单地HTTP协议

1.HTTP请求/响应报文

以前博文介绍过,不再提及。

2.持久连接节省通信量

在HTTP协议初始版本中每进行一次HTTP通信就要断开一次TCP连接。
全面解析HTTP(一)

在HTTP/1.1中,所有连接都默认持久连接:建立一次TCP连接之后可以进行多次请求响应交互。减轻服务端负担,也是HTTP请求响应可以更早结束。
全面解析HTTP(一)

3.管线化(pipelining)

同时并行发送多个请求,不需要一个接一个地等待响应!

全面解析HTTP(一)

4.使用Cookie的状态管理

HTTP是无状态的协议,它不对之前发生过的请求和响应的状态进行管理。当一个需要登录认证的页面本身无法进行状态管理时,每次跳转到新的页面岂不是需要重新登录,为了解决这些矛盾,引入Cookie机制。

全面解析HTTP(一)

(三).HTTP报文内的HTTP信息

讲过不讲

(四).返回结果的HTTP状态码

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果,状态码类别如下:
全面解析HTTP(一)浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求自动再次发送

301、302标准禁止将POST改为GET,但实际中都会允许这么做

2.4 304 Not Modified

表示客户端发送得附带条件的请求时,服务器运行请求访问,但未满足条件的情况,304返回时,不包含任何响应的主体部分

2.5 307 Temporary Redirect

临时重定向:禁止将POST转换为GET,该状态码会严格遵守浏览器标准

3、客户端错误:4XX的响应结果表明客户端是发生错误的原因所在

3.1 400 Bad Ruquest

请求报文存在语法错误

3.2 401 Unauthorized

发送的请求需要有通过http认证(BASIC认证、DIGEST认证)的认证信息

PS:若之前已经进行了一次请求,则表示用户认证失败

返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用来质询用户信息

3.3 403 Forbidden

对请求资源的访问被服务器拒绝(服务端没有必要给出拒绝的详细理由,如果想做说明,可在实体主体部分对原因进行描述)

举例:未获得文件系统的访问授权、访问权限出现某些问题等

3.4 404 Not Found

服务器上无法找到请求的资源

4、 5XX服务器错误:服务器本身发生错误

4.1 500 Internal Server Error

服务器端执行请求时发生错误

4.2 503 Server Unavailable

服务器暂时处于超负载或者正在停机维护,现在无法处理请求

(四).与HTTP协作的Web服务器
未完待续。。。

作者:网络 来源:K_天道酬勤