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

93 阅读6分钟

课程介绍

前端工程师每天都要面对计算机网络,对网络了解得越多,在工作中解决网络问题也就更得心应手。这节课会从网络基础结构开始,一步步向上勾勒出计算机网络的整体架构,让你对网络分层、协议有更深的理解。再从网络安全的终极目标开始,一步步向下分析出实现网络安全需要解决的终极问题,详细了解网络安全的实现原理。最终让你在后续工作中遇到网络问题时能快速定位问题、解决问题。

笔记

网络结构和HTTP协议的演进

在本文中,我将简要介绍网络结构的基本概念,以及HTTP协议的发展历程和主要特点。网络结构是指计算机网络中各种设备、协议和服务的组织方式,它决定了网络的性能、可靠性和安全性。HTTP协议是一种应用层协议,它定义了客户端和服务器之间交换超文本数据的格式和规则。

网络结构的基本概念

网络结构可以分为物理层、数据链路层、网络层、传输层和应用层五个层次。每一层都有自己的功能和协议,下面简要介绍每一层的作用:

  • 物理层:负责在物理媒介(如电缆、光纤、无线电波等)上传输比特流,定义了电气特性、机械特性和编码方式等。
  • 数据链路层:负责在相邻节点之间传输数据帧,提供了错误检测、流量控制和介质访问控制等功能。
  • 网络层:负责在不同网络之间传输数据包,提供了路由选择、拥塞控制和分组转发等功能。
  • 传输层:负责在端到端之间传输数据段,提供了可靠性、效率和多路复用等功能。
  • 应用层:负责提供各种应用服务,如文件传输、电子邮件、网页浏览等。

HTTP协议的发展历程和主要特点

HTTP协议是一种基于TCP协议的应用层协议,它是万维网(WWW)的核心技术之一。HTTP协议的发展经历了以下几个阶段:

  • HTTP 1.0:是最早的HTTP协议版本,它是一种无状态、无连接的协议,每次请求都需要建立和断开TCP连接,导致了网络资源的浪费和延迟。HTTP 1.0支持基本的请求方法(如GET、POST等)、响应状态码(如200 OK、404 Not Found等)和响应头部(如Content-Type、Content-Length等)。
  • HTTP 1.1:是目前最广泛使用的HTTP协议版本,它在HTTP 1.0的基础上增加了许多改进和扩展,如持久连接(keep-alive)、管道化(pipelining)、缓存处理(cache-control)、断点续传(range)、虚拟主机(host)等。HTTP 1.1解决了HTTP 1.0的一些性能问题,但仍然存在队头阻塞(head of line blocking)和头部冗余(header redundancy)等问题。
  • HTTP 2.0:是最新的HTTP协议版本,它在HTTP 1.1的基础上引入了二进制分帧(binary framing)、多路复用(multiplexing)、头部压缩(header compression)、服务器推送(server push)等新特性。HTTP 2.0实现了真正的并行传输,大幅提高了网络效率和用户体验。
  • HTTP 3.0:是目前正在研究和开发中的HTTP协议版本,它基于UDP协议实现了一种名为QUIC的新传输协议。

WebSocket、CDN 和安全(SSL/TLS/基础密码学)是 Web 开发中的一些重要概念。本文将简要介绍这些概念的含义和作用,以及如何在实践中使用它们。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务器和客户端之间实时交换数据。WebSocket 可以提高 Web 应用程序的性能和用户体验,因为它避免了 HTTP 的多次请求和响应的开销。WebSocket 也可以支持二进制数据,从而扩展了传输的数据类型。

CDN(内容分发网络)是一种利用地理位置接近的服务器缓存和分发 Web 内容的技术,它可以减少网络延迟,提高 Web 应用程序的可用性和安全性。CDN 可以加速静态内容(如图片、视频、样式表等)和动态内容(如 API、脚本、无服务器应用程序等)的加载速度,从而提升用户满意度和转化率。

安全(SSL/TLS/基础密码学)是 Web 开发中保护数据隐私和完整性的关键技术,它涉及到使用加密算法、数字证书、密钥交换等方法来建立安全的通信信道。安全可以防止数据被窃听、篡改或伪造,从而保护用户和网站的利益。安全也可以提高 Web 应用程序的信誉和排名,因为搜索引擎和浏览器会优先展示和访问使用 HTTPS 的网站。

在实践中,要使用 WebSocket、CDN 和安全,需要遵循一些最佳实践和注意事项,例如:

  • 使用基于 WebSocket 协议 RFC 6455 的服务器、实现和框架,不要使用过时的版本。
  • 只要应用程序需要安全通道,就使用 wss://(基于 SSL/TLS 的 WebSockets),并检查服务器上的 Origin: 标头。
  • 使用应用程序层控件进行身份验证和授权,例如通过 cookie,并完成正常的反CSRF程序。
  • 将 Web Socket 接收到的消息视为数据,避免将接收到的值传递给 eval() 或将它们添加到 DOM。对于 JSON 格式的数据,使用安全的 JSON.parse() 功能。
  • 始终验证通过 WebSocket 连接(在服务器上和客户端上)传来的数据,并避免使用隧道连接到其他 TCP 服务。
  • 选择合适的 CDN 供应商,并根据应用程序的需求配置缓存策略、压缩选项、边缘计算功能等。
  • 使用 SSL/TLS 证书来启用 HTTPS,并保持证书的有效性和更新性。选择合适的加密套件和密钥长度,并定期检查证书的安全性。
  • 使用 HSTS(HTTP Strict Transport Security)来强制浏览器只使用 HTTPS,并避免使用混合内容(即同时使用 HTTP 和 HTTPS 的内容)。

以上就是本文关于 WebSocket、CDN 和安全(SSL/TLS/基础密码学)的简要介绍,希望对您有所帮助。