经典面试题:浏览器输入url,发生了哪些事情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、网络基础

1.IP地址补充

IP地址,由网络号+主机号构成
网络号:表示网段(一个局域网,可能是只有一个网段,也可能有多个网段)

大型网络,是由多个小型网络构成的
公网,就是由多个局域网构成
网络号,就是标识某个网络中某个子网的

主机号: 标识主机(某个网络号的网络中,唯一的一台主机)
Ip地址划分: A~E五类
在这里插入图片描述
A~E类的IP地址划分中,网络号和主机号是说的范围

特殊IP:
主机地址全0,代表整个局域网
全1,代表广播数据报(把一个数据发送到全1的ip,就是广播数据:发送到所有相连主机)
本机:127.0.0.1: 本机进程发送网络数据到本机另一个进程,系统为了进程,是不走网络传输的(不经过网卡,直接发到端口)
可以配置走网络

按A~E类划分IP地址,申请的网络,如果组织的主机数量不够(主机号数量),就会造成IP地址的浪费
解决方案:
使用子网掩码:(了解,下面提到)

2.认识MAC地址

网络通信,本质是网络硬件设备来传输数据,硬件要发送数据到下一个硬件,只认识硬件的物理地址(MAC)
主机有一个或多个网卡(大多情况,只使用一个网卡)

比如使用wifi,就是用无线网卡,来接收发送数据
使用网线,就是用有线网卡,来接收发送数据

一个网卡,具有全球唯一的MAC地址(网卡出场就设置好了)

3.MAC地址 vs IP地址

在这里插入图片描述
ip地址: 标识整个路途的起点(主机B)和终点(主机C)

ip地址是给人用的逻辑地址

MAC地址: 标识每一跳的起点和终点

给网络硬件设备用的物理地址
在这里插入图片描述

4.网络设备及其相关技术

端口: 分为物理端口和逻辑端口

物理端口: 硬件设备如集线器,交换机,路由器等拥有的物理端口
逻辑端口: 进程绑定的端口,是属于操作系统虚拟的一个0-65535范围的数字

集线器: 发送数据,是简单的复制并转发其他所有端口

主机:网络分层从上到下封装
在这里插入图片描述
路由器:
路由器具有一个WAN口(连接公网,具有公网ip)
搭建了一个局域网,但具有多个不同网段(这些不同网段的主机,处于一个局域网,但不同网段)

多个不同网段由多个LAN口来划分

路由器可以找到自己局域网内部任意的主机,并记录ip及mac的映射关系(路由器arp缓存表)

路由器的功能,整体看:

  1. 划分子网(一个局域网,多个不同网段)
  2. arp缓存表:记录路由器所在的局域网所有主机的ip和mac(能找到局域网内所有主机)
  3. 具有wan口,绑定公网ip;如果目的主机不在局域网内,需要使用napt协议,将源ip/port,从局域网内主机的,转换为路由器公网的ip/port
  4. 路由功能:如果目的ip是公网主机,能通过路由功能,计算出哪个方向更近

5.冲突域

同一时间,多台主机同时发送数据,如果产生冲突,这个范围就是冲突域

集线器: 所有端口构成一个冲突域
交换机: 一个端口构成一个冲突域

6.广播域

发送广播数据报(mac地址全ff)能到达的范围

集线器: 所有端口处于一个广播域
交换机: 所有端口处于一个广播域
路由器: LAN口(不同网段),隔离广播域

二、网络数据传输流程

1.局域网:集线器相连(了解)

  1. 源主机: 从上到下封装(在本机arp缓存表,通过目的ip找对应的mac地址,如果找不到,还需要arp寻址(广播喊话))
  2. 集线器转发数据报到其他所有端口
  3. 目的主机: 从下到上分用

在这里插入图片描述

2.局域网:交换机相连(了解)

  1. 源主机: 从上到下封装
  2. 交换机转发数据报到对应的一个端口(基于下一条设备的mac,通过交换机中mac地址转换表,查找对应的端口)
  3. 目的主机: 从下到上分用

在这里插入图片描述

3.交换机+路由器(一个局域网,跨网段)

简要概括:
在这里插入图片描述
在这里插入图片描述

4.广域网数据传输流程

在这里插入图片描述
详细请看下边经典面试题(浏览器输入url,发生了哪些事情)

三、浏览器输入url,发生了哪些事情(重点)

  1. 通过dns协议,查找www.baidu.com这个域名,对应的ip地址

DNS,即Domain Name System,域名系统
DNS是一整套从域名映射到IP的系统
TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址
网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找对应的IP地址:
(1) 域名解析的过程,可以简单地理解为:发送端主机作为域名系统树形结构的一个子结点,通过域名信息,从下到上查找对应IP地址的过程。如果到根结点(根域名服务器)还找不到,即找不到该主机
(2) 域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDP或TCP协议来实现
简单地说:DNS协议就是通过域名找ip

  1. 源主机:

(1)从上到下封装:

  • 应用层:HTTP协议首部
  • 传输层:TCP协议首部(包含源端口、目的端口)
  • 网络层:IP协议首部(包含源IP、目的IP)
  • 数据链路层:以太网帧(包含源MAC、目的MAC)

(2)之后要查看下一跳设备是哪个,先通过子网掩码计算,目的主机和源主机,是否是同一个网段

