课程介绍
前端工程师每天都要面对计算机网络,对网络了解得越多,在工作中解决网络问题也就更得心应手。这节课会从网络基础结构开始,一步步向上勾勒出计算机网络的整体架构,让你对网络分层、协议有更深的理解。再从网络安全的终极目标开始,一步步向下分析出实现网络安全需要解决的终极问题,详细了解网络安全的实现原理。最终让你在后续工作中遇到网络问题时能快速定位问题、解决问题。
课程重点
- 网络结构
- TCP/UDP
- HTTP 1 / HTTP2 / HTTP3 (QUIC)
- WebSocket
- CDN
- 安全(SSL/TLS/基础密码学)
计算机网络
计算机网络是一种将地理位置分散的计算机系统连接起来的技术,使得这些计算机可以进行数据交换和资源共享。计算机网络具有高速传输、低成本、高效率、大容量的特点,已经成为现代信息时代的基础设施之一。
计算机网络可以按照拓扑结构、传输介质、通信协议等多个维度进行分类。按照拓扑结构可以分为星型、总线型、环型、树形等;按照传输介质可以分为有线和无线两类;按照通信协议可以分为TCP/IP协议和OSI参考模型等。不同的分类方法可以从不同的角度来了解计算机网络的结构和功能。
在计算机网络中,常见的应用包括电子邮件、Web浏览、文件传输、语音通话、视频会议等。这些应用都需要计算机网络提供可靠的数据传输和交互支持。因此,计算机网络的性能与稳定性对于用户体验至关重要,也是网络工程师需要关心和优化的方向之一。
HTTP 1 / HTTP2 / HTTP3 (QUIC)
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种基于客户端/服务器模型的应用层协议,常用于在Web浏览器和Web服务器之间传输数据。HTTP/1.0,HTTP/1.1,HTTP/2和HTTP/3(QUIC)是HTTP协议的几个版本。
- HTTP/1.0
HTTP/1.0是最早的HTTP协议版本,于1996年发布。它是一种无状态协议,每个HTTP请求都需要重新建立连接,不能很好地支持复杂的Web应用。此外,HTTP/1.0也存在性能问题,例如每个TCP连接只能处理一次HTTP请求等限制,使得多个请求需要建立多个TCP连接,导致网络资源浪费。因此,HTTP/1.0逐渐被新的HTTP版本取代。
- HTTP/1.1
HTTP/1.1于1999年发布,是HTTP/1.0的升级版。HTTP/1.1提供了更多的功能,例如持久连接、管道化请求、分块传输编码和虚拟主机等。这些功能使得HTTP/1.1在复杂的Web应用中表现更好,并且减少了网络资源的浪费。但是,HTTP/1.1仍然存在一些性能问题,例如串行传输和头阻塞等限制,导致Web性能表现不佳。
- HTTP/2
HTTP/2于2015年发布,是HTTP/1.1的升级版。HTTP/2采用二进制协议,支持多路复用、服务器推送和头部压缩等功能,解决了HTTP/1.x的性能问题,提高了Web性能和效率。HTTP/2也被广泛应用于现代Web应用中,例如Google、Facebook和Twitter等。
- HTTP/3(QUIC)
HTTP/3是一种基于QUIC协议的HTTP协议版本,通过减少连接建立和头阻塞等问题来提高Web性能。QUIC协议是谷歌公司开发的一种新型协议,其采用UDP协议传输数据,支持快速建立连接、减少网络延迟和拥塞控制等功能。HTTP/3使用QUIC协议作为传输层协议,解决了HTTP/2的一些限制,具有更好的Web性能和效率。
综上所述,HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3(QUIC)都是HTTP协议的不同版本,各自具有不同的特点和应用场景。在设计Web应用时,需要根据实际情况来选择合适的协议版本,以提高Web性能和效率。
WebSocket
WebSocket 是一种基于 TCP 协议的网络通信协议,允许客户端和服务器之间进行双向通信。传统的 HTTP 协议是一种单向通信协议,即客户端向服务器发送请求,服务器返回响应,通信结束。而 WebSocket 允许服务器向客户端推送数据,同时也可以接收来自客户端的数据。
WebSocket 连接的建立需要通过 HTTP 协议进行握手。握手过程中,客户端发送一个特殊的 HTTP 请求,服务器响应一个握手确认的消息,然后连接就建立起来了。一旦连接建立成功,客户端和服务器之间就可以通过 WebSocket 进行双向通信。
WebSocket 的优势在于它可以减少服务器和客户端之间的通信流量,提高通信效率。相比传统的轮询方式(即客户端每隔一段时间向服务器发送一次请求,查询是否有更新),WebSocket 可以实现实时数据推送,避免了无效的请求和响应,减少了通信延迟和网络带宽的开销。
WebSocket 在实时性要求较高的应用场景下具有广泛的应用,例如在线聊天、在线游戏、股票行情和新闻推送等。WebSocket 协议的底层实现往往由浏览器或者第三方库来实现,对开发者来说,使用起来相对比较简单。
文章仅为个人学习笔记,如有错误,欢迎指正。下期见🔥