发起http请求---输入网址背后发生的那些事

输入网址背后发生的那些事:
   1.DNS域名解析 : 查找域名对应的IP地址
   2.建立socket连接【TCP3次握手
   3. 发起请求 : 向IP对应的服务器发送http请求
   4.响应请求并传输数据 : 服务器响应http请求,发回网页内容
   5.浏览器解析网页内容 : 浏览器解析并渲染呈现给用户
   6.连接结束【TCP4次挥手


  建立socket连接【TCP三次握手】,请求连接成功建立后,开始向web服务器发送请求,这个请求一般是Get或Post命令(Post用于Form参数的传递)

  其实这部分又可以称为前端工程师眼中的HTTP,它主要发生在客户端。发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。

  那什么是HTTP请求报文

  HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。

请求行

  格式如下:

format:
Method Request-URL HTTP-Version CRLF
eg: 
GET www.google.com/ HTTP/1.1

  常用的方法有: GET, POST, PUT, DELETE, OPTIONS, HEAD。
TODO:
  • GET和POST有什么区别?

请求报头

  请求报头允许客户端向服务器传递请求的附加信息和客户端自身的信息。
  PS: 客户端不一定特指浏览器,有时候也可使用Linux下的CURL命令以及HTTP客户端测试工具等。
  常见的请求报头有: Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent等。

发起http请求---输入网址背后发生的那些事_第1张图片
  上图是使用Chrome开发者工具截取的对谷歌的HTTP请求以及响应报文,从图中可以看出,请求报头中使用了Accept, Accept-Encoding, Accept-Language, Cache-Control, Connection, Cookie等字段。Accept用于指定客户端用于接受哪些类型的信息,Accept-Encoding与Accept类似,它用于指定接受的编码方式。Connection设置为Keep-alive用于告诉客户端本次HTTP请求结束之后并不需要关闭TCP连接,这样可以使下次HTTP请求使用相同的TCP通道,节省TCP连接建立的时间。

请求正文

  当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中。在请求包头中有一些与请求正文相关的信息,例如: 现在的Web应用通常采用Rest架构,请求的数据格式一般为json。这时就需要设置Content-Type: application/json。

你可能感兴趣的:(HTTP)