每天都在上网,你知道打开网页的一瞬间都发生了哪些事吗?
1.DNS解析
2.TCP连接
3.发送HTTP Request
4.服务器处理 Request and Return Request 报文
5.浏览器解析并渲染页面
6.连接结束
1:dns(Domain Name System, 域名系统)解析;DNS即系的过程就是寻找哪台机器上有你需要的资源的过程。当你在浏览器中输入一个地址时,例如: baidu.com, 这其实不是百度网站真正意义上的 address, 互联网上的每一台计算机的 only flag是它的 ip address, 但是 ip address 并不方便记忆;用户更喜欢用方便记忆的网址去寻找互联网上的其他计算机, 也就是上面调到的百度的网址(main);所以互联网设计者需要在用户的方便性 and 可用性方面做一个权衡, 这个权衡就是一个网址到 ip 地址的转换, 这个过程就是 DNS解析; 他实际上就相当于一个翻译的角色, 实现了网址到 ip 地址的转换。
当然如果你直接输入另一台电脑 or Server 来访问它就不存在DNS解析这异步了, 例如 ping 127.0.0.1 :)
2:TCP Connect (三次握手)
通俗地讲,通信连接的建立需要以下三个过程:
主机向服务器发送一个建立连接的请求 (例如: 你好,我想认识你);
服务器接收到请求后发送同意连接的信号(例如:好的,很高兴认识你);
主机接收到同意连接的信号后,再次向服务器发送了确认信号(我也很高兴认识你),自此, 主机与服务器两者建立了连接。
(三次握手的过程采用了TCP协议, 其可以保证信息传输的可靠性,安全性;三次握手过程中, 若一方收不到确认信号, 协议会要求重新发送信号, TCP相对于UDP更加安全, 可靠;但是UDP因为没有三次握手的过程建立连接也会更快, 可以用到的地方例如直播等对丢包率要求不高的场景)
3:发送HTTP请求
当服务器与主机建立了连接之后,下面的主机便与服务器进行通信;网页请求是一个单项请求的过程,即是一个主机向服务器请求数据,服务器返回相应的数据的过程;
浏览器根据URL内容生成了HTTP请求, HTTP请求报文由三部分组成: 请求行, 请求报头, 请求正文;
4:服务器处理请求并返回HTTP报文
服务器接收到请求后,会根据HTTP请求中的内容来决定如何获取相应的HTML文件;
服务器将得到的 HTML 文件发送给浏览器;
HTTP响应报文也是由三部分组成:状态码,响应报头,响应报文
4-1:状态码:
1xx: 指示信息-表示已接收请求,继续处理
2xx:成功-表示服务器已成功接收请求,理解, 接受
3xx:重定向-要完成请求必须进行更进一步的操作
4xx:客户端错误-请求有语法错误或请求无法实现
5xx:服务器端错误-服务器未能实现合法请求;
4-2:响应报头
常见的响应报头字段有: server, Connection ... ...
4-3:响应报文
服务器返回给浏览器的文本信息, 通常为html, css, js, 图片等文件就放在这一部分;