计算机网络基础|青训营笔记

110 阅读8分钟

计算机网络基础

分析方法

  • 自底向上:1.从简单开始,逐渐变复杂
  • 2.将模块逐渐拼凑成一个系统
  • 自顶向下:1.从复杂开始,逐渐变简单
  • 2.从复杂的系统问题入手,拆分为模块问题

三步走战略

  • 1.在比奇堡开通外卖(加大业务)
  • 2.在北京和上海开通分店(拓宽外省市场)
  • 3.在全国开分店并开通外卖(城市间联系,大大降低成本)
  • 顾客:客户端
  • 分店:服务端
  • 小区转发点和蟹堡王城市转发分店:路由器
  • 转发表格:网络协议

网络结构:网络的网络

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

电路交换&分组交换

  • 线路单一会大大影响效率,因而分组可以有效提高效率,防止资源浪费

网络分层(每一层无需担心下一层的事件,只需关注最主要的工作)

  • 快递员不关心包裹内容
  • 卡车司机不关心拉的货是什么
  • 高速公路建设者不关心会有什么车经过

协议

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

标头(快递面单)和载荷(包裹内容)

  • 收件人/寄件人的关注点和快递公司的关注点不同

HTTP协议

  • 示例:1.链路层-本地帧头部(不需要经过别的交换机)[第一行 4个字节]
  • 2.链路层-IP协议头部[第一行到第三行 40个字节]
  • 3.运输层-TCP协议头部[第四行 20个字节]
  • 4.应用层-HTTP协议头部[剩下的行]
  • 小结
  • 网络组成部分:由主机、路由器、交换机等组成
  • 网络结构:网络的网络
  • 信息交换方式:电路交换和分组交换
  • 网络分层:分清职责,物理层、链路层、网络层、运输层和应用层
  • 网络协议:标头和载荷

Web中的网络

HTTP协议

  • 红色字体是请求,蓝色字体是响应
  • 请求第一行为起始行GET(方法) /(自然路径) HTTP/1.1(HTTP版本),然后是头部,格式为(头部的名称:头部的值)
  • 响应第一行为状态行HTTP/1.1(HTTP版本) 200(状态码) OK(状态信息)此头部有正文

HTTP连接模型(不断更新改进的过程)

  • 有队头堵塞的问题
  • HTTP1.1:无法多路复用
  • HTTP2:帧(解决无法多路复用和对流堵塞)额外的好处:1.调整响应传输的优先级 2.头部压缩 3.Server Push
  • 但HTTP2依然无法解决在TCP中队头堵塞
  • HTTP2:3RTT启动(效率低)
  • HTTP3:QUIC 1.Quick UDP Internet Connection
  • 2.现存网络设备对TCP和UDP的支持以僵化
  • 3.UDP不靠谱但QUIC靠谱
  • 4.QUIC可以为除HTTP协议以外的应用层协议提供支持
  • HTTP3:QUIC-1 RTT QUIC第一次访问(多把密钥可同时使用)
  • HTTP3:QUIC-0 RTT QUIC第二次访问(直接读取上一次访问的信息并提供)

CDN

  • CDN:你无法突破物理极限的(北京到美国的延迟和北京到上海的延迟有很大差别,而建立CDN有效解决了问题)
  • CDN:你的钱包够鼓吗?(多次发送数据到外省成本高,而本地共享可节省成本且降低延迟)
  • CDN:你够强大吗?(建立多台服务器以应对流量高峰)
  • CDN:还得是我(在全国多个城市建设CDN服务器)
  • CDN:最多跳两次!(全国用户最多跳跃两次可达自己的地区,方便快捷)
  • CDN:DNS劫持 1.域名劫持一般由网站自己处理
  • 2.要加速的域名则重定向到CDN厂商的域名解析服务处理
  • 3.CDN厂商根据来源确定最近的CDN服务器的IP
  • 4.用户直接访问最近的CDN服务器
  • CDN:近了,近了吗?(物理距离近延迟不一定小,若转接了多个路由器则会造成更大的延迟)
  • CDN:地主家也没有余粮了
  • 拉策略:以用户需求添和删数据
  • 推策略:以官方决定添删数据

WebSocket

  • 1.有状态的持久连接
  • 2.服务端可以主动推送消息
  • 3.用WebSocket发送消息比HTTP延迟低
  • WebSocket:升级!(从HTTP升级而来)
  • WebSocket:发送消息

网络安全

网络安全三要素

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

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

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

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

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

网络安全:机密性

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

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

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

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

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

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

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

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

  • 有明文m,密码散列函数H,以及一个密钥s
  • 计算 H(m+s)获得哈希值 h
  • 将m和h组合成新信息m+h
  • 接收方拆分 m+h,重新计算H(m+s)得h’,对比h’和h
  • 所以想要实现完整性,通信双方需要先有秘密信息(必需至少有一个攻击者无法直接获取或推断的信息)

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

  • 签名:用于鉴别身份和防止伪造
  • 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
  • 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
  • 海绵宝宝使用蟹老板的公钥进行解密,获得原文
  • 保证了机密性、完整性和身份验证

网络安全:如何实现身份验证(需要最权威的证书认定)

  • 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
  • 数字签名(指纹)=私钥加密(密码散列函数(原文))
  • 消息=原文+数字签名
  • 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改

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

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

网络安全:HTTPS

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

小结

  • 网络安全三要素:机密性、完整性和身份验证
  • 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
  • PKI保证了普通用户不需要“面对面”和根证书机构交换根证书
  • HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现