尽管通过分析获得了域名,但是理论上的浏览器已经知道目标服务器是谁。但是实际上,域名不是目标服务器的真实地址。互联网上的每台计算机都由世界上唯一的IP地址标识,但是IP地址不容易记住,因此设计了域名。
然后,您需要解析域名以获得目标服务器的IP地址。否则,如果您拥有一个容易记住的域名,您如何知道请求的发送地址?通过域名转换获得的IP地址是DNS协议的作用,如下所示:
有关DNS的详细内容,您可以查看有关超级详细的DNS协议解析的文章,例如什么是域名,域名服务器,递归查询和迭代查询等。它的编写已足够详细。 ,并且此处仅列出DNS解析。过程。
1)首先搜索浏览器的DNS缓存,并在缓存中维护域名和IP地址的对应表;
2)如果没有命中,请继续搜索操作系统的DNS缓存;
3)如果仍然没有命中,则操作系统会将域名发送到本地域名服务器,本地域名服务器将查询其自己的DNS缓存。如果搜索成功,将返回结果(注意:主机和本地域名服务器之间的查询方法是递归查询);
4)如果本地域名服务器的DNS缓存未命中,则本地域名服务器将查询上级域名服务器,并通过以下方式执行迭代查询(请注意:本地域名服务器和其他域名服务器是迭代查询,以防止对根域名服务器施加过多压力):
4)本地域名服务器将获取的IP地址返回给操作系统,同时自行缓存IP地址
5)操作系统将IP地址返回给浏览器,并且还缓存IP地址本身
6)至此,浏览器已获取与域名对应的IP地址并缓存了该IP地址
对下图的直观理解:

应该注意,DNS使用UDP协议,这意味着上述各种请求的转发都基于UDP的无连接协议。
4.建立TCP连接
获得目标服务器的IP地址后,浏览器知道我要将请求发送给谁。此时,我可以开始发送封装的HTTP请求消息。然后,由于需要发送请求,因此必须要求TCP通过三路握手在浏览器和服务器之间建立可靠的连接,以确保双方都具有可靠的接收和发送功能。

这是另一个经典的面试问题:TCP三向握手和四次挥手。有关详细信息,请参阅这篇有关TCP三向握手和四次握手的文章。
三向握手过程如下:

5.浏览器发送请求
TCP三向握手完成后,在浏览器和目标服务器之间建立了可靠的虚拟通道,因此浏览器可以发送自己的HTTP请求。
应该注意的是,当HTTP请求消息或响应消息在TCP连接通道上传输时,由于这些消息相对较大,为了更轻松,准确和可靠地传输,TCP将对HTTP消息进行排序,将其分为几个段,添加TCP标头以分别传输。接收到这些段后,接收者会根据序列号以原始顺序重新组织HTTP消息。
6.负责传输的IP协议
实际上,当TCP通过三向握手建立连接,通过四向握手断开连接并在连接建立过程中发送和接收数据(TCP段)时,通过IP进行传送协议。该协议在这些阶段将IP标头添加到数据中,并将其封装到IP数据报中进行传输。
源IP地址和目标IP地址存储在IP数据报的标头中。所谓的源IP地址就是发送者的IP地址;目标IP地址是通过DNS域名解析获得的目标服务器的IP地址。
实际上,IP协议所在的网络层规定:数据报必须经过哪个路径(传输路径)才能到达另一方的计算机并被传输到另一方。这句话的详细说明将立即出现,并继续阅读。
7.使用ARP协议与MAC地址进行通信
有关IP协议,IP地址,MAC地址等的详细信息,请参阅本文。
如上所述,IP协议的作用是将各种数据包发送到另一方,并确保将它们实际发送到另一方,需要满足各种条件。 IP地址和MAC地址是两个必需的。
MAC地址还用于唯一标识连接到Internet的设备。一些朋友可能不禁会问,由于网络层已经具有唯一标识的IP地址,为什么我需要MAC地址?
看下面的图片。在网络上,很少有两个通信方位于同一局域网中。通常,需要多台计算机和网络设备才能相互连接。传输时,必须使用下一个站点的传输设备的MAC地址来搜索下一个传输目标。


让我们这样说,让我们以一个直观的例子为例:我们以数据链路层为乘客,乘坐从苏州到南京的高铁,然后从南京到北京,再在北京到西藏,则网络层等于每个站点的员工。每次数据链路层传输时,网络层都会购买一个标有下一个MAC地址的票证。因此,即使乘客(数据链路层)不知道他们的最终目的地也没关系,工作人员(网络层)也会为您提供指导。
实际上,在网络层进行指导的过程称为路由控制,它涉及诸如OSPF等路由协议。
然后,将IP地址转换为MAC地址以便在数据链路层准确传输数据的协议就是ARP协议。
ARP使用两种类型的数据包(ARP请求和ARP响应)来确定MAC地址。每个主机都有一个ARP缓存,其中包含从局域网中每个主机和路由器的IP地址到MAC地址的映射表。
如下图所示,假设主机A在同一链路上向主机B发送IP数据报。主机A和主机B的IP地址是已知的,它们彼此之间不知道MAC地址:
1)首先,为了获取主机B的MAC地址,主机A将首先检查其ARP缓存中是否存在主机B的任何记录;
2)如果在主机A的ARP缓存中主机B的IP地址到MAC地址之间没有映射,则主机A将通过广播发送ARP请求数据包(该数据包携带自己的IP地址和MAC地址,以及目标主机的IP地址),表示您要获取主机B的MAC地址;
2)由于广播请求可以被同一链接上的所有主机或路由器接收,因此,如果该链接上的主机或路由的IP地址与ARP请求中包含的目标主机的IP地址相同如果地址相同,则该节点会将其MAC地址填充到ARP响应数据包中,并将其返回给主机A;

当然,ARP响应数据包以单播形式发送。毕竟,ARP请求数据包已经包含主机A的IP地址,因此主机B确切知道应将此响应数据包发送给谁。
大多数网络协议在设计时都带有严格的约束。不需要的交互被切断,可以合并的信息被合并,可以使用单播而不进行广播来增加带宽。使网络更快。
3)主机A收到主机B的ARP响应数据包后,将主机B的IP地址到MAC地址的映射写入其ARP缓存。
当然,缓存具有一定的期限。在这段时间之后,缓存的内容将被清空。即使MAC地址和IP地址之间的映射关系发生了变化,这也使得可以正确地将数据包发送到目标地址。
8.服务器响应该请求
浏览器的HTTP请求消息通过TCP三向握手建立的连接通道分为几个消息段,并发送到服务器。接收到这些消息段后,服务器将根据序列号以原始顺序重新组织HTTP请求消息。文本。然后,它处理并返回HTTP响应。当然,HTTP响应消息也要经过与HTTP请求消息相同的过程。
请看下面的图片进行审查(图片来源“ Illustrated HTTP”):
9.断开TCP连接
浏览器和服务器不再需要发送数据后,他们挥手四次以断开TCP连接。有关详细信息,请参阅有关TCP三向握手和四次挥手的文章。完整的答案在这里。
1 0.浏览器显示界面
浏览器接收服务器返回的数据包,并根据浏览器的呈现机制呈现相应的数据
摘要
屏蔽基本细节,并概括概括以上过程:
应用层:
运输层:
网络层:
服务器在链接层接收数据,然后按顺序将其发送到上层,直到应用程序层收到浏览器发送的HTTP请求消息,然后处理该请求并返回HTTP响应消息,浏览器收到响应该消息后,将解析呈现接口。最后,TCP断开连接。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-367669-1.html
还是三千亿