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

143 阅读11分钟

前沿&课程介绍

方法:

  • 自底向上:是一种从具体的问题着手,最终构建出整体解决方案的方法。即,从局部到整体进行分析、设计和实现。自底向上的过程是从一些基本的构件或原型开始,不断地聚合、组合,逐步构建出系统的各个模块或者组件。在软件开发中,自底向上的方法通常是从实现各个模块或组件开始,然后逐步整合和优化,最终实现整体的软件系统。
  • 自顶向下:是一种从抽象的问题开始,逐步将问题分解、解决的方法。即,从整体到部分进行分析、设计和实现。自顶向下的过程会从一个整体的问题开始,切分为不同的模块或子问题进行处理,然后逐步细化子问题,直到解决到具体的实现问题,这种过程也被称为“递归”。在软件开发中,自顶向下的方法通常要求先设计整体的软件结构、流程与主要功能模块,然后再着手完成具体的功能实现。

蟹堡王帝国

小目标:蟹老板想赚一个“小目标”

三步走:1.在比奇堡开通外卖2.在北京上海开分店3.在全国开分店并开通外卖

随着分店建设的还有通信网络(信息传递)

  1. 在比奇堡开通外卖:

问题:信息处理不及时,经过统计出现3个重点问题:(谁吃,吃什么,送到哪)

谁吃派大星
吃什么百事可乐
送到哪石头屋

当有传真之后解决了信息处理问题

  1. 北京和上海分店

通过通信线路(分店-比奇堡)获取信息,目前出现两家分店

更多分店通信线路(更多分店-分店-比奇堡)分店承担了转化功能

来自中行蟹堡王
发往比奇堡蟹堡王
信息今日销售1000000个百事可乐

外卖问题:如果每个人都拉一条到分店的线就要很多钱,所以就把每个小区设置一个点,每个人拉到小区点上

类比:

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

计算机网络基础

1.网络组成部分

主机:客户端和服务端(提供信息或接受信息)

路由器(转发主机之间的信息)

网络协议(提供统一的格式,方便路由器或主机对信息进行解码和编码)

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

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

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

3.网络分层

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

4.协议

协议的存在依赖于链接

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

Null/Loopback#帧是本机,源地址和目标地址都是本机

5.TCP协议格式

小结

  • 网络组成部分:由主机、路由器、交换机等组成
  • 网络结构:网络的网络
  • 信息交换方式:电路交换和分组交换
  • 网络分层:分清职责,物理层、链路层、网络层、运输层和应用层
  • 网络协议:标头和载荷

真正的载荷是最后几个字节

Web中的网络

红色的是请求,蓝色的是响应

http模型:请求、响应模型(网络利用率不高,无法在一条请求中插入另一种请求)

http1:请求、响应,无法多路复用

http2:帧

http2帧带来的额外好处:

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

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

http3:QUIC

UDP不管丢包

QUIC比较靠谱

QUIC第二次可以化简流程

服务器可以成熟的流量是有限的

CDN:

CDN最多跳两次

CDN:DNS劫持

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

大型站点使用策略:只在CDN服务器上维护部分内容,但是这部分内容满足大部分用户需求

  1. 拉策略
  • 默认情况下什么都不做
  • 谁需要了先看仓库有没有
  • 有就直接给
  • 没有就等着去弄
  • 隔几天:丢掉弄来的

2.推策略

  • 给指令今天存这些,明天存那些
  • 谁需要先看仓库有没有
  • 有就直接给
  • 没有就现去弄
  • 然后给指令删除部分

WebSocket

有状态的持久链接

服务端可以主动推送信息

延迟比HTTP低

网络安全

三要素:

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

网络安全:对称加密和非对称加密

为了实现网络通信的机密性,需要使用加密算法和密钥等信息来对信息进行加密。然而,网络通常是明文的,这意味着通信双方在通信过程中可能会遭到窃听、嗅探、中间人攻击等网络攻击,导致机密信息泄漏。因此,为了实现机密性,需要采取相应的安全保障措施。

具体来说,为了实现通信的安全性和机密性,可以使用对称加密或非对称加密算法,如AES、DES、RSA等等。其中对称加密和非对称加密具有不同的加密方式和密钥管理方式。

对称加密是一种加密方式,加密和解密使用相同的密钥,但密钥必须在通信双方之间保密传递。这种加密方式的优点是加密和解密运算速度非常快,而缺点是密钥容易泄漏,从而导致机密信息的泄露。

与之相反,非对称加密是使用不同的密钥进行加密和解密的加密方式。公钥用于加密信息,私钥用于解密信息。这种方式提供了更高的安全性,因为公钥可以公开发布,但私钥必须由密钥的所有者妥善保管。但是,非对称加密的运算速度相对较慢,因此它通常用于保护少量的机密信息。

