首先需要知道:
用户在浏览器中输入网址时候,浏览器会通过访问的域名来定位得到IP(DNS)
会依此从浏览器缓存、系统缓存、路由器缓存、ISP DNS缓存中查找
HTTP协议:超文本传输协议,目的是为了提供一种发布和接受HTML页面的方法,浏览器和服务器都遵循的一种语法规范,所有的信息通过这种语法规范传输,使得浏览器和服务器都可以正确理解。
但浏览器和服务器不是直接连接上的,需要中间的网络设备(网线),而网络设备s行传输数据还需要一种通用的语法规范(协议),这种协议一般是TCP协议和UDP协议
通信过程:
- 输入网址后,请求由浏览器以一种满足http协议的请求报文的形式发往服务器。请求报文中包含了要请求的页面地址,请求的文件类型等一系列信息
- 传递的时候,网络设备把请求报文包装在一个满足TCP协议的数据中,通过网线传送给服务器
- 服务器接受数据后,将数据解译,重新恢复成浏览器满足http协议的请求报文的形式,然后传向服务器软件
- 服务软件得到请求报文后,根据请求报文的页面地址在服务器数据库中找到相应的页面,生成满足http协议的响应报文发向浏览器。响应报文包括响应报文头和请求页面的代码
- 响应报文通过服务器的网络设备,包装在满足TCP协议的数据,通过网线传给客户端
- 客户端网络设备将响应报文解析,传给浏览器软件,浏览器将报文解析,得到网页
一个网页往往包含HTML,JS代码和CSS样式表,图片等多种数据,这些数据是按一定顺序由浏览器请求,服务器传输的。通过不断地请求,得到最后完整的网页
但在数据传输前,需要先建立连接,也就是TCP/IP协议的三次握手和四次挥手
三次握手步骤:
- 第一次握手:客户端向服务器端发送连接请求报文段,客户端进入等待状态,等待服务器确认
- 第二次握手:服务器收到客户端的报文段,对报文段确认后,服务器端将服务器端连接配置信息放到报文段中,发送给客户端,服务器进入等待状态
- 第三次握手:客户端收到服务器返回的报文段,根据配置信息发送连接报文段,建立连接状态
数据传输完毕后,通过四次挥手断开连接
- 第一次挥手:客户端向服务器端发送请求关闭连接报文段,表示客户端没有数据要发送给服务器了,客户端进入终止等待1状态
- 第二次挥手:服务器端收到客户端发送的报文段,再发送一个确认关闭报文段,表示同意关闭请求,服务器进入关闭等待状态
- 第三次挥手:客户端收到请求后,进入终止等待2状态,等待服务器发送连接释放报文。服务器最后的数据发送完毕后,向客户端发送连接释放报文,服务器进入最后确认状态
- 第四次握手:客户端收到报文,发送确认报文,进入时间等待状态(注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。),而服务器端收到确认报文后马上关闭