浏览器访问页面的具体过程

从浏览器中输入网址到加载出页面,中间具体经过了哪些过程?
端口号默认是80.
如果浏览器中输入的是url,则需要经过DNS域名解析过程得到对应服务器的IP地址,
有了IP地址+端口号,浏览器就会根据这个IP地址+端口号和服务器进行三次握手建立连接。
DNS域名解析过程:

正向代理和反向代理

正向代理-翻墙
用户A无法访问facebook,但是能访问服务器B,而服务器B可以访问facebook。于是用户A访问服务器B,通过服务器B去访问facebook,,服务器B收到请求后,去访问facebook,facebook把响应信息返回给服务器B,服务器B再把响应信息返回给A。这样,通过代理服务器B,就实现了翻墙。

反向代理
image.png

IP地址和MAC地址的区别

  1. 地址的不变性:IP地址是为互联网的每个网络和每台主机分配一个逻辑地址,用来屏蔽物理地址的差异,IP地址会根据网络的不同而有所不同,(主机移动到其他地方被分配的IP地址就会不同);而MAC地址则是由主机的网卡决定的,是固定的

明明用MAC地址就可以标识电脑,为什么还要发明IP地址? - 知乎 (zhihu.com)

对称加密和非对称加密

用在HTTPs上,对称加密是指
这里的k是什么,k是后续用于对称加密的k,要保证这个k不会在信道上被传输过。且具有客户端唯一性。
这里的2中的对称算法是指后续所采用的对称加密的算法,先行协商
image.png

http协议,connection选项的作用

http1.0默认的connection是close,除非双方都在header中加入connection:keep-alive,才会建立长连接
而在http1.1中则默认的connection是keep-alive,
在request header或response header中增加

请求首部和响应首部

HTTP首部都是用来做什么的 - 枫丶 - 博客园

  1. 对两边想要的资源或者传输的资源进行约束补充,方便传输端进行传输和接收端进行处理

cookie

  1. cookie是为了解决http无状态的问题,是客户端的缓存,用来缓存客户端与服务端建立的会话id等其他信息,在下次客户端发送请求时,会连带把cookie一起发送过去,这样服务端通过cookie可以知道客户端是老客户端,因此不用重复登录。
  2. cookie一般是在第一次建立连接,先由服务端生成,随后传到客户端,让客户端缓存。

    token

  3. 是为了解决Session id保存在服务端过多并且多台服务器间共享麻烦的问题,token由服务端生成,不过保存在客户端,服务端用解析token的时间,来换取session的存储空间,

  4. token是服务器加密的用户信息,服务器加密完后,发送给客户端,由客户端的cookie或者storge存储,而服务端不存储。每次客户端发送数据,都会附带这个token,服务端对这个token进行解密确认用户登录。

    session

  5. 服务端给连接的客户端建立的会话,session id保存在服务器内存中或数据库,方便用户下次连接时查询状态,

什么是数字签名

数字签名 及 数字证书 原理_哔哩哔哩_bilibili

  1. 数字签名:发送方用哈希加密算法和私钥对文件进行加密,加密后得到的值就是数字签名,保证在传输过程中该文件没有被修改,是由发布者发布的。
  2. 数字证书:就是CA证书,保证发布的数字签名是可信正确的。如何保证CA证书被伪造,则是通过CA机构自己的公钥CPA和私钥CSA,机构对数字证书进行哈希加密和CSA加密,接收方本地会保存写死CA机构的公钥CPA,利用本地的CPA去验证发布的数字证书是否被伪造。

    域名

    域名是不带www的,比如baidu.com,cctv.com,而一个网站的网址=www.+域名。

主域名和二级域名的划分:
比如baidu.com,就是主域名,特点是只有一个. 且.的左侧有内容
而下面的
www.baidu.com 百度首页
tieba.baidu.com 百度贴吧
二级域名的作用是扩展主域名的分类,要不然就要全部通过主域名来定位资源。
(相当于下面的三级域名,只不过是叫的人多了,因为顶级域名是固定的,因此对于购买人来说,只从下面的二级域名开始购买,二级域名相对于他们来说就是一级域名,也即主域名)

