zoukankan      html  css  js  c++  java
  • 【面试题】在浏览器中输入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

  • 相关阅读:
    Session的使用与Session的生命周期
    Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用
    十九、详述 IntelliJ IDEA 之 添加 jar 包
    十八、IntelliJ IDEA 常用快捷键 之 Windows 版
    十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
    十六、详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法
    十五、详述 IntelliJ IDEA 插件的安装及使用方法
    十四、详述 IntelliJ IDEA 提交代码前的 Code Analysis 机制
    十三、IntelliJ IDEA 中的版本控制介绍(下)
    十二、IntelliJ IDEA 中的版本控制介绍(中)
  • 原文地址:https://www.cnblogs.com/KeleLLXin/p/14020283.html
Copyright © 2011-2022 走看看