2024-12-9 日报 Day11

2024-12-9 日报 Day11

Yuyang 前端小白🥬

今日的鸡汤

每次归程,都是为了更好出发;
每次停歇,都是为了积攒力量。

近况描述

挺更了将近三个礼拜,最近发生了很多事情,也是人生的一个低谷和迷茫期,但是我相信,这一切都会过去,我也要从中吸取教训、走出来变得更加强大。Just keep going on.

今日学习内容

1、《JavaScript数据结构与算法》 P89-92

今日笔记

链表存储有序的元素集合,其存放的是当前元素和下一个元素的引用。链表的好处是在添加和移除元素的时候不需要移动其他元素。其缺点是访问元素时需要从头开始迭代链表直到找到所需的元素。

  • 简单链表实现
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    function LinkedList(){
    let Node = function(element){
    this.element = element;
    this.next = null;
    };

    let length = 0;
    let head = null;

    this.append = function(element){
    let node = new Node(element),
    current;

    if(head === null){
    head = node;
    } else {
    current = head;

    while(current.next){
    current = current.next;
    }

    current.next = node;
    }

    length++;
    };
    this.insert = function(position, element){};
    this.removeAt = function(position){
    if(position > -1 && position < length){
    let current = head,
    previous,
    index = 0;

    if(position === 0){
    head = current.next;
    } else {
    while(index++ < position){
    previous = current;
    current = current.next;
    }

    previous.next = current.next;
    }

    length--;

    return current.element;
    } else {
    return null;
    }
    };
    this.remove = function(element){};
    this.indexOf = function(element){};
    this.isEmpty = function(){};
    this.size = function(){};
    this.getHead = function(){};
    this.toString = function(){};
    this.print = function(){};
    }

VPN(Virtual Private Network)

VPN是一种通过公共网络建立私人网络的技术,通过加密通道将用户的数据传输到VPN服务器,再由VPN服务器转发到目标网站,从而实现用户的上网隐私和安全。

  • 为什么需要VPN?
    • GFW(防火长城):国内的网络审查系统,会屏蔽一些国外的网站,使用VPN可以突破GFW,访问国外网站。

正常没有GFW的情况下,网络包的传输过程是这样的:

1
2
3
4
5
1. 用户设备 (发起DNS请求) -> 2. 路由器 (转发请求) -> 3. ISP DNS服务器 (缓存或递归解析)

4. 用户设备 (接收IP地址) -> 5. 路由器 (发送数据包) -> 6. ISP网络 -> 7. 国际/区域骨干网

8. 目标服务器网络 -> 9. 目标服务器 (处理请求并返回数据)

有了GFW之后,网络包的传输过程变成了这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. 用户设备 (发起DNS请求) -> 2. 路由器 (转发请求) -> 3. ISP DNS服务器 (缓存或递归解析,可能受到GFW干预)

- GFW可能拦截DNS请求,返回伪造的IP地址(DNS污染)。

4. 用户设备 (接收IP地址,可能是错误的伪造地址) -> 5. 路由器 (发送数据包) -> 6. ISP网络

- GFW监控传输的数据包,发现敏感关键词时进行干预。(过滤关键字)。
- GFW对端口进行封锁,导致用户无法访问一些网站。(端口阻断)。
- GFW对IP地址进行封锁,导致用户无法访问一些网站。(IP地址封锁)。

7. 国际/区域骨干网 (若未被阻断,数据包继续传输)

- GFW可能通过深度包检测(DPI)分析数据包内容,发现敏感流量特征时进行干预(丢包、限速、阻断IP等)。

8. 目标服务器网络 (若数据包未被拦截,正常到达目标网络) -> 9. 目标服务器 (处理请求并返回数据,回程时可能再次被GFW干预)

VPN SSH HTTP代理的原理
1、用户设备会先和VPN服务器建立加密通道,使用SSH(Secure Shell)协议创建加密隧道。
2、在VPN服务器上使用HTTP代理,将用户的数据包转发到目标服务器。

Shadowsocks SSR v2ray等方式运作原理
1、在本地网络上进行加密,发送加密数据经过DNS解析后,到达VPN服务器。
2、VPN服务器解密数据,将数据包转发到目标服务器。
3、目标服务器返回数据,VPN服务器再次加密数据,发送到用户设备。