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

152 阅读7分钟

这是我参与的第五届青训营笔记创作活动的第1

本堂课主要讲解了:

  • 计算机网络基础 (通过示例建立对计算机网络的整体认知)
  • Web应用(HTTP 1 2 3的关系以及CDN的基本运行原理)
  • 网络安全的基本原则

通过蟹堡王帝国了解计算机网络

image.png

通过蟹堡王帝国的例子,我们可以了解计算机网络的原理,从中我们可以类比出:

  • 蟹堡王顾客:客户端
  • 蟹堡王分店:服务端
  • 小区转发点和蟹堡王城市转发分店:路由器
  • 转发表格:网络协议

由此我们已经能大概了解计算机网络的拓扑结构以及运行原理

计算机网络基础

计算机网络组成部分

  • 主机:客户端和服务端(负责提供信息和接受信息)
  • 路由器(负责转发主机之间的信息)
  • 网络协议(负责提供统一的格式,方便编码和解码)

计算机网络结构:网络的网络

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

区域网 城域网 广域网

局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校、工厂和机关内),一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相连接起来组成的计算机通信网。它可以通过数据通信网或专用数据电路,与远方的局域网、数据库或处理中心相连接,构成一个较大范围的信息处理系统。局域网可以实现文件管理、应用软件共享、打印机共享、扫描仪共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网严格意义上是封闭型的。它可以由办公室内几台甚至上千上万台计算机组成。决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法。

城域网(Metropolitan Area Network),简称MAN,是基于一种大型的局域网LAN,通常使用与局域网LAN相似的技术。将城域网单独列出来的一个主要原因是它有自己的一个标准:分布式队列双总线DQDB(Distributed Queue Dual Bus),即IEEE802.6。DQDB是由双总线构成,所有的计算机都连结在上面。 MAN的一个重要用途是用作骨干网,通过它将位于同一城市内不同地点的主机、数据库,以及LAN等互相联接起来,这与WAN的作用有相似之处,但两者在实现方法与性能上有很大差别。 建设局域网或广域网包括资源子网和通信子网两个方面,而城域网的建设主要集中在通信子网上,其中也包含两个方面: 一是城市骨干网,它与中国的骨干网相连。 二是城市接入网,它把本地所有的联网用户与城市骨干网相连。

广域网(Wide Area Network),简称 WAN,又称广域网、外网、公网(相对应,局域网LAN也称内网、私网)。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。

信息交换方式:

  • 电路交换:使用时占据整条线路,别人无法使用,通信前必须建立连接,不使用时依旧占用线路,利用率低
  • 分组交换:不会建立连接,不会占用资源,会丢包,计算机网络采用分组交换

网络分层:分清职责

物理层 链路层 网络层 运输层 应用层

网络协议:标头和载荷

协议:协议的存在依赖于连接,定义了在两个或多个通信实体之间交换的报文格式顺序,以及报文发送和/或接受一条报文或其他时间所采取的行动

**TCP协议格式:

TCP协议格式.png

Web中的网络

HTTP连接模型:

HTTP连接模型.png

队头阻塞:当一个请求非常大或者服务器需要很长时间进行处理时,后一个需要等前一个请求完成之后才能执行

解决队头阻塞的常规方法:同时建立多个TCP连接,将请求分散在多个连接上

HTTP1.1:无法多路复用

HTTP2:帧

将多个HTTP请求拆到帧里面,每个帧可以携带来自不同HTTP请求的数据,实现多路复用

HTTP2 帧.png

1-3:帧的长度

4:帧的类型

5:对于不同的帧有不同的含义,传递当前帧的一些状态

6:第一位保留位 后31位代表帧所留的id

8:当前帧的载荷

HTTP2:帧带来的额外好处

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

HTTP2:在TCP上仍然会有队头堵塞

HTTP2:3 RTT启动

HTTP3:QUIC

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

HTTP3:QUIC-1 RTT

QUIC-1RTT.png

QUIC-1RTT2.png

HTTP3:QUIC-0 RTT QUIC第二次访问

QUIC-0 RTT.png

CDN:内容分发网络

CDN解决了HTTP协议之外的问题

CDN:DNS劫持

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

拉策略和推策略

  • 拉策略:用户指定在CDN上
  • 推策略:网站决定的

CDN 加速策略有两种方式,分别是推模式和拉模式。 大部分 CDN 加速策略采用的是「拉模式」,当用户就近访问的 CDN 节点没有缓存请求的数据时,CDN 会主动从源服务器下载数据,并更新到这个 CDN 节点的缓存中。

WebSocket

从HTTP升级而来

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

网络安全

网络安全三要素

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

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

想要实现完整性,通信双方需要现有秘密信息

在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息

对称加密和非对称加密

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

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

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

数字签名:对明文内容分的哈希值使用私钥加密,验证者使用公钥验证

数字签名=私钥加密

消息=原文+数字签名

一般用于对公开内容进行数字签名,防止篡改

如何实现身份验证

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

PKI保证普通用户不需要“面对面”和根证书机构交换根证书

HTTPS

把HTTPS的明文换成密文,再验证身份,即HTTPS

HTTPS=HTTP+TLS

TLS=身份验证+加解密

身份验证靠PKI

服务端身份验证靠PKI,客户端身份验证靠HTTP协议

HTTPS使用PKI完成除客户端验证以外的特性,客户端身份验证靠HTTP协议实现

总结

总结.png