键入网址到页面显示,期间发生了什么
【step1】浏览器解析URL,生成发送给Web服务器的请求信息
URL元素组成 http://www.server.com/dir1/file1.html
http:表示访问数据的协议
//:后面的字符串表示服务器的名称
/:后面的表示数据源(文件)的路径名
如果/后面的元素都省略了,则应该请求根目录下事先设置的默认文件
【step2】客户端生成HTTP请求报文
对URL进行解析之后,浏览器确定了Web服务器和文件名,接下来就是根据这些信息来生成HTTP的请求消息了
【step3】IP地址查询---DNS
通过浏览器解析URL并生成HTTP消息后,需要请求操作系统将消息发给Web服务器。但是在发送之前,需要查询服务器域名对应的IP地址,因为请求操作系统发送消息时,必须提供对象的IP地址。
DNS服务器专门保存了Web服务器域名和IP地址的对应关系。DNS层级关系,越靠右边表示其层级越高。
【step4】客户端TCP连接建立完成,通过操作系统的协议栈发送HTTP请求报文
通过DNS获取到IP后,就可以把HTTP的传输工作交给操作系统中的协议栈
给HTTP请求报文加上TCP头部,再加上IP头部、再加上以太网头部、最后交给网卡,转化成电信号发送出去
补充
应用层、传输层(协议栈)、网络层(网卡驱动程序控制网卡)、链路层(物理硬件网卡)
协议栈中的IP协议控制网络包的收发操作,IP协议中还包括ICMP和ARP协议
ICMP用于通知网络包传送过程中产生的错误以及各种控制信息
ARP用于根据IP地址查询相应的以太网MAC地址
【step5】服务器接收数据
接收端的服务器在数据链路层接收到数据包,再层层向上解析,直到应用层。TCP协议将分段的数据包重组,最后得到HTTP请求报文。
【step6】服务器生HTTP成响应报文,并通过操作系统协议栈发送HTTP响应报文
服务器端接收到客户端发送的请求,查找客户端请求的资源,并生成响应报文,响应报文中的一个重要的信息就是状态码。给HTTP响应报文加上TCP头部,再加上IP头部、再加上以太网头部、最后交给网卡,转化成电信号发送出去
【step7】客户端处理服务器返回的响应请求
客户端TCP协议对分段的数据包重组,得到完整的数据包,得到HTTP响应报文。然后对服务器发来的HTTP响应报文进行解码,得到页面数据资源。根据资源类型决定如何处理,页面渲染。
【step8】页面渲染
【step9】关闭连接(TCP连接关闭)