美文网首页想法
浏览器工作原理(HTTP)

浏览器工作原理(HTTP)

作者: 兮兮码字的地方 | 来源:发表于2019-03-28 21:17 被阅读0次

HTTP 协议简介

浏览器工作的第一步是通过HTTP请求,根据URL 访问服务器获取数据(建立http请求之前还需要 DNS 查询)。

HTTP是一种应用层的协议,是一个纯文本的协议,规定了必须是基于 TCP 协议(传输层)的,TCP 协议是一条双向的通讯通道,HTTP 在 TCP 的基础上,规定了 Request-Response 的模式。这个模式决定了通讯必定是由浏览器端首先发起的。

HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息。


HTTP请求过程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

(1)建立TCP连接

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80

(2)Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令

例如:GET/sample/hello.jsp HTTP/1.1

(3)Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

(4)Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,

HTTP/1.1 200 OK

应答的第一部分是协议的版本号和应答状态码

(5)Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

(6)Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

(7)Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。


HTTP 协议格式

浏览器工作原理(HTTP)

一,HTTP请求

下面是一个HTTP请求的例子:

GET /sample.jsp HTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate                         
username=jinqiao&password=1234

1.request line

第一行被称作 request line,它分为三个部分,请求的“方法”、请求的路径、请求的协议和版本。

request line 里面的方法跟我们编程中的方法意义类似,表示我们此次 HTTP 请求希望执行的操作类型。方法有以下几种定义:

GET,POST,HEAD,PUT,DELETE,CONNECT,OPTIONS,TRACE

浏览器通过地址栏访问页面都是 GET 方法。表单提交产生 POST 方法。

HEAD 则是跟 GET 类似,只返回请求头,多数由 JavaScript 发起

PUT 和 DELETE 分别表示添加资源和删除资源,但是实际上这只是语义上的一种约定,并没有强约束。

CONNECT 现在多用于 HTTPS 和 WebSocket。

OPTIONS 和 TRACE 一般用于调试,多数线上服务都不支持。

GET方法 VS POST方法

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如

Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分,所以提交的数据量不能太大。

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

2.Request Header (HTTP 头)

request line后面是请求头。由若干行组成,每行是用冒号分隔的名称和值。是键值对的格式。

浏览器工作原理(HTTP)

3.HTTP Request Body(正文)

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束。

接下来的是请求正文。请求正文中可以包含客户提交的查询字符串,文件或者表单数据。

一些常见的 body 格式是:

application/json

application/x-www-form-urlencoded

multipart/form-data

text/xml

我们使用 html 的 form 标签提交产生的 html 请求,默认会产生 application/x-www-form-urlencoded 的数据格式,当有文件上传时,则会使用 multipart/form-data。

二,HTTP响应

HTTP响应与HTTP请求相似,HTTP响应也由3个部分构成。

下面是一个HTTP响应的例子:

HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112


<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>


1.response line

第一行被称作 response line,它也分为三个部分,协议和版本、状态码和状态文本。

常见的状态码有以下几种。

1xx:临时回应,表示客户端请继续。

2xx:请求成功。

200:请求成功。

3xx: 表示请求的目标有变化,希望客户端进一步处理。

301&302:永久性与临时性跳转。

304:跟客户端缓存没有更新。

4xx:客户端请求错误。

403:无权限。

404:表示请求的页面不存在。

5xx:服务端请求错误。

500:服务端错误。

503:服务端暂时性错误,可以一会再试。


2.Response Header

紧随在 response line 之后,是响应头,每行是用冒号分隔的名称和值。

浏览器工作原理(HTTP)

3.HTTP Response Body

在头之后,以一个空行为分隔,是 /响应体,内容是 html 代码。


HTTPS

在 HTTP 协议的基础上,HTTPS 和 HTTP2 规定了更复杂的内容,但是它基本保持了 HTTP 的设计思想,即:使用上的 Request-Response 模式。

HTTPS 有两个作用,一是确定请求的目标服务端身份,二是保证传输的数据不会被网络中间节点窃听或者篡改。

HTTPS 是使用加密通道来传输 HTTP 的内容。但是 HTTPS 首先与服务端建立一条 TLS 加密通道。TLS 构建于 TCP 协议之上,它实际上是对传输的内容做一次加密,所以从传输内容上看,HTTPS 跟 HTTP 没有任何区别。


HTTP 2

HTTP 2 是 HTTP 1.1 的升级版本。

HTTP 2.0 最大的改进有两点,一是支持服务端推送,二是支持 TCP 连接复用。

服务端推送能够在客户端发送第一个请求到服务端时,提前把一部分内容推送给客户端,放入缓存当中,这可以避免客户端请求顺序带来的并行度不高,从而导致的性能问题。

TCP 连接复用,则使用同一个 TCP 连接来传输多个 HTTP 请求,避免了 TCP 连接建立时的三次握手开销,和初建 TCP 连接时传输窗口小的问题。

相关文章

  • 前端训练营第五周学习总结

    浏览器工作原理 总论与Http协议 URL --http--> HTML --parse--> DOM --css...

  • 浏览器工作原理(HTTP)

    HTTP 协议简介 浏览器工作的第一步是通过HTTP请求,根据URL 访问服务器获取数据(建立http请求之前还需...

  • Http 基础

    [toc] Http 基础 Http的原理和工作机制 Http 定义 Http到底是什么 直观印象: 浏览器输入地...

  • 前端学习链接

    新博客地址:http://gengliming.com Preamble 别说话,快看 关于浏览器 浏览器工作原理...

  • 如何学习HTTP

    1、看《图解 HTTP》这本入门书籍2、再看《图解 HTTP》读书笔记3、浏览器的工作原理:新式网络浏览器幕后揭秘...

  • HTTP请求和响应

    1.HTTP工作原理 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即...

  • 浏览器工作原理-HTTP 协议

    基于 ABNF 语义定义的 HTTP 消息格式 1. ABNF (扩充巴科斯-瑙尔范式)操作符 空白字符:用来分隔...

  • LNMP与LAMP的工作原理

    1.LNMP的工作原理 Linux+Nginx+Mysql+PHP 首先,浏览器发送http request请求到...

  • 前端性能优化

    参考文档:浏览器工作原理与实践—李兵http://www.zyiz.net/tech/detail-134416....

  • http协议

    1、上网流程2、web服务器的工作原理3、DNS工作原理4、HTTP协议 1、上网流程浏览器本身它是一个客户端,当...

网友评论

    本文标题:浏览器工作原理(HTTP)

    本文链接:https://www.haomeiwen.com/subject/ebchbqtx.html