网站是如何被访问到信息的

一、主要流程:

  1.域名解析为IP地址:浏览器本身是一个客户端,当我们输入URL后,浏览器会请求DNS服务器,从而将URL中的域名解析为IP地址

  2.与目的主机建立TCP连接(三次握手):通过IP地址找到对应的IP服务器,与目的主机建立TCP连接

  3.发送和收取数据(浏览器与目的主机开始HTTP访问过程)

     (1)浏览器发送HTTP Request包后,服务器接受到请求包后开始处理请求包

     (2)服务器接受请求包后,服务器调用自身服务,返回HTTP Response包

     (3)客户端收到来自服务器的响应包,开始渲染Response包里面的主体body

   4.与目的主机断开TCP连接(四次挥手)收到全部内容后断开与服务器之间的TCP连接     

  网站是如何被访问到信息的

二、详细解释

2.1域名解析过程

2.1.1域名解析总述

(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.

(2) 如果没有,就向上级域名服务器进行查找,依次类推

(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址

(4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程

2.1.2具体描述

1.. 主机先向本地域名服务器进行递归查询

2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询

3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址

4. 本地域名服务器顶级域名服务器进行查询

5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址

6. 本地域名服务器权限服务器进行查询

7. 权限服务器告诉本地域名服务器所查询的主机的IP地址

8. 本地域名服务器最后把查询结果告诉主机

网站是如何被访问到信息的

2.1.3拓展

上文我们提出了两个概念:递归查询和迭代查询

1.递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机

2.迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

 

 

2.2建立TCP连接

1.该TCP报文中SYN标志位设为1,表示连接请求;

2.该TCP报文通过IP(DNS)-->MAC(ARP)-->网关-->目的主机;

3.目的主机收到数据帧,通过IP-->TCP,TCP协议单元回应请求应答报文;

4.该报文中SYN和ACK标志设为1,表示连接请求应答;

5.该TCP报文通过IP(DNS)-->MAC(ARP)-->网关-->我的主机;

6.我的主机收到数据帧,通过IP-->TCP,TCP协议单元回应请求确认报文;

7.该TCP报文通过IP(DNS)-->MAC(ARP)-->网关-->目的主机;

8.目的主机收到数据帧,通过IP-->TCP,连接建立完成。

网站是如何被访问到信息的

2.3发送与收取数据(浏览器与目的主机开始HTTP访问过程)

  1. 浏览器向域名发出GET方法报文(HTTP请求)
  2. 该GET方法报文通过TCP->IP(DNS)->MAC(ARP)->网关->目的主机;
  3. 目的主机收到数据帧,通过IP->TCP->HTTP,HTTP协议单元会回应HTTP协议格式封装好的HTML形式数据(HTTP响应);[ 从请求信息中获得客户机想访问的主机名。从请求信息中获取客户机想要访问的web应用(web应用程序指提供浏览器访问的程序,简称web应用)。从请求信息中获取客户机要访问的web资源。(web资源,即各种文件,图片,视频,文本等)读取相应的主机下的web应用,web资源。用读取到的web资源数据,创建一个HTTP响应。]
  4. 该HTML数据通过TCP->IP(DNS)->MAC(ARP)->网关->我的主机;
  5. 我的主机收到数据帧,通过IP->TCP->HTTP->浏览器,浏览器以网页形式显示HTML内容。

 

 

2.4与目的主机断开TCP连接(四次挥手)

当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

TCP连接释放过程:

  1. 浏览器向目的主机发出TCP连接结束请求报文,此时进入FIN WAIT状态;
  2. 该报文FIN标志位设为1,表示结束请求;
  3. TCP结束请求报文通过IP(DNS)->MAC(ARP)->网关->目的主机;
  4. 目的主机收到数据帧,通过IP->TCP,TCP协议单元回应结束应答报文;
  5. 当前只是进行回应,因为目的主机可能还有数据要传,并不急着断开连接;
  6. 该报文中ACK标志位设为1,表示收到结束请求;
  7. 目的数据发送完所有数据后,向我的主机发出TCP连接结束请求报文;
  8. 该报文FIN标志位设为1,表示结束请求;
  9. TCP结束请求报文通过IP(DNS)->MAC(ARP)->网关->我的主机;
  10. 我的主机收到数据帧,通过IP->TCP,TCP协议单元回应结束应答报文,此时进入TIME WAIT状态,因为不相信网络是可靠的,如果目的主机没收到还可以重发;
  11. 该报文中的FIN标志位均设为1,表示结束应答;
  12. 该TCP回应报文通过IP(DNS)->MAC(ARP)->网关->目的主机;
  13. 目的主机关闭连接
  14. TIME WAIT等待结束后,没有收到回复,说明目的正常关闭了,我的主机也关闭连接。

网站是如何被访问到信息的

 

 

 

参考资料:

https://cloud.tencent.com/developer/news/109099

https://blog.****.net/u012862311/article/details/78753232

https://www.jianshu.com/p/401f34691dcc

https://blog.****.net/m_buddy/article/details/77800998