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

131 阅读7分钟

一、 前言&课程介绍

1.课程目标和收益

建立对计算机网络的整体认知,对计算机网络中的各种概念(网络分层、网络协议、网络应用等)有初步的理解。进而可以在后续工作中高效解决网络问题。

2.课程介绍

(1)通过一个示例建立对计算机网络的整体认识 (2)建立对网络协议分层的认知
(3)分析 HTTP 1、2、3的关系
(4)介绍 CDN 运行的基本原理
(5)了解网络安全的最基本原则

3.分析方法

(1)自底向上

① 从简单开始,逐渐变复杂

②将模块逐步拼凑成一个系统

(2)自顶向下

① 从复杂开始,逐渐变简单

②从复杂的系统入手,拆分为模块问题

二、蟹堡王帝国

蟹堡王建立考虑的各个方面,帝国建立由基础起步,对于用户需求进行获取,并进行核对;对于发展过程中遇到的事要尽快解决,找到一个快、有、利的方法;

三、计算机网络基础

1.网络组成部分

(1)主机:客户端与服务端 (2)路由器 (3)网络协议

2.网络结构:网络的网络

(1)比奇堡和小区网络:本地网络

(2)北京和上海分店+比奇堡:三个本地网络节点的网络

(3)全国通信网络:本地网络的网络

(4)区域网络、城域网和广域网

3.电路交换&分组交换

(1)电路交换:章鱼哥前台接听电话,不能连接过多用户

(2)分组交换:传真,不会限制电路连接,也不会抑制资源的带宽,分组后可以加入输出队列。

4.网络分层

网络分层:分清职责、物理层 、链路层、网络层、运输层和应用层

(1)快递员不关心包裹内容

(2)卡车司机不关心车厢里拉的是什么

(3)高速公路不关心开的什么车

主要学习网络层、运输层、应用层 (上一层不关心下一层的内容)

5.协议

协议的存在依赖于连接。 72 101 108 108 111 44 32 87 111 114 108 100 33

H  e   l   l   o   ,   W  o  r   l   d   !

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

6.标头和载荷

(1)收件人、寄件人关注:

收件地址、寄件地址

收件人、寄件人的姓名和电话

包裹内容

(2)快递公司关注

收件人、寄件人关注的东西

该由哪个集散点发出,哪个集散点收

哪个网点派送

HTTP协议示例

(1)链路层-本地帧头部 (2)链路层-IP协议头部

(3)运输层-TCP协议头部 (4)应用层-HTTP协议头部

TCP协议格式

四、Web中的网络

HTTP协议

HTTP连接模型:队头堵塞

HTTP1.1:无法多路复用

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

HTTP2:帧

前三个字节:载荷长度

第四个字节:类型

第五个字节:类型对应的Flags

第六到第九字节: 第1位:保留位,第2-32位:流ID,随后的8192字节:载荷

HTTP2:帧带来的额外好处

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

HTTP2:队头堵塞,但是在TCP上

(1)TCP 包0:包含了 (包含了 style.css的第 1行内容)的 HTTP 2 的帧
(2)TCP 包1:包含了(包含了main.js 的全部内容)的HTTP 2 的帧TCP 包 2:包含了(包含了 style.css 的第 2 行内容)的 HTTP 2的帧
(3)TCP 包 3:包含了 (包含 style.css 的第3行内容) 的 HTTP 2的帧

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协议以外的应用层协议提供支持

CDN:DNS 劫持

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

WebSocket(从HTTP协议升级而来)

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

五、网络安全

1.三要素

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

2.对称加密和非对称加密

  • 对称加密:加密、解密用同样的密钥
  • 非对称加密:I加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密

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

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

4.机密性

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

5.完整性和身份验证

  • 完整性和身份验证相互关联。
  • 蟹老板向银行发起了转账请求
  • 银行需要确认
  • 这个请求真的是蟹老板发起的
  • 目标账户和转账金额没有被篡改

5.如何实现机密性

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

6.如何实现完整性

(1)密码散列函数性质:**找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的 **

(1)有明文 m,密码散列函数H
(2)计算H(m)获得哈希值 h
(3)将m和h 组合成新信息 m + h
(4)接收方拆分 m+ h,重新计算H(m)得h',对比h’和h (5)有明文m,密码散列函数H,以及一个密钥s
(6)计算 H(m + s)获得哈希值 h
(7)将m 和h 组合成新信息m+h
(8)接收方拆分 m+ h,重新计算H(m+s)得h',对比h'和h
(9)所以想要实现完整性,通信双方需要先有秘密信息

7.如何实现身份验证

  • 可信的人验证蟹老板的公钥
  • 那谁验证可信的人的公钥?
  • 根证书是证书链的尽头
  • 验证的一连串证书称为证书链
  • 分发证书、验证证书的基础设施为 PKI, Public Key Infrastructure
  • 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥

8.HTTPS

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