请基于 TCP/IP 五层网络模型描述下当我们在浏览器请求 https ://pp.io 站点时,发生了哪些事情
引言
TCP/TP网络模型自下而上依次是物理层,数据链路层,网络层,传输层,应用层。(传统的OSI模型为七层模型,多了表示层和会话层)
一、 URL解析
当我们在地址栏输入 https ://pp.io 时,我们的浏览器就开始了URL解析。
URL的一般形式为: <协议>:// <主机> : <端口>/ <路径>。
常见的协议一般有http,ftp,https等。
主机一般是域名,也可以是 IP 地址。
端口和路径可以省略。
1.HTTPS协议
当前URL的协议是:https,相比于HTTP建立于TCP基础上的明文传输,HTTPS基于SSL/TLS,而SSL/TLS又是基于TCP/IP,也就是说SSL/TLS基于TCP基础上再做了一层封装,对内容进行加密。
2.域名解析
同时应用层负责域名解析,pp.io只是用我们人类比较熟悉的方式来标识特定因特网中的计算机,DNS系统可以把他转换成机器易于处理的 IP 地址。
DNS的工作分为以下几步:
1) 同一台用户主机上运行着DNS应用的客户端
2) 浏览器从上述URL中抽取出主机名 pp.io并将这台主机名传送给DNS应用的客户端
3) DNS 查询浏览器缓存 -> 查询系统缓存 -> 查询路由器缓存 -> 查询ISP DNS缓存。进行递归搜索,从.io 顶级域名服务器到 pp 的域名的服务器。
4) DNS 客户向服务器发送一个包含主机名的请求。
5) DNS 客户最终会收到一份回答报文,其中有对应该主机的IP地址
6) 一旦浏览器收到一份来自DNS域名服务器的该IP地址,它能够向位于该IP的80端口的HTTP服务器进程发起一个TCP连接。(域名未特别指明端口,一般默认为80)。
二、 建立 TCP 连接
当浏览器向已知IP的80端口的HTTP服务器进程发起一个TCP连接后,TCP协议通过三次握手协议建立联系:
1)浏览器发送TCP连接的请求向IP地址对应的服务器(带SYN表示的数据包)
2)服务器收到TCP连接的请求后,回复可以连接请求(带有SYN/ACK标志的数据包)
3)浏览器收到回传的数据,确认OK后,还会向服务端发送数据(带ACK标志的数据包),表示三次握手结束。
三、数据传输
三次握手成功以后,浏览器和服务器端开始TCP连接形式传输数据包。
服务器传给浏览器所需要的资源数据
浏览器获得数据,渲染加强然后呈现给用户。