从客户端打开浏览器到服务器返回页面,这中间发生了什么?
宏观层面(应用层面):
1.在一个客户端上,打开浏览器,在浏览器的地址栏中输入域名,访问网站。
2.在敲入网址并按下回车后,将会发生以下神奇的事情:浏览器先尝试从Host文件中获取域名对应的IP地址,如果能取到则直接使用Host文件的解析结果。
3.如果不能,就使用DNS协议来获取IP地址。在DNS协议汇中,PC会向你的本地DNS服务器求助,本地DNS服务器一般是通过手动设置的静态IP地址,另一种是同动态DHCP协议获取的动态IP地址。请求DNS服务器后,得到域名的IP地址。
4.接下来建立TCP连接。在TCP协议中,建立TCP需要与域名服务器握手三次,先告诉服务器要发送给服务器的东西(SYN),服务器应答并回应服务器要发送的东西(SYN,ACK),然后客户端应答服务器(ACK),总共来回三次,称为三次握手。
5.三次握手成功后,开始用HTTP协议请求网页内容。发送一个HTTP报文给服务器,如果服务器禁止访问则会回复“Forbidden”或者“file not found”等。
6.如果服务器正常则回复“OK”,状态码为200并将你要的数据传给你。你收到了服务器的回复,就是HTML形式的文本。浏览器必须要能够理解文本的内容,并快速地渲染到屏幕花上,渲染出后就能看到相应的网站首页了。
微观层面: