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

101 阅读3分钟

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

——通过蟹堡王了解计算机网络的运行机制
1、分析方法

1)自底向上:

  • 从简单开始,逐渐变复杂
  • 将模块逐步拼凑成一个系统

2)自顶向下

  • 从复杂开始,逐渐变简单
  • 从复杂的系统问题入手,拆分为模块问题
2、计算机网络基础

1)网络组成部分

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

2)网络结构:网络的网络

  • 比奇堡和小区网络:本地网络
  • 北京和上海分店+比奇堡:三个本地网络节点的网络
  • 全国通信网络:本地网络的网络
  • 区域网络、城域网和广域网

3)信息交换方式:电路交换 & 分组交换

4)网络分层:物理层、链路层、网络层、运输层、应用层

  • 快递员不关心包裹内容(应用层)
  • 卡车司机不关心车厢里拉的是什么(运输层)
  • 高速公路不关心开的什么车(网络层)

5)协议:协议的存在依赖于连接

协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。

网络协议基本结构:标头和载荷 --> 标头:快递面单,载荷:包裹内的东西

6)TCP协议格式

image-20230413151356207

3、Web中的网络

1)HTTP协议

image-20230413151644407

2)HTTP连接模型(请求响应模型):容易存在队头堵塞问题(Head of Line Blocking)

HTTP 1.1: 无法多路复用

// main.js
console.log('hello world')
/* style.css */
body {
    color: red;
}

HTTP 2: 帧 (前三个字节:载荷长度、第四个字节:类型、第五个字节:类型的对应的Flags、第六到第九字节:(第1位:保留位、第2-32位:流ID)、随后的的8192字节:载荷

body {
    console.log('hello world')
    color: red
} => 
request = style.css, content = 'body {
request = main.js, content = 'console.log('hello world')'
request = style.css, content = 'color: red'
request = style.css, content='}'
  • 调整相应传输的优先级

    • 头部压缩
    • Server Push
HTTP 2: 3 RTT 启动
  • HTTP 客户端:我要和大哥说话

    • TCP服务端默默对HTTP客户端说,我知道你很急,但是你别急
    • TCP客户端:嗨!服务端,你在吗?
    • TCP服务端:嗨!客户端,我在,你在吗?
    • TLS客户端:Hello! 能给我把钥匙吗?
    • TLS服务端:Hello!给!你的钥匙!
    • HTTP客户端:终于到我了,我要index.html
HTTP 3: QUIC
  • Quick UDP Internet Connection

    • 现存网络设备对 TCP 和 UDP 支持已经僵化
    • UDP 不靠谱 但是 QUIC 靠谱
    • QUIC 可以为除 HTTP 协议意外的应用层协议提供支持
HTTP 3: QUIC - 1 RTT

QUIC 第一次访问

  • HTTP客户端:我要和大哥说话!
  • QUIC客户端:嗨!服务器,你在吗?在的话能给我把钥匙吗?
  • QUIC服务端:嗨!客户端,我在,这是你的钥匙!
  • HTTP客户端:今天这么快?我要index.html
  • QUIC服务端(偷偷告诉客户端):这还有把钥匙,下次找我可以不用问,直接用
CDN :DNS 劫持
  • 域名解析一般由网站自己处理
  • 要加速的域名则重定向到CDN 厂商的域名解析服务处理
  • CDN 厂商根据来源确定最近的CDN服务器的IP
  • 用户直接访问最近的CDN 服务器