本篇是关于HTTP协议原理和应用

攻略模板

  • 回忆HTTP特性
  • 总结HTTP特性,并总结用法

自己回忆

  • 在提交表单时有get和post方式,发出的http请求
  • HTTP的状态码
  • HTTP从发出请求到结束的全部过程
  • HTTP和TCP/IP的区别

学习后总结

一次完整的HTTP事务过程

Look at the steps below in a high level that occurs at the background when a user tried to access a website:
DNS Resulution -> TCP HandShake -> HTTP using the connection to exchange information between clint and server.

在浏览器输入一个网址,然后回车,之后发生了什么:

  1. 首先查看浏览器自身、整个系统的DNS Caching中有没有访问过该网址,如果有,且没有过期则直接返回
  2. DNS域名解析(解析网址的IP地址)
  3. 浏览器以此IP地址向服务器发起TCP/IP的3次握手
  4. 建立TCP连接后发起HTTP请求
    • 这里HTTP请求可以使用GET(完整请求一个资源),HEAD(仅请求响应首部),POST(提交表单),PUT(上传),DELETE(删除)
    • URL: Uniform Resource Locator统一资源定位符; URI: Uniform Resource Identifier统一资源标识符
  5. 服务器响应HTTP请求,浏览器得到HTML代码
    • 1xx : 信息性状态码
      • 100,101
    • 2xx : 成功状态码
      • 200 : OK
    • 3xx : 重定向状态码
      • 301 : 永久重定向,location响应首部的值仍为当前URL
      • 302 : 临时重定向, 显示重定向,location响应首部的值为新的URL
      • 304 : Not Modified 未修改,缓存里有,直接使用本地资源即可
    • 4xx : 客户端错误状态码
      • 404 : Not Found 请求的URL资源不存在
    • 5xx : 服务器错误状态码
      • 500 : Internal Server Error 服务器内部错误
      • 502 : Bad Gateway 前面代理服务器联系不到后端的服务器时出现
      • 504 : Gateway Timeout 代理能联系到后端服务器,但后端服务器在规定时间内没有给代理服务器响应
  6. 浏览器解析HTML代码,并请求HTML代码的资源(如js,css,图片等),使用多线程向服务器端去请求下载,如果服务器返回304,则浏览器直接从本地读取该资源的缓存文件。 服务器端关闭连接。
  7. 浏览器对页面进行渲染呈现给用户

Socket,TCP/IP and HTTP

TCP/IP是传输层协议Transport layer protocol,主要解决数据如何在网络中传输。

Socket是对TCP/IP协议的封装,是长连接,一旦建立起来不会主动断掉,但也可能连接断开,比如 服务器或客户端主机down了,网络故障,两者之间长时间没有数据传输,防火墙断开该链接释放资源。

HTTP是应用层协议Application layer protocol,主要解决如何包装数据。HTTP连接是短连接,客户端发送一次请求后,服务器端响应后即会断掉。

Web 使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。Socket是对TCP/IP的封装,是一个API. HTTP works on top of TCP, TCP is in charge of setting up a reliable connection between two machines and HTTP uses this connection to transfer data between the server and client. Without TCP, HTTP cannot function.