浏览器工作原理——step1 通讯(整理)

2020-01-20  本文已影响0人  维仔_411d

Performance API:

navigationStart
unloadStart
unloadEnd
fetchStart
domainLookupStart
domainLookupEnd
connectStart
secureConnectStart
connectEnd
requestStart
responseStart
responseEnd
domLoading
domInteractive
contentLoadedEventStart
contentLoadedEventEnd
domComplete
loadEventStart
loadEventEnd

将一个url变成屏幕上显示的网页过程

HTTP协议

3-1. telnet示例

telnet baidu.com 80

request

# request line: HTTP method, 请求的路径, 协议和版本
GET / HTTP/1.1 
# 请求头,每行以冒号分隔名称和值
HOST: baidu.com

response

# response line: 协议和版本, HTTP状态码,状态文本
HTTP/1.1 301 Moved Permanently
# 响应头,每行以冒号分隔名称和值
Date: Fri, 25 Jan 2019 13:28:12 GMT
Content-Type: text/html
Content-Length: 182
Connection: keep-alive
Location: https://time.geekbang.org/
Strict-Transport-Security: max-age=15768000

# 响应体,html代码
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>

3-2 HTTP协议格式

3-3 HTTP方法(method)

GET
POST
HEAD
OPTIONS
PUT
DELETE
CONNECT 多用于HTTPS和Websocket
TRACE 一般用于调试 多数线上服务都不支持

3-4 HTTP Status code(状态码) 和 Status text (状态文本)

3-5 HTTP Head (HTTP 头)

较常见的HTTP头:

Request Header 意义
Accept 浏览器端接受的格式
Accept-Encoding 浏览器端接收的编码方式
Accept-Language 浏览器端接受的语言,用于判断多语言
Cache-Control 控制缓存的时效性
Connection 连接方式,若是keep-alive 且服务端支持,则会复用连接
Host HTTP访问使用的域名
If-Modified-Since 上次访问的更改时间,如果服务端认为此时间后自己没有更新,则会给出304响应
If-None-Match 上次访问时使用的E-Tag,通常是页面的信息摘要(比更改时间更准确)
User-Agent 客户端表示,多数浏览器的这个字段十分复杂
Cookie 客户端存储的cookie字符串
Response Header 意义
Content-Encoding 内容编码方式,通常是gzip
Content-Length 内容的长度,有利于浏览器判断内容是否已经结束
Content-Type 内容的类型,所有请求网页的都是text/html
Cache-Control 缓存控制 ,用于通知各级缓存保存的时间,如max-age=0,表示不需要缓存
Connection 连接方式,keep-alive 表示复用连接
Keep-Alive 保持连接不断时需要的一些信息,如timeout=5,max=100
Last-Modified 页面上次修改的时间
ETag 页面信息摘要,用于判断是否需要重新到服务端取回页面
Expires 过期时间,用于判断下次请求是否需要到服务端取回页面
Server 服务端软件的类型
Set-Cookie 设置cookie,可以存在多个
Date 当前服务器的日期
Via 服务端的请求链路,对一些调试场景至关重要的一个头

3-6 HTTP Request Body (HTTP 头)

一些常见的body格式是:(Content-Type的内容)
application/x-www-form-urlencoded # 常见于表单提交数据,key1=value1&key2=value2
multipart/form-data # 表单上传文件
application/xml # xml
application/json # json数据
text/plain # 纯文本数据

3-7 HTTPS

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

  1. HTTPS
    HTTPS有两方面作用,1是确认目标服务端身份,二是保证传输的数据不会被网络中间节点窃听或篡改

  2. HTTP2
    HTTP2是HTTP 1.1的升级版本
    HTTP2.0最大的改进有两点,1是支持服务端推送,2是支持TCP连接复用
    服务端推送能狗仔客户端发送第一个请求到服务端是,提前把一部分内容推送给客户端,放入缓存当中,这可以避免客户端请求顺序带来的并行度不高,从而导致的性能问题
    TCP连接复用,则使用同一个TCP连接来传输多个HTTP请求,避免了TCP连接建立时的三次握手开销,和初建TCP连接时传输窗口小的问题

上一篇下一篇

猜你喜欢

热点阅读