首先,有个问题要告知对此感兴趣的小白。
一个网页长什么样呢?
这是我们熟知的网页。
但这其实是它“穿了衣服”以后的样子。
“没穿衣服”之前,网页是下面这个样子的:
网页原码
我们输入网址以后,通常是一个HTTP请求,没错就是网址前面的Http://
例如:
我们会上网的人类都知道这叫网址,但是浏览器可不知道网址是个什么概念
那浏览器会怎么办呢?
其实网址对浏览器来说,叫域名,我们把域名“告诉”浏览器以后,浏览器就会去解析这个域名,得到对应的主机的IP地址。百度的网址,浏览器就会解析出百度主机服务器的IP地址,从而让我们自己的电脑和百度的主机能连接起来。(相互知道IP地址这个门牌号码了,就可以相互串门了)
浏览器解析域名,是用DNS域名解析系统解析的。其实DNS简单说就是域名和IP地址映射的一个分布式数据库。
这时,我们的浏览器要和网站建立起连接了。这个连接是TCP三次握手连接。浏览器利用IP直接与网站主机通信。浏览器发出TCP(SYN标志位为1)连接请求,主机返回TCP(SYN输入网址后就跳转到其他网址,ACK标志位均为1)应答报文,浏览器收到应答报文发现ACK标志位为1,表示连接请求确认。浏览器返回TCP()确认报文,主机收到确认报文,三次握手,TCP链接建立完成。
说了这么一大通输入网址后就跳转到其他网址,其实就是说,浏览器根据门牌号找到对方家在哪了,然后带着诚意(SYN数据包)去拜访网站,网站回礼(SYN和ACK数据包)给我们的浏览器,浏览器再告诉网站我们是朋友了(ACK数据包)。那相互之间就可以交流,可以发送信息了。
坠入爱河的浏览器和网站相互倾诉什么秘密,见下篇。