计网-面试 - 图3

URL的构成

计网-面试 - 图4

DNS的域名解析过程

https://juejin.cn/post/7065238621866950693
https://segmentfault.com/a/1190000023694985

  1. DNS是域名系统,是域名和IP地址相互映射,DNS协议运行在UDP协议上。域名解析的过程就是得到域名所对应的IP地址的过程
  2. 主机名到IP地址的映射方式:静态映射(本机设备配置主机到IP地址的映射,也即hosts);动态映射(在专门的DNS服务器上配置主机到IP地址的映射)
  3. 解析域名时,先静态域名解析,不成功则动态域名解析。对于动态域名解析,则采用迭代查询+递归查询的方式。本地DNS服务器->根域名服务器->顶级域名服务器->权限域名服务器。这里本机到本地域名服务器是递归查询(这样设置的好处是在本地域名服务器处,建议设置高速缓存,来缓存那些经常被访问的域名),本地域名服务器到其他域名服务器采用迭代查询(目的是降低根域名服务器的压力,否则根域名服务器会一直等待递归查询的结果返回,相当于树形结构的根节点)
  4. 根域名服务器是记录各个顶级域名所在的地址和IP;顶级域名服务器记录的是二级域名所在的地址和IP;权限域名服务器记录自家所有三级域名对应的IP(也即用户想要了解的域名所对应的IP),
  5. 为了提高查询效率,采用高速缓存机制,本地域名服务器和用户主机都设置高速缓存
  6. 客户端向DNS服务器查询时,数据量小,采用UDP快。而在进行区域传输(主域名服务器向辅助域名服务器传送变化的数数据)时,数据同步传送的数据量大,采用TCP保证准确率

计网-面试 - 图5

粘包

  1. 一个数据包包含了发送端发来的两个数据包的信息,

    GET请求中URL编码

  2. 对中文和存在歧义的字符进行编码,这里的歧义是指和Web服务端中的关键字保留字相同,比如=和&,在服务端解析时,=的ASCII码是3D,&的ASCII码是26,通过读取到这些字符,来划分key和value。但是如果key和value中本身带了这些关键字的话,会出现歧义,因此进行URL编码,把在key或者value中出现的关键字,前面加一个%,表示%后面的字节是普通的字节。

    IP地址的私网IP、公网IP、网络号、主机号

    IP地址为什要分类?就是a类,b类,c类。。。?

NAT

  1. 分为DNAT、SNAT、PAT。
  2. 是私网和公网地址的一种映射转换。其中PAT则是通过端口号+私网ip来区分每个位置

    ARP

  3. MAC地址和IP地址的一种映射关系,IP地址是保证信息能逐级转发到对应的位置,而MAC地址则是具体标明了设备,也就是在这个位置上的具体设备。

  4. 每台主机都有一个ARP高速缓存区,用来存储近期与其进行过数据交互的目的主机的IP和MAC地址的映射。
  5. ARP高速缓存区中没有目的IP地址对应MAC地址时,源主机会将源IP和源MAC和目的IP进行广播,与目的IP相同的主机会记下来这个数据包,并回传自己的MAC给源主机,开始进行数据传输。

    TCP传输数据中的丢包问题和乱序问题

    TCP为每个连接建立一个发送缓冲区,从建立连接的第一个字节的序列号为0,后面依次递增。
    在发送数据时,从发送缓冲区中取出一部分数据组成报文段。在发送报文段中附带序号和长度
    接收端在接收到报文段时,会回复接收到的序列号。然后发送端根据接收到的序列号的下一个序列开始从发送缓冲区中再取数据发送。接收端根据报文段中附带的长度和序列号重组报文。

ARQ协议

Jeffrey:浅谈ARQ协议

IP地址的划分

  1. A类地址中,网络号的数字0和127不能作为主机的IP地址的头,127用于回环,保留给内部回送函数,数字0则表示网络本身