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

73 阅读5分钟

这是我参与「字节前端初阶青训营」伴学笔记创作活动的第1天。

课堂笔记

一、计算机网络基础

1、网络组成部分

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

2、网络结构:网络的网络

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

3、电路交换&分组交换

4、网络分层

  • 快递员不关心包裹内容
  • 卡车司机不关心车厢里拉的是什么
  • 高速公路不关心开的什么车

5、协议

协议的存在依赖于连接。

01001000 01100101 01101100 01101100 01101111 00101100 0010000001010111 01101111 01110010 01101100 01100100 00100001 72101 108 108 111 44 32 87111 114 108 100 33 Hello, world! 协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。

6、标头和载荷

收件人、寄件人关注:

  • 收件地址、寄件地址
  • 收件人、寄件人的姓名和电话
  • 包裹内容

快递公司关注:

  • 收件人、寄件人关注的东西
  • 该由哪个集散点发出,哪个集散点收
  • 哪个网点派送

7、HTTP协议示例

image.png

8、TCP协议格式

image.png

二、Web中的网络

1、HTTP连接模型

2、CDN:你无法突破物理极限的

  • HTTP3快吗?
  • 快!
  • 那从美国到中国,HTTP 3要多久?
  • 150 ms!
  • 和北京到上海比,还快吗?
  • 好像不够?

3、CDN:你的钱包够鼓吗?

  • 流量多少钱一个G?
  • 1块
  • 那我在北京给上海的人发一部10G电影得10块?
  • 对!
  • 发10次一样的电影要100块?
  • 是的!
  • 我都发到上海了,不能内部共享下吗?

4、CDN:你,够强大吗?

  • 我们有几台服务器?
  • 1台
  • 他能抗多少流量?
  • 100 G!
  • 双十一峰值得1000G啊,扛得住吗?
  • 不一定,可能挂……

5、CDN: DNS 劫持

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

6、WebSocket

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

三、网络安全

1、网络安全:三要素

  • 机密性:攻击者无法获知通信内容
  • 完整性:攻击者对内容进行篡改时能被发现
  • 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信

2、网络安全:密码散列函数(哈希函数)

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

3、网络安全:机密性

  • 加密需要加密算法和密钥等信息(统称为秘密信息)
  • 网络是明文的,不安全

4、网络安全:完整性和身份验证

完整性和身份验证相互关联。

  • 发起了转账请求

  • 银行需要确认

    • 这个请求真的是蟹老板发起的

    • 目标账户和转账金额没有被篡改

5、网络安全:如何实现机密性

  • 已知:网络是明文的
  • 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
  • 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息

6、网络安全:如何实现完整性

  • 密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
  • 有明文m,密码散列函数H020
  • 计算H(m)获得哈希值h
  • 将m和h组合成新信息m + h
  • 接收方拆分m + h,重新计算H(m)得h',对比 h'和h

7、网络安全:如何实现身份验证

  • 签名:用于鉴别身份和防止伪造
  • 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
  • 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
  • 海绵宝宝使用蟹老板的公钥进行解密,获得原文
  • 保证了机密性、完整性和身份验证
  • 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
  • 数字签名(指纹)=私钥加密(密码散列函数(原文))
  • 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改
  • 可信的人验证蟹老板的公钥
  • 那谁验证可信的人的公钥?
  • 根证书是证书链的尽头
  • 验证的一连串证书称为证书链
  • 分发证书、验证证书的基础设施称为PKI,Public Key Infrastructure
  • 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥

8、网络安全:HTTPS

  • 把HTTP的明文换成密文,再验证身份,即HTTPS。
  • HTTPS = HTTP +TLS
  • TLS =身份验证+加解密
  • 身份验证靠PKI0261
  • 服务端身份验证靠PKI,客户端身份验证靠HTTP协议。