【面试题】在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
整个流程如下:
域名解析
为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。
发起TCP的三次握手
建立TCP连接后发起HTTP请求
服务器响应HTTP请求
浏览器解析html代码,并请求HTML代码中的资源(如js、css、图片等)
断开TCP连接
浏览器对页面进行渲染呈现给用户
域名解析协议
比如要查询www.baidu.com的IP地址:
1、浏览器搜索自己的DNS缓存(维护一张域名与IP地址的对应表);
2、若没有,则搜索操作系统中的DNS缓存(维护一张域名与IP地址的对应表);
3、若没有,则搜索操作系统的hosts文件(Windows环境下,维护一张域名与IP地址的对应表);
4、若没有,则操作系统将域名发送至本地域名服务器---(递归查询方式),本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则,(以下是迭代查询方式)
4.1. 本地域名服务器向根域名服务器(其虽然没有每个域名的具体信息,但存储了负责每个域,如com、net、org等解析的顶级域名服务器的地址)发起请求,此处,根域名服务器返回com域的顶级域名服务器的地址;
4.2. 本地域名服务器向com域的顶级域名服务器发起请求,返回baidu.com权限域名服务器(权限域名服务器,用来保存该区中的所有主机域名到IP地址的映射)地址;
4.3. 本地域名服务器向baidu.com权限域名服务器发起请求,得到www.baidu.com的IP地址;
5、本地域名服务器将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来;
6、操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
7、至此,浏览器已经得到了域名对应的IP地址;
ARP(地址解析协议)
ARP解决的是同一个局域网内,主机或路由器的IP地址和MAC地址的映射问题。如果源主机和目的主机在同一个局域网内(目标IP和本机IP分别与子网掩码相与的结果相同,那么它们在一个子网),就可以用ARP找到目的主机的MAC地址;如果不在一个局域网内,用ARP协议找到本网络内的一个路由器的MAC地址,剩下的工作有这个路由器来完成。
ARP协议的具体内容:
(1)每个主机都会有ARP高速缓存,存储本局域网内IP地址和MAC地址之间的对应关系。
(2)当源主机要发送数据时,首先检查ARP高速缓存中是否有对应IP地址目的主机的MAC地址,如果有,则直接发送数据,如果没有,就像本网段的所有主机发送ARP请求分组,该数据包包括的内容有:(源主机IP地址,源主机MAC地址,目的主机的IP地址)。
(3)当本网络的所有主机收到该ARP请求分组时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包;如果是,则首先从数据包中取出源主机的IP地址和MAC地址写入到ARP高速缓存中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
(4)源主机收到ARP响应分组后,将目的主机的IP和MAC地址写入ARP高速缓存中,并利用此信息发送数据。如果源主机一直没有收到ARP响应分组,表示ARP查询失败。
路由选择协议
网络层主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过哪个路径到达服务器,其中用到路由选择协议。
有两大类路由选择协议
1、内部网关协议
内部网关协议IGP(Internet Gateway Protocol)即在一个自治系统内部使用的路由选择协议,RIP和OSRF协议和IS-IS协议,IGRP(内部网关路由协议)、EIGRP(增强型内部网关路由协议)。
(1)RIP(应用层协议,基于UDP)
RIP是一种基于距离向量的路由选择协议。RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。这里的“距离”实际上指的是“最短距离”。只能包含15个路由器。RIP认为一个好的路由就是它通过的路由器的数量少,即“距离短”。RIP允许一条路径最多只能包含15个路由器。“距离”的最大值为16是即相当于不可达。RIP选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
(2)OSPF(网络层协议)
“最短路径优先”是因为使用了Dijkstra提出的最短路径算法。使用洪范法向本自治系统中所有路由器发送信息。发送的信息就是与本路由器相邻的所有路由器的链路状态(“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”),但这只是路由器所知道的部分信息。只有当链路状态发生变化时,路由器才用洪范法向所有路由器发送此信息。
2、外部网关协议
(1)BGP协议(应用层协议,基于TCP的)
BGP是不同自治系统的路由器之间交换路由信息的协议。边界网关协议BGP只能是力求寻找一条能过到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP发言人:每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”/一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
BGP交换路由信息:一个BGP发言人与其他自治系统中的BGP发言人要交换信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。使用TCP连接能提供可靠的服务也简化了路由选择协议。使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的临站或对等站。BGP所交换的路由信息就是到达某个网络所要经过的一系列AS。
路由分组转发算法
(1)首先从IP数据报首部提取目的主机的IP地址D,得出其所在的网络N。
(2)若N就是与此路由器直接相连的某个网络,则进行直接交付,直接把数据报交付给目的主机。否则就执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传给路由表中所指明的下一跳路由器。否则执行(4)。
(4)若路由表中有到达网络N的路由,则把数据报传给路由表中所指明的下一跳路由器。否则执行(5)。
(5)若路由表中有一个默认路由,则把数据报传给默认路由所指明的默认路由器。否则执行(6)。
(6)报告转发分组出错。
路由器与交换机的区别是什么?
1)交换机工作在数据链路层;路由器工作在网络层;
2)交换机转发数据帧;路由器转发IP组;
3)交换机隔离冲突域,不隔离广播域;路由器隔离冲突域,隔离广播域;
转自:https://www.cnblogs.com/HuiH/archive/2020/04/02/12622328.html
【面试题】在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)的更多相关文章
- 在浏览器中输入URL后执行的全部过程的个人总结
这个问题经常可以看到,今天我好好总结了下,是从网络模型的角度来分析问题的,主要涉及应用层:DNS,HTTP,传输层:TCP,网络层:IP和路由选择协议:RIP,OSPF(内部网关协议),BGP(外部网 ...
- 【转】浏览器中输入url后发生了什么
原文地址:http://www.jianshu.com/p/c1dfc6caa520 在学习前端的过程中经常看到这样一个问题:当你在浏览器中输入url后发生了什么?下面是个人学习过程中的总结,供个人复 ...
- 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...
- 在浏览器中输入URL后,执行的全部过程。(一次完整的http请求过程)
整个流程如下: 域名解析 为了将消息从你的PC上传到服务器 上.需要用到1P协议.ARP协议和0SPF协议 发起TCP的3次握手 建立TCP连接后发起http请求 服务器响应htp请求 浏览器解析ht ...
- 在浏览器中输入URL并回车后都发生了什么?
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- 在浏览器中输入url回车之后会发生什么
在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...
- 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3
备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...
- 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1
[ASP.NET Core]EF Core - “影子属性” 有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...
- 在浏览器中输入URL按下回车键后发生了什么
在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...
随机推荐
- martini-能量最小化参数(mdp文件)
1 ; 2 ; STANDARD MD INPUT OPTIONS FOR MARTINI 2.x 3 ; Updated 02 feb 2013 by DdJ 4 ; 5 ; for use wit ...
- Linux杂谈: 实现一种简单实用的线程池(C语言)
基本功能 1. 实现一个线程的队列,队列中的线程启动后不再释放: 2. 没有任务执行时,线程处于pending状态,等待唤醒,不占cpu: 3. 当有任务需要执行时,从线程队列中取出一个线程执行任务: ...
- 栈(Stack)和队列(Queue)是两种操作受限的线性表。
(线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足"一对一"的逻辑关系. "一对一"的逻辑关系指的 ...
- ceph各个版本之间参数变化分析
前言 本篇主要是分析ceph的版本之间参数的变化,参数变化意味着功能的变化,通过参数来分析增加,删除,修改了哪些功能,以及版本之间的变化,本篇主要通过导出参数,然后通过脚本去比对不同的版本的参数变化 ...
- matlab 向量操作作业
写出下列语句的计算结果及作用 clear 清除所有变量 clc 清屏 A = [2 5 7 1 3 4]; 创建行向量并赋值 odds = 1:2:length(A); 冒号操 ...
- [web安全原理分析]-SSRF漏洞入门
SSRF漏洞 SSRF漏洞 SSRF意为服务端请求伪造(Server-Side Request Forge).攻击者利用SSRF漏洞通过服务器发起伪造请求,就这样可以访问内网的数据,进行内网信息探测或 ...
- Docker这么火爆。章节一:带你详尽了解Docker容器的介绍及使用
前言 很多小伙伴可能在工作中都听说过Docker,但是实际工作中却没有使用过,听得多了,也对Docker内心有一种很深切的想了解,但是因为各种原因而不知道如何去了解而发愁,不要急,这篇文章带你认识Do ...
- 如何用FL Studio做电音
电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...
- CorelDRAW多个文件如何批量导出JPG
好多同学对于CorelDRAW 2018批量导出图片格式的操作不太了解.这种情况比较常见,比如设计了一本画册,在同一个文档中页面比较多,如果一页一页导出那将是一项巨大的工程,这时候我们就会想到CDR的 ...
- 【性能测试】【locust】场景性能测试步骤
场景设计 实现登陆基本功能,输出相应结果,脚本通 多用户实现随机登陆 添加初始化方法on_start: 每个用户只运行一次 添加检查点: catch_responses = True 脚本设计 # 导 ...