通过某个IP与本机的子网掩码位与运算,可以得到对应IP的网络号,也就是网段

子网掩码
(1)格式和IP地址一样,32位二进制数,其中左边为网络位,用二进制“1”表示,1的数目等于网络位的长度;右边为主机数,用二进制数字“0”表示,0的数目等于主机位的长度
(2)如一个B类IP地址:191.100.0.0,按A~E类分类来说,网络号二进制数为16位网络号+16位主机号,假设使用子网掩码255.255.128.0来划分子网,把这个子网掩码以二进制数来表示,然后数里边有几个1,加起来(这里就是17)
(3)意味着划分子网后,高17位都是网络位/网络号,也就是将原来的16位主机号,划分为1位子网号+15位主机号
在这里插入图片描述
(4)把主机号,前x位,定义为子网号(x有多少,就可以搭建多少子网,这里x为1)所以,一般,把网络号+子网号整个叫网络号(标识在大型网络中,唯一的一个小型网络)

作用:
(1)划分子网(了解)
(2)通过一个IP地址,及子网掩码,可以计算出,这个ip的主机,是在哪个网络(网络号),是哪个主机(主机号)
计算方式:
将IP地址和子网掩码进行“按位与”操作,得到的结果就是网络号
将子网掩码二进制按位取反,再与IP地址位与运算,得到的就是主机号

  • 同网段:下一跳设备就是目的主机
  • 不同网段:下一跳设备就是网关路由器
  • 设置目的mac为下一跳设备(网关路由器)的mac;源mac:源主机mac

如何设置mac:基于本机arp缓存表,通过网关ip找mac

主机&路由器:=arp缓存表(记录ip地址和mac地址的映射)
首先:ARP是一个介于数据链路层和网络层之间的协议;ARP建立了IP地址的映射关系
在数据链路层,寻找下一跳设备MAC地址的过程,称为ARP寻址:
(1)主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址
(2)根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送数据报
(3)如果找不到,则发送ARP广播数据报:目的MAC为广播地址,询问下一跳设备的MAC地址
这个过程类似于QQ群喊话:张三(下一跳设备IP地址),我要给你发快递(发送数据报),请告诉我你的收货地址(MAC地址)

  • 源主机和目的主机,在同一个网段,也可以使用到源主机中的arp缓存表(通过目的主机的ip找目的mac)
  • 不在同一个网段,使用源主机中的arp缓存表(通过网关的ip找网关的mac)

(3)交换机接收到数据报:转发到目的mac对应的端口(路由器相连的端口)

基于交换机的mac地址转换表:通过mac找端口
交换机:MAC地址转换表+转发对应端口
交换机工作在数据链路层,交换机内部会记录并维护一张MAC地址转换表:
(1)MAC地址转换表主要记录MAC地址与端口之间的映射。(端口指交换机后边的物理端口)
(2)主机连接到交换机,及交换机发送数据的时候,交换机可以学习并记录该主机MAC地址与端口信息
(3)交换机接收到数据报以后,在MAC地址转换表中,通过目的MAC查找到对应的端口,到目的主机为该端口连接的主机。只需要将数据报转发到对应端口上即可
(4)以上是使用MAC地址转换表,通过目的MAC能找到对应端口的情况;如果找不到,交换机设置数据报目的MAC为广播地址FF:FF:FF:FF:FF:FF,发送到其他所有端口,目的主机返回响应后,交换机再记录该主机MAC与端口的映射信息
在这里插入图片描述

  1. 路由器接收到数据报:

分用解析数据报:
(1)先从下到上分用:从物理层到网络层(路由器是工作在下三层)
(2)基于NAPT协议,将源ip和源port(局域网源主机的ip和进程的port),修改为路由器公网的ip和port

NAPT:把局域网主机ip+port转换为路由器公网ip+port(路由器中的技术)

(3)基于路由功能,根据目的ip,计算出下一跳设备是哪个设备,到目的主机更近,获得正确方向的下一个设备IP

路由器的路由功能: 规划路线(路由器中存在一个路由表,记录了ip和坐标点,用于计算目的ip往哪个方向发,路径更近)

(4)ARP寻址:找到下一个设备MAC
(5)从上到下封装:修改源ip和port修改为路由器公网的ip和port;修改源mac为路由器的mac,目的mac为下一跳设备的mac(路由功能找到下一条设备的ip,再通过路由器arp缓存表,查询ip对应的mac)

  1. 路途中经过的设备:

分用解析数据报,和上面路由器接收到数据报除了(2),其他都类似

  1. 目的主机接收到数据报:

(1)从下到上分用:
分用到数据链路层:目的mac和我一样,接收
分用到网络层,目的ip和我的一致,就再次分用
分用到传输层,根据目的port把数据报交给对应端口的进程(如tomcat)来处理
分用到应用层:把数据交给应用层,由应用程序根据应用层协议解析(tomcat程序就根据应用层http协议来进行解析)
(2)tomcat处理请求
(3)tomcat返回响应:从上到下封装,再发送数据回起点

先要发送回路由器
路由器还需要查找局域网内的主机,再把数据发送给对应主机

  1. 返回响应数据报和请求流程一样,只是源IP和目的IP更换,源端口和目的端口更换
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dhdhdhdhg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值