image.png

http1.0 和 http 2.0的区别)

浏览器的基本优化, 影响浏览器的主要因素有两个 带宽延迟

  • 带宽

网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,比如说你家的电信网络是100兆比特,意思是,一秒内最大的传输速率是100兆比特

  • 延迟
  • 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。
  • DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。
  • 建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

    什么是长连接? https://www.jianshu.com/p/3fc3646fad80

    长连接是针对 TCP 而言的, 比如我输入一个网页的URL, 这时候可能会有多个HTTP 请求, 因为 HTTP 请求是无状态的, 每次请求都会进行三次握手, 非常的浪费时间, 所以为了让 多个HTTP 复用同一个 TCP , 就出现了长连接
    长连接有个过期时间, 在 Nginx 中设置

    长轮询和短轮询

    image.png

    DNS 的解析过程

  1. 在浏览器缓存中寻找有无对应的ip
  2. 在本地host 文件查找有无对应的ip, 比如本地开发的时候, 在host文件映射 local-host.com - 127.0.0.1
  • 本地DNS服务器向根域名服务器发送请求,根域名服务器返回负责.com的顶级域名服务器的IP地址的列表。
  • 本地DNS服务器再向其中一个负责.com的顶级域名服务器发送一个请求,返回负责.baidu的权威域名服务器的IP地址列表。
  • 本地DNS服务器再向其中一个权威域名服务器发送一个请求,返回www.baidu.com所对应的IP地址

什么是 CSRF 以及 如何防范(验证 origin 或者 指定 referer)

image.png

SQL 注入

image.png


HTTPS 的工作流程

image.png

image.png

image.png
image.png

什么是子网

image.png

MAC 和 IP 地址的区别是什么)

mac是设备到设备 ip是网络到网络

有了IP地址,为什么还要使用Mac地址

image.png
image.png
image.png

2、衡量计算机网络的性能的指标

这些内容主要是为了学习后面具体的协议,以及分析这些协议的报文时,需要掌握的基本概念。

2.1 速率

速率就是数据传输(数据是指0和1)的速率,比如你用迅雷下载,1兆每秒,来衡量目前数据传输的快慢。它是计算机网络中最重要的一个性能指标。

2.2 带宽

在计算机网络中,网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,比如说你家的电信网络是100兆比特,意思是,一秒内最大的传输速率是100兆比特。

2.3 吞吐量

吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。


以上三点,我们举个案例

  • 一条路每秒最多能过100辆车(宽带就相当于100辆/秒)。
  • 而并不是每秒都会有100辆车过,假如第一秒有0辆,第二秒有10辆…,(但是最多不能超过100辆)。
  • 所以有第1秒0辆/秒,第2秒10辆/秒,第3秒30辆/秒,这不能说带宽多少吧,于是就用吞吐量表示具体时间通过的量有多少(也有可能等于带宽的量)。
  • 由此可知带宽是说的是最大值速率,吞吐量说的是某时刻速率。但吞吐量不能超过最大速率。

2.4 时延 参考掘金文章 https://juejin.cn/post/6844904079974465544


(1)发送时延
就是说我跟你说话,从我开始说,到说话结束这段时间,就是发送时延。
(2)传播时延
如gif图所示,信道上第一个比特开始,到最后一个比特达到主机接口需要的时间就是传播时延。
(3)排队时延

  • 分组在经过网络传输时,要经过很多的路由器。
  • 但分组在进入路由器后要先在输入队列中排队等待处理。
  • 在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。
  • 排队时延的长短往往却决于网络当时的通信量,当网络的通信量很大时会发生排队溢出,是分组丢失

(4)处理时延
路由器或主机在收到数据包时,要花费一定时间进行处理,例如分析数据包的首部、进行首部差错检验,查找路由表为数据包选定准发接口,这就产生了处理时延。
(5)往返时间(RTT)
在计算机网络中,往返时间也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认(接受方收到数据后便立即发送确认)总共经历的时间
(6)时延带宽积
是指传播时延乘以带宽

三次握手)
七层模型
如下图所示,1,2,3层主要是是物理链路组成的,比如光纤,路由器,集线器,主要负责的是数据通信。5,6,7层是软件控制的,比如http协议,是一种软件层面控制的协议,主要负责处理传输来的数据。

4、物理层 参考掘金文章 https://juejin.cn/post/6844904079974465544

数据链路层

image.png

  • 网络层是个大Boss, 负责给数据链路层这个小秘书下达任务,让小秘把5份文件给B公司,小秘呢,就找送快递物理层去做这个事
  • 但物理层是个傻子,他只知道拿起文件就飞奔到B公司,中间丢没丢东西也不清楚,所以数据链路层这个小秘书必须心里有底,一共送了5个文件,并且写到了快递外层。B公司小秘在拿到傻子送到的文件时,就要看看到底有没有文件丢了,如果丢了就要让傻子回去重新拿丢到的文件。
  • 从这个故事中,我们可以总结下数据链路层主要功能

    数据链路层的主要功能

    (1) 封装成帧 数据链路层并不是无脑转发boss的信息,她要把文件编号封装一下。封装的网络数据包,在链路层就叫数据帧。
    (2)透明传输
    透明传输是指不管boss下达的任何信息,比如文件里有裁掉这个秘书的信息,秘书都要原原本本的传输。帧的数据部分可能有跟帧首部完全一样的字符,这时候就要采取一定的措施,让接受方不要被被误导,能让接收方知道哪些是帧的首部哪些是帧的数据。这个问题有没有类似js的转义字符的问题,比如字符串
    到底是指div标签呢,还是div字符串呢?
    (3)差错控制

差错控制是在文件送到B公司小秘书手里的时候,快递包上写着5个文件,秘书一看只有3个文件,就会让傻子重新发送有没有送到的文件。差错控制的方法有CRC循环冗余码,这个就不细讲了,我自己也不甚了解,只知道链路层的帧,会有一个FCS位留给这个码,用来判断一个帧是否出错。
image.png

6.2 以太网的特点

  • 无连接。发送方和接收方不建立连接。
  • 不可靠。接收方不向发送方进行确认,差错帧直接丢弃。
  • image.png

    设备到设备之间的通信(通过Mac地址)

网络层

网络层主要任务是将分组(分组的概念是大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统把数据分割成小块,然后逐块地发动,这种小块就称作分组)从一台主机移动到另一台主机,从而提供了主机到主机的通信服务和各种形式的进程到进程的通信。
image.png

7.2.2 数据报

数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身。说白了,就是带地址的数据,比如你的写了一句微信”你好”,这串文字本上加上源地址,目的地址,就是数据报。
image.png
image.png
image.png
image.png
image.png

三次握手

image.png

image.png
三者有什么联系,这里我举个栗子,虽然不能算准确,但足够形象。
IP 是以主机为单位,通过 IP 能找到你所在的城市。
TCP 是以主机的端口为单位,通过 TCP 能找到你所在城市的你居住的小区。
HTTP 呢,它是以用户进程为单位,通过 HTTP 能找到你所在城市所在小区的房间号。