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

175 阅读6分钟

计算机网络概论

字节前端训练营笔记,文章可能存在不妥之处,欢迎各位大佬指导交流

01 前言 & 课程介绍

此处省略300字,明天再写(/_)

02 蟹堡王帝国

03 计算机网络基础

网络组成部分

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

网格结构: 网格的网格

  • 比奇堡和小区的网络: 本地网络

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

  • 全国通信网络: 本地网络的网格

  • 区域网格 城域网 广域网

网络分层

协议

协议的存在依赖于链接

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

标头和载荷

HTTP协议示例

HTTP协议示例:链路层——本地帧头部

HTTP协议示例:链路层——IP协议头部

HTTP协议示例:运输层 TCP协议头部

HTTP协议示例:应用层 HTTP协议头部

TCP协议格式

小结

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

04 WEB中的网络

HTTP协议

HTTP连接模型

队头堵塞(head of line blocking)

HTTP1. 1 : 无法多路复用

HTTP2 : 帧

前三个字节:载荷长度

第四个字节 : 类型

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

第六到第九字节:第一位: 保留位; 第2 - 32位 留ID

随后的8192字节 : 载荷

HTTP2 : 帧带来的额外好处 解决多路复用和队头堵塞的问题

调整响应传输的优先级 头部压缩 Server push HTTP2:队头堵塞,但是在TCP上 HTTP2:3 RTT启动 HTTP 3:QUIC Quick UDP Internet Connection 现存网络设备对TCP和UDP支持已经僵化 UDP不靠谱但是QUIC靠谱 QUIC可以为除HTTP协议以外的应用层协议提供支持 HTTP 3:QUIC -1 RTT QU1C第一次访问

HTTP客户端:我要和大哥说话! QUIC客户端:嗨!服务端,你在吗?在的话能给我把钥匙吗? QUC服务端:嗨!客户端,我在,这是你的钥匙! HTTP客户端:今天这么快?我要index.html! QUC服务端(偷偷地告诉客户端):这还有把钥匙,下次找我可以不用问,直接用 HTTP:QUIC -0 RTT QUIC第二次访问

HTTP客户端:我要和大哥说话! QUIC客户端:嗨!服务端,你在吗?后面的话我已经用上次你给我的钥匙加密过了,HTTP那小子肯定要index.html! QUIC服务端:嗨!客户端,我在,我知道你要index.html,给你! HTTP客户端:? CDN:你无法突破物理极限的(内容交付网络) CDN : 最多跳俩次

CDN:DNS劫持 域名解析一般由网站自己处理 要加速的域名则重定向到CDN厂商的域名解析服务处理 CDN厂商根据来源确定最近的CDN服务器的IP 用户直接访问最近的CDN服务器 WebSocket : 升级 HTTP 请求头

HTTP 响应头

WebSocket :发送消息 WebSocket :客户端消息 image (4)

WebSocket 服务端消息

小结

  • HTTP123的演进历史
  • CDN解决了HTTP协议之外的问题
  • WebSocket从HTTP协议升级而来

05 网络安全

网络安全三要素:

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

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

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

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

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

网络安全:机密性

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

怎么在不安全的信道交换秘密信息?需要利用完整性和身份验证。

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

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

例如:

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

上面介绍了网络安全的机密性,那究竟如何实现机密性?

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

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

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

数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证 数字签名(指纹)=私钥加密(密码散列函数(原文) 消息=原文+数字签名

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

网络安全:HTTPS

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

HTTPS = HTTP + TLS TLS=身份验证+加解密 身份验证靠PKI

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

小结

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

先写这么多,等明天一定补。。。(╥╯﹏╰╥)ง