前言
无意遇到一份学习路线,想着沿着走走试试,也分享出来:Zero To Hero: Web3.0 and Solidity Development Roadmap
正题
以输入网址www..github.com为例演示web基本工作流程:
1.基本术语
(1)客户端(client)
一个可以连接互联网的应用,例如浏览器,通过这个应用我们可以将我们的请求我们的输入传送到另外一台机器(服务器),获取我们想要的结果。
(2) 服务端(server)
连接在互联网上的机器,上面运行着服务软件,这些软件监控客户端的各种请求,并且知道如何回应这些请求,存储/处理/发送网页到客户端。
(3)IP地址(ip address)
是设备在tcp/ip网络上的标识,由4个以点分隔的十进制数字表示(如11.0.7.6),是网络上的逻辑地址,会被tcp/ip协议转换成物理MAC地址定位到具体设备。客户端和服务端都有标识自己的ip地址,让自己可以被找到。
(4)ISP(internet service provider)
是客户端和服务器之间的桥梁,客户端输入www..github.com,并不知道www..github.com在哪里,需要ISP执行下DNS(domain name system)域名解析或取www..github.com域名对应的ip,通过ip找到邀访问的服务器。
(5)DNS
跟踪网络上机器的域名和它们对应的ip地址,这样用户就不用输入ip地址了,只需要输入域名即可。
(6)TCP/IP(transmission control protocol/internet protocol)
网络传输数据的协议
(7)端口号(port number)
是一个16bit定义的整数,和ip地址一起使用,唯一标识可以处理相关请求的服务。
(8)主机(host)
连接到网络上的设备机器(这个设备可以用作server也可以用作client,或者其他用途设备)。
(9)HTTP(hyper-text transfer protocol)
是网络浏览器和网络服务器之间的通信协议。
(10)URL(uniform resource locators)
标识网络资源, Zero To Hero: Web3.0 and Solidity Development Roadmap,定义了获取资源使用的协议https,请求的服务器github.com和资源名称someone,这个资源会通过https协议传输给github.com服务器获取到指定的资源。
2.web基本工作流
(1)用户在浏览器中输入url:https://www.github.com/
(2)浏览器会和ISP通信,ISP做DNS找到www.github.com对应的ip地址
(3)DNS服务器会先访问根节点服务器,返回下一个节点的服务器地址,然后迭代找到对应域名的ip地址,如示例图示:
(4)ISP返回IP到浏览器,浏览器使用IP地址替换对应的域名,并附上端口号访问
https://192.168.3.445:443(https的默认端口号443)
(5)浏览器会使用ip地址和端口号创建一个tcp socket连接,这样客户端和服务器就建立了连接
(6)浏览器发送请求需要github.com的首页
(7)服务器会查找请求的首页网页,如果找到了就返回网页,如果没有找到就返回HTTP 404错误信息,网页没有找到给客户端
(8)浏览器拿到网页后会从头到尾扫描HTML页和附加的其他文件CSS/javascript等,进行网页解析
(9)浏览器解析加载完所有文件后会把最终形态网页呈现到屏幕上
3.其他粗细节
(1)传输粗细节
我们的请求和响应数据包为了适应传输,会被分割成一个个小数据包,每一个小数据包上都会有自己的tpc头,源端目标端的ip地址和端口号,然后扔到网络的路由器上传输。
ip层的目的是通过每个包的ip头将数据包送到目标端,tcp层的目的是将请求或响应数据包拆分成小包,到目标端后再组装成正确的数据包,并且在有包丢失时控制重传。
(2)浏览器网页解析粗细节
浏览器HTML解析算法,会把HTML解析成树结构的DOM元素,这种结构就会方便像javascript等语言进行处理操作。每个节点的格式风格被解析并运用到每个节点上,最终展示给我们。