计算机网络概论 | 青训营笔记

40 阅读2分钟

计算机网络基础

网络组成部分

  • 主机:客户端和服务端
  • 路由器
  • 网络协议

网络协议:网络的网络

协议

协议的存在依赖于连接
协议定义了在两个或多个通信实体之间交换的报文格式顺序,以及报文发送和接收一条报文或其他事件所采取的动作。一般是二进制。

HTTP模型

  • Short-lived connections
  • Persistent connection
  • HTTP Pipelining 队头阻塞(Head of Line Blocking)

Web中的网络

HTTP1.1 无法多路复用

HTTP2 帧

前三个字节:载荷长度
第四个字节:类型
第五个字节:类型对应的Flags
第六到九个字节:保留位、流ID
随后8192字节:载荷

HTTP2:3RTT启动
帧带来的额外好处

  • 调整响应传输的优先级
  • 头部压缩
  • Server Push

HTTP3 QUIC

Quick UDP Internet Connection
UDP不靠谱但是QUIC靠谱
1 RTT

CDN

DNS劫持

  • 域名解析由网站自己处理
  • 要加速的域名则重定向到CDN厂商的域名解析服务处理
  • CDN厂商根据来源确定最近的CDN服务器的IP
  • 用户直接访问最近的CDN服务器

WebSocket

  • 有状态的持久连接
  • 服务端可以主动推送信息
  • 用WebSocket发送信息延迟比HTTP低

服务端代码

const {WebSocketServer} = require('ws');
const wss = new WebSocketServer({port:8080});
wss.on('connetion', function connction(ws) {
    ws.on('message', function messsage(data) {
        // 打印消息,并发送回服务端
        console.log('received: %s', data)
        ws.send(data)
    })
})

客户端代码

const WebSocket = require('ws');
const ws = new WebSocket('ws://loccalhost:8080');
ws.on('onen', () => {
    ws.send('something')
})

ws.on('message', () => {
    console.log('received: %s', data)
})

WebSocket从HTTP协议升级而来

网络安全

网络安全三要素

  • 机密性
  • 完整性
  • 身份验证

对称加密

加密、解密用同样的密钥

非对称加密

加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能私钥解密,私钥加密只能用公钥解密。

密码散列函数(哈希函数)

  • 输入:任意长度的内容
  • 输出:固定长度的哈希值
  • 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的。

HTTPS

HTTPS = HTTP + TLS
TLS = 身份验证 + 加解密
身份验证靠PKI(Public Key Infrastructure)