除了加密算法和密钥管理之外,密码散列函数(哈希函数)也可以用于保护机密性。密码散列函数可以将任意长度的数据转换为固定长度的哈希值,并保证哈希值唯一性,从而实现数据的完整性和防止数据的篡改。

总之,实现网络通信的机密性需要使用加密算法、密钥管理、密码散列函数等技术,以保护信息不被窃取、篡改或泄露。同时双方需要共同使用秘密信息。只有这样,才能在网络通信中有效地保障信息的机密性。

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

为了实现信息完整性的保护,可以使用密码散列函数来进行校验。密码散列函数的特性是将任意长度的输入消息转换为固定长度的输出,且对于相同的输入始终生成相同的输出。根据密码学的研究,找到两个不同的输入使其经过散列后得到相同的输出,即哈希碰撞,是非常难以实现的。

具体来说,为了实现信息完整性的保护,发送方可以使用密码散列函数对消息进行哈希,生成唯一的、固定长度的数字指纹(哈希值)。发送方然后可以将消息和哈希值组合成新的信息,将其发送给接收方。接收方对消息进行哈希,得到一个新的哈希值,然后将其与最初接收到的哈希值进行比较。如果两个哈希值相同,则说明消息没有被篡改。

在具体应用中,通常使用的是一些常见的密码散列函数,如MD5、SHA-1、SHA-2等等。这些散列函数被广泛应用于各种网络安全应用中,如数字签名、数据完整性校验等等。

总之,利用密码散列函数可以实现信息完整性的保护,防止信息被篡改。但是在实际应用中,通信双方需要先有秘密信息或密钥,如对称密钥或非对称密钥,才能确保整个信息在传输过程中是受到保护的。

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

为了实现身份验证,需要使用数字证书进行保护。数字证书通常由一个证书颁发机构(CA)签发,它包括了一些重要的信息,如公钥、证书序列号、证书到期日期等等。

安全的通信需要建立在信任的基础之上,因此,证书链是数字证书信任模型的一个重要组成部分。证书链是由根证书、中间证书和最终证书组成的,根证书是证书链的尽头,它通常由一个常规应用程序或操作系统厂商提供。然而,根证书一旦被凭证机构签署,就不可更改,因此整个认证链上的各个证书都必须经过认证,证书链与信任锚点(如根证书)的关联创建信任链,以确保该证书被认为是可信的。

在数字证书的验证过程中,使用的是公钥密码体系,即通过公钥加密、私钥解密来验证数字签名是否正确。私钥保存在数字证书的所有者手中,一般不公开,而公钥却可以向他人公开。数字签名是利用私钥对原始信息的哈希值进行加密,验证方收到消息后先计算消息哈希值,再将数字签名解密,如果两者一致,则认为这个数字签名是有效的。

总之,实现身份验证需要利用签名、非对称加密和数字签名等技术,从而确保机密性和完整性,提高网络安全水平。同时,需要使用证书链和PKI基础设施,并在其中信任根证书,以保证整个认证过程的可靠性与完整性。

网络安全:HTTPS

HTTPS是指在HTTP的基础上加入TLS/SSL协议进行通信,以保证数据的机密性、完整性和身份鉴别。具体来说,HTTPS的工作流程如下:

  1. 客户端向服务器发起请求。
  2. 服务器将公钥发送给客户端。
  3. 客户端使用服务器的公钥对消息进行加密。
  4. 服务器使用私钥对消息进行解密。
  5. 服务器使用客户端的公钥对消息进行加密。
  6. 客户端使用私钥对消息进行解密。
  7. 服务器使用TLS/SSL协议对消息进行加密和验证。
  8. 客户端使用TLS/SSL协议对消息进行解密和验证。

在这个过程中,TLS/SSL协议是最重要的环节,它提供了身份验证、加密和数据完整性保护。

身份验证的实现,可采用公钥基础设施(Public Key Infrastructure,PKI)技术,通常由证书颁发机构(Certificate Authority,CA)来管理和维护。在服务端,需要对服务器的身份进行认证,在客户端,需要对客户端的身份进行认证。对于服务器端,PKI可以通过对服务器的数字证书进行签名和验证来进行身份验证。对于客户端,可以使用基于HTTP协议的身份验证机制来进行身份认证。

总之,HTTPS通过将HTTP明文信息加密后再进行通信,可以保护数据的机密性、完整性和身份鉴别。身份验证是通过PKI技术实现的,用于验证服务器和客户端的身份。