计算机网络基础 | 字节前端青训营

77 阅读5分钟

网络基础

网络组成

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

网络结构

区域网络 城域网 广域网 这有点像从小区走出来了,进入了城市,然后进军全国。

信息交换方式

电路交换 打电话时使用的电话线路
在两个通信设备之间建立一个专用的物理连接或电路,并保持这个连接,直到两台设备之间的通信结束。在电路交换中,发送方和接收方之间的连接是一直存在的,直到通信结束,即使发送方没有数据要传输,这个连接也不会中断。

分组交换 邮件传输
数据被分成相同大小的数据包或分组,每个分组独立传输,不需要建立一条专用的物理连接或电路,可能通过不同的路径到达目的地。在目的地,所有分组重新组装成原始数据。每个分组就像是一个邮件,可以分别发送和接收。

报文交换 (补充)传统邮寄方式
是一种数据传输方式,其中整个数据报文被一次性发送给接收方。在报文交换中,整个数据报文是一次性发送,不需要分割成小的分组。将整个信封交给邮递员,邮递员将整个信封交给接收方。

网络分层

物理层 链路层 网络层:高速公路 运输层:货车 应用层:快递公司

网络协议

标头——快递面单 载荷——包裹内的东西

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

报文=链路层的头+IP协议的头+TCP协议的头+HTTP协议的头+HTTP协议的正文

Web网络

TCP是一个传输协议,负责数据的可靠传输,而HTTP是一个应用层协议,定义了Web服务器和客户端之间的通信方式。HTTP在传输数据之前,需要使用TCP建立一个连接,然后发送HTTP请求和响应。

HTTP1.1

无法多路复用

HTTP2

好处

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

队头堵塞

二进制分帧机制将每个HTTP请求和响应拆分成多个帧,这些帧可以同时传输和接收,不再需要按照请求的顺序进行阻塞等待。但是,每个帧都必须按照严格的顺序接收和处理,否则就会导致队头堵塞。如果前面的帧出现延迟或丢失,那么后面的帧就必须等待,直到前面的帧被接收和处理完毕,才能继续处理后面的帧。

3RTT

RTT(Round-Trip Time) TCP 1 TLS 2

HTTP3

优点

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

1RTT ——>0 RTT

CDN

DNS劫持

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

解决了HTTP协议之外的问题

WebSocket

优点

  • 有状态的持久连接
  • 服务端可以主动推送消息
  • 用WebSocket发送消息延迟比HTTP低(需要先使用HTTP再升级为WebSocket)

网络安全

加密方式

  • 对称加密:加密、解密用同样的密钥
  • 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
  • 密码散列函数: 输入:任意长度的内容 输出:固定长度的哈希值 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的

三要素

机密性:

攻击者无法获知通信内容 加密需要加密算法和密钥等信息(统称为秘密信息) 网络是明文的,不安全

完整性:

攻击者对内容进行篡改时能被发现 为了实现完整性和机密性,通信双方需要先有秘密信息

身份验证:

攻击者无法伪装成通信双方的任意一方与另一方通信

数字签名: 用于鉴别身份和防止伪造 对明文内容的哈希值使用私钥加密,验证者使用公钥验证 数字签名(指纹)=私钥加密(密码散列函数(原文)) 消息=原文+数字签名 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改,保证了机密性、完整性和身份验证 根证书是证书链的尽头,验证的一连串证书称为证书链(证书的证书的证书循环) 分发证书、验证证书的基础设施称为PKI,Public Key Infrastructure

HTTPS

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

这些协议发展的过程就是一个不断提升互联网效率的过程,最近正好在传“前端已死”,我倒是觉得或许程序员这个职业就是为了消灭程序员这个职业而生的。