关于超文本传送协议HTTP的小小总结

上学期上了这门《计算机网络》课,教材是谢希仁的第六版。还记得上第一节课时,我就告诉自己,这门课对我来说很重要 ,必须要认真听。于是,我就每次坐在前排听老大的课。说实话,这门课真的很枯燥,很难一次性吸收。到期末的时候,老大给了我们50个名词,让我们自己去搜索名词解释,然后理解。考试方式就是现场随机抽3个,用自己的话讲述出来。很有意思的是,很多概念用画图的方法和结合自己对生活的思考就比较容易理解,比如SNMP、SMTP、TCP连接的三次握手、四次挥手等。


HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

  • HTTP是面向事务的应用层协议,它是万维网能够可靠的交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
  • HTTP报文通常都是使用TCP连接传送。但是,HTTP协议本身是无连接的
  • HTTP协议是无状态的,也就是说HTTP是没有记忆的。
  • HTTP/1.0的主要缺点就是非持续连接,增加了服务器得负担。而HTTP1.1协议就较好地解决了这个问题,它使用了持续连接。所谓持续连接就是万维网服务器在发送响应之后仍然有一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
  • HTTP/1.1协议的持续连接有两种工作方式,一种是非流水线方式,另一种是流水线方式。非流水线方式就是客户在收到前一个响应后才能发出下一个请求。而流水线方式是客户在收到HTTP的相应报文之前就能够接着发送新的请求报文。于是服务器在收到一个一个请求报文后,就能连续发回响应报文。因此使用流水线方式使TCP连接中的空闲时间少,提高了下载文档效率。
  • 每一个请求报文发送后,就能收到一个响应报文。响应报文的第一行就是状态行。状态行包括三项内容:HTTP版本,状态码以及解释状态码的简单短语。

 状态码都是三位数字的,其中首位数字定义了状态码的类型,分为5大类共33种。

  • 1xx表示通知信息的,如请求收到了或正在进行处理。
  • 2xx表示成功,如接受或知道了。
  • 3xx表示重定向,如要完成请求还必须采取进一步的行动。
  • 4xx表示客户的差错,如请求中有错误的语法或不能完成。
  • 5xx表示服务器的差错,如服务器失效无法完成请求。

常见的状态码(下面这几个以前上课写程序经常遇到,特别是404):

  • 200 OK
  • 304 Not Modified
  • 400 Bad Request 请求出现语法错误
  • 404 Not Found 无法找到指定位置的资源
  • 500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求

用户浏览页面的方法有两种。一种方法是直接在地址栏输入url地址,另一种方法是点击某个页面中的超链接,这时浏览器会自动在因特网找到所要链接的页面。下面用HTTP1.0来说明用户点击了该超链接后发生的事件(假设这个链接是跳转到百度首页的):

  1. 浏览器分析链接指向页面的URL。
  2. 浏览器向DNS请求解析www.baidu.com的IP地址。
  3. 域名系统DNS解析出百度的服务器的IP地址。
  4. 浏览器与服务器建立TCP连接
  5. 浏览器发出取出HTML文件命令
  6. 服务器给出响应,把文件发送给浏览器
  7. 释放TCP连接
  8. 浏览器显示该文件中的所有文本,也就是看到百度首页啦。
原文地址:https://www.cnblogs.com/rosestudy/p/4832974.html