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

139 阅读4分钟

网络组成部分

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

协议

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

小结

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

HTTP 2:帧带来的额外好处

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

HTTP 2:3 RTT启动

  • HTTP客户端:我要和大哥说话!
  • TCP客户端默默对HTP客户端说,我知道你很急,但你先别急。·TCP客户端:嗨!服务端,你在吗?
  • TCP服务端∶嗨!客户端,我在,你在吗?。TLS客户端:Hello!能给我把钥匙吗?。TLS 服务端:Hello!给!你的钥匙!
  • HTTP客户端:终于到我了,我要index.html !

HTTP:QUIC-ORTT

QuIC第二次访问

  • HTTP客户端:我要和大哥说话!
  • QUIC客户端:嗨!服务端,你在吗?后面的话我已经用上次你给我的钥匙加密过了,HTTP那小子肯定要index.html!
  • QUIC服务端∶嗨!客户端,我在,我知道你要index.html,给你!
  • HTTP客户端:?

CDN: DNS劫持

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

WebSocket

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

客户端代码

const websocket = require( 'ws' ) ;

const ws = new webSocket( 'ws://localhost:8080');

ws.on('open', function open( ) {
 //当连接建立时,向服务端端发送一条消息7ws.send( ' something ' );
 });
ws.on( 'message ' , function message(data) {
 //当收到来自服务端的消息时,打印出来
console.log( 'received: %s ' , data );
});

网络安全

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

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

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

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

网络安全:机密性

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

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

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

  • 蟹老板向银行发起了转账请求
  • 银行需要确认
    • 这个请求真的是蟹老板发起的
    • 目标账户和转账金额没有被篡改

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

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

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

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

  • 有明文m,密码散列函数H
  • 计算H(m)获得哈希值h
  • 将m和h组合成新信息m +h
  • 接收方拆分m + h,重新计算H(m)得h',对比h'和h

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

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

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

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

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