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

204 阅读21分钟

589700748348426069.jpg

一、前言and课程介绍

计算机网络与计算机前端的概念和联系

计算机网络计算机前端实际上是两个不同领域的技术,它们各自有着自己的任务和目标。计算机网络是研究计算机与计算机之间、计算机与其他设备之间互联互通的技术,用于实现数据的传输和交换。而计算机前端是指开发人员使用HTMLCSSJavaScript等技术制作的用户交互界面,用于展示数据和与用户进行交互。

虽然计算机网络计算机前端是两个不同的领域,但是它们在计算机系统中是相互关联、互相依存的。例如,在网站开发中,计算机前端需要通过计算机网络服务器进行通信,获取和展示数据。另外,计算机前端的设计和开发需要遵循计算机网络的一些基础原则,例如网络安全数据传输速度等。因此,计算机网络计算机前端在一定程度上会产生联系和影响。*

二、计算机网络概论课程目标和分析方法

目标:

通过举例的方法建立对计算机网络整体认识

②如何理解网络协议分层

③分析HTTP1、2、3的关系

④理解CDN的概念和原理

⑤了解网络安全的基本原则

分析方法:

自底向上:

  • 从简单开始,逐渐变复杂。
  • 将模块逐步拼凑成一个系统。

自顶向下:

  • 从复杂开始,逐渐变简单。
  • 从复杂的系统问题入手,拆分为模块问题。

示例:蟹黄堡帝国

  • 充满计算机网络思维的趣味故事

小目标蟹老板想挣一个“小目标”

  • 三步走战略

1.在比奇堡开通外卖

2.在北京和上海开分店

3.在全国开分店并开通外卖

解析图:

198033981960940389.jpg

121528714649839146.jpg

计算机网络基础

1.网络组成部分

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

网络结构:网络的网络

①比奇堡和小区网络:本地网络

  1. 本地网络(Local Area Network,简称 LAN)是指一个相对较小的地理范围内(例如家庭、学校、公司或办公楼)的计算机和其他设备通过网络媒介相互连接的系统。本地网络的主要目的是实现这些设备间的资源共享、数据传输和通信。

本地网络的典型特点包括:

  • 范围有限:通常覆盖一个较小的地理区域,如同一栋建筑物或一个园区。
  • 高速传输:相较于广域网(WAN),本地网络内的数据传输速度通常较快。
  • 私有所有:本地网络通常由组织或个人拥有和管理。
  • 设备多样:本地网络内可能包括计算机、打印机、服务器、网络存储设备等各种设备。
  • 通信协议:本地网络通常使用 Ethernet(以太网)或 Wi-Fi(无线局域网)作为通信协议。

使用本地网络的好处包括便捷地共享资源(如打印机、文件和应用程序)、降低通信成本、提高工作效率和便于设备之间的协作。

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

本地网络节点(Local Network Node)是指在本地网络(LAN)中的一个设备,例如计算机、服务器、打印机或路由器等。每个节点在网络中都有一个唯一的地址,通常称为IP地址。这个地址用于在网络中识别和定位特定的设备。在数据传输过程中,这些地址会帮助网络设备将信息发送到正确的目的地。

本节点地网络之间的通信通常通过交换机(Switch)或路由器(Router)实现。交换机主要负责在同一局域网内设备之间转发数据包,而路由器主要负责在不同网络之间转发数据包,如在本地网络和互联网之间。

本地网络内,节点之间可以通过有线(如以太网)或无线(如Wi-Fi)连接相互通信。使用有线连接时,设备之间通过网线连接,传输速度较快且稳定;而无线连接则无需网线,更加便捷,但可能受到环境因素影响,导致传输速度波动。

③全国通信网络:本地化网络

本地化网络是指在一个长途编号区内、由若干端局(或端局与汇接局)、局间中继线、长市中继线及端局用户线所组成的自动电话网。本地化网络的主要特点是在一个长途编号区内只有一个本地化网络,同一个本地化网络的用户之间呼叫只拨本地电话号码,而呼叫本地化网络以外的用户则需按长途程序拨号。本地化网络基本特征是业务类型的多样性及业务流向的不确定性。它在整个通信网中起着承上启下的作用,其建设的好坏直接影响着各项业务的开展。

分析图:

379533733310564384.jpg

458725981909103647.jpg

网络协议

网络基础协议是指在计算机网络中实现各种功能的一组规定,这些规定描述了数据在网络中的传输方式、格式和处理过程。

这里列出一些常见的计算机网络协议:
  • IP(Internet Protocol,互联网协议): IP 是网络层的主要协议,负责处理网络寻址和数据包在网络中的传输。IP 使用 32 位(IPv4)或 128 位(IPv6)的地址来唯一标识网络中的每个设备。IP 协议可以在不同类型的网络和设备之间提供互通性。
  • ICMP(Internet Control Message Protocol,互联网控制报文协议): ICMP 是 IP 协议的一个辅助协议,用于在网络中传输控制和错误信息。ICMP 的典型应用场景包括网络故障诊断(如 ping 命令)和路由器之间的通信。
  • ARP(Address Resolution Protocol,地址解析协议): ARP 是一种数据链路层协议,用于将网络层的 IP 地址映射到数据链路层的物理地址(如 MAC 地址)。ARP 协议使得 IP 数据包可以在本地网络中正确传输到目的设备。
  • TCP(Transmission Control Protocol,传输控制协议): TCP 是传输层的主要协议,提供了面向连接的、可靠的数据传输服务。TCP 通过握手过程建立连接,使用序列号和确认机制确保数据的可靠传输,以及使用滑动窗口机制实现流量控制。
  • UDP(User Datagram Protocol,用户数据报协议): UDP 也是传输层的一种协议,但与 TCP 不同,它提供的是无连接的、不可靠的数据传输服务。UDP 的优势在于它的传输开销较小,适用于实时性要求较高、允许丢包的应用场景,如实时语音和视频通信。 -** DNS(Domain Name System,域名系统**): DNS 是应用层的一种协议,用于将人类可读的域名解析为 IP 地址。DNS 使得用户可以通过域名访问网站和网络服务,而无需记住复杂的 IP 地址。
  • HTTP(Hypertext Transfer Protocol,超文本传输协议): HTTP 是应用层的一种协议,用于在客户端(如浏览器)和服务器之间传输超文本和其他资源。HTTP 是互联网上最常用的协议,构成了万维网(WWW)的基础。
  • FTP(File Transfer Protocol,文件传输协议): FTP 是应用层的一种协议,用于在客户端和服务器之间传输文件。FTP 协议支持对文件的上传、下载、删除、重命名等操作,并提供了对文件访问权限的控制功能。它通常用于在用户和服务器之间共享文件和管理网站内容。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议): SMTP 是应用层的一种协议,用于在邮件服务器之间或客户端到邮件服务器之间发送电子邮件。SMTP 只负责邮件的发送,而接收邮件则需要使用 POP3(邮局协议3)或 IMAP(互联网消息访问协议)等其他协议。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议): DHCP 是应用层的一种协议,用于为网络中的设备动态分配 IP 地址和其他网络配置信息。DHCP 使得网络管理员可以集中管理 IP 地址分配,简化了网络配置和管理工作。
  • SSL/TLS(Secure Sockets Layer/Transport Layer Security,安全套接层/传输层安全): SSL 和 TLS 是应用层的加密协议,用于在客户端和服务器之间建立安全的通信通道。SSL/TLS 可以保护数据的完整性和隐私,防止窃听和篡改。它们广泛应用于安全敏感的场景,如在线支付、登录验证等。

标头和载荷:

160485909860360036.jpg

  • 标头(Header): 标头是数据包或帧的开头部分,包含了用于处理和传输数据的控制信息。标头中的信息根据不同的协议和网络层次而有所不同。一般来说,标头包含了如下信息:

  • 源地址和目的地址:标头中通常包含了发送方和接收方的地址信息,如 IP 地址、MAC 地址等。这些地址信息用于确保数据正确传输到目的地。

  • 协议类型:标头中还包含了协议类型信息,以标识数据包属于哪个协议。这有助于网络设备正确处理和转发数据包。

  • 序列号和确认号:对于面向连接的协议(如 TCP),标头中还包含了序列号和确认号,用于实现可靠数据传输和流量控制。

  • 校验和:标头中通常包含了校验和信息,用于检测数据在传输过程中是否发生错误。

  • 其他控制信息:标头中还可能包含其他控制信息,如数据包的生命周期、优先级、标志位等。

  • 载荷(Payload) : 载荷是数据包或帧的主体部分,包含了实际要传输的数据。载荷的内容根据不同的应用和场景而有所不同。例如,在传输文件时,载荷中包含了文件的内容;在传输网页时,载荷中包含了 HTML、CSS 和 JavaScript 等网页元素。 HTTP协议示例:应用层-HTTP协议头部

HTTP(超文本传输协议)是应用层的一个协议,用于在客户端(如浏览器)和服务器之间传输超文本和其他资源。HTTP 协议的请求和响应消息都包含头部(Header)信息,用于描述和控制消息的传输和处理。

223519949813845689.jpg

小结:

661829864237828595.jpg

Web中的网络

HTTP1

467756236782276675.jpg 请求代码:

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Connection: keep-alive

响应代码:

HTTP/1.1 200 OK Date: Tue, 11 April 2022 22:38:34 GMT Server: Apache/2.4.1 (Unix) Content-Type: text/html; charset=UTF-8 Content-Length: 140 Last-Modified: Tue, 12 April 2022 15:28:12 GMT Connection: close

HTTP连接模型:

  • 无连接模型: 在早期的 HTTP/1.0 版本中,HTTP 使用无连接模型。这意味着每个 HTTP 请求和响应都需要建立一个新的 TCP 连接。在处理完一个请求后,服务器会关闭连接。这种模型简单易实现,但在高延迟和大量并发请求的场景下,性能较差。每个连接的建立和关闭都会消耗资源和时间,导致延迟增加和服务器负载过高。

  • 持久连接模型: 为了解决无连接模型的性能问题,HTTP/1.1 引入了持久连接(Persistent Connection)模型,也称为 Keep-Alive 连接。在持久连接模型中,客户端和服务器可以在一个 TCP 连接上发送多个 HTTP 请求和响应。这种模型减少了 TCP 连接的建立和关闭次数,降低了延迟和服务器负载,提高了性能。持久连接在 HTTP/1.1 中是默认启用的,可以通过 Connection 请求头部的值(Keep-Alive 或 close)进行控制。

  • 管道化连接模型: HTTP/1.1 还引入了管道化(Pipelining)连接模型,它允许客户端在收到上一个请求的响应之前,连续发送多个请求。服务器会按照请求的顺序依次处理,并按顺序返回响应。这种模型进一步提高了连接的利用率和性能。但由于实际部署中的兼容性和实现问题,HTTP/1.1 的管道化并未广泛应用。

585462572316913149.jpg

HTTP1.1:无法多路复用

在 HTTP/1.1 中,每个请求和响应都是一个完整的文本消息,必须按照顺序发送和接收。这导致了一种称为“队头阻塞”(Head-of-Line Blocking)的问题,即一个请求或响应的处理延迟会影响后续的请求和响应,无法并行处理。虽然 HTTP/1.1 引入了管道化技术以尝试提高性能,但由于实际部署中的兼容性和实现问题,管道化并未广泛应用。

相比之下,HTTP/2 能实现多路复用的原因如下:

  • 二进制分帧:HTTP/2 把请求和响应分解为多个二进制帧,每个帧都有一个唯一的标识符。这使得客户端和服务器能够在一个 TCP 连接上同时发送和接收多个请求和响应的帧,而不会产生队头阻塞问题。 流(Stream):HTTP/2 引入了流的概念,每个请求和响应都有一个独立的流。流可以并行处理,每个流的帧可以独立发送和接收,而不受其他流的影响。这使得多个请求和响应可以在一个 TCP 连接上并行传输,实现多路复用。
  • 优先级和依赖:HTTP/2 还支持为每个流设置优先级和依赖关系。客户端可以通过优先级和依赖信息告诉服务器哪些请求更重要,哪些请求需要先完成。这样,服务器可以更有效地利用资源,优先处理重要的请求,进一步提高性能。
  • 流量控制:HTTP/2 引入了更为精细的流量控制机制,客户端和服务器可以独立地为每个流设置发送窗口大小,以控制每个流的传输速率。这有助于避免一个流占用过多带宽,影响其他流的传输。

所以,HTTP/2 通过引入二进制分帧、流、优先级和依赖以及流量控制等机制,实现了多路复用,克服了 HTTP/1.1 中队头阻塞等性能问题。这些改进使得 HTTP/2 能在一个 TCP 连接上并行处理多个请求和响应,提高了性能和资源利用率。

HTTP2的帧

275730465030996669.jpg

HTTP/2 的二进制帧处理机制实现了更高效的传输和多路复用,解决了 HTTP/1.1 中的队头阻塞问题。此外,HTTP/2 引入了优先级、依赖、流量控制、服务器推送和头部压缩等优化措施,进一步提升了性能和资源利用率。

400469689863669175.jpg

帧来带来的好处:

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

HTTP3出现的原因是HTTP2还不够快和解决 HTTP/2 中仍然存在的一些问题和局限性

  • HTTP3:QUIC Quick UDP Internet Connection 现存网络设备对TCP和UDP支持已经僵化 UDP不靠谱(包丢了就不管了,业务给多少数据,它就发多少数据)但是QUIC靠谱 QU1C可以为除HTP协议以外的应用层协议提供支持

上图~

56238891377327501.jpg

122745074074673081.jpg

861447790247774679.jpg

CDN概述

CDN(Content Delivery Network,内容分发网络)是一种用于优化网络资源访问速度和提高用户体验的技术。CDN 的核心思想是将网站或应用程序的内容(如图片、视频、脚本等)缓存到位于不同地理位置的服务器上,使用户可以从最近的服务器获取所需的内容,从而降低延迟、提高访问速度和可用性。

CDN 的主要组成部分包括:

  • 边缘服务器(Edge Server):位于各地的服务器,用于缓存和分发内容。当用户请求内容时,CDN 会将请求重定向到最近的边缘服务器,从而加快访问速度。边缘服务器之间会根据一定的策略进行内容同步,确保缓存的内容是最新的。

  • 负载均衡器(Load Balancer):用于在多个边缘服务器之间分发用户请求。负载均衡器根据各边缘服务器的负载情况和用户的地理位置,智能地将请求分配到合适的边缘服务器。

  • 域名解析系统(DNS):CDN 通常会有自己的 DNS 服务,用于将用户的请求重定向到最近的边缘服务器。当用户访问一个使用 CDN 的网站时,DNS 会根据用户的 IP 地址和边缘服务器的位置信息,返回最近的边缘服务器 IP 地址,从而实现请求的重定向。

  • 内容管理系统(CMS):用于管理和维护 CDN 中的内容。内容提供者可以通过 CMS 将内容发布到 CDN,并对内容进行更新、删除等操作。 CDN 的主要优点包括:

  • 降低延迟:通过将内容缓存到离用户更近的边缘服务器上,CDN 可以显著降低访问延迟,提高用户体验。

  • 提高可用性:CDN 能够在多个边缘服务器之间分发流量,从而提高系统的冗余性。当某个边缘服务器出现故障时,用户的请求可以被重新定向到其他可用的服务器,确保服务的正常运行。

  • 减轻源站压力:由于大部分用户请求都被 CDN 的边缘服务器处理,源站服务器的压力得到了缓解,从而降低了源站的成本和维护复杂性。

  • 节省带宽:CDN 可以通过缓存和压缩技术,有效地减少网络带宽的消耗,降低数据传输成本。

  • 安全性:CDN 可以提供诸如 DDoS(分布式拒绝服务)攻击保护、Web 应用程序防火墙等安全措施,保护网站免受攻击和恶意访问。

  • 支持动态内容:除了静态内容外,CDN 还可以缓存和分发动态内容,如动态生成的 HTML 页面、Web API 的响应等。 需要注意的是,CDN 的应用场景和效果并不是完全适用于所有类型的网站和应用程序。特别是对于内容更新频繁的网站或应用程序,使用 CDN 可能会导致更新不及时或者缓存不一致等问题。因此,在使用 CDN 时需要根据具体情况进行评估和权衡。

Websocket概述

WebSocket 是一种网络通信协议,可以在客户端和服务器之间实现双向通信。与传统的 HTTP 协议不同,WebSocket 协议在客户端和服务器之间建立持久连接,可以在任何时间点双向通信,而不需要通过 HTTP 请求和响应来进行。WebSocket 协议可以在 Web 应用程序和服务器之间实现实时通信和数据传输,常用于在线游戏、聊天室、实时数据监测等场景。

WebSocket 协议的优点如下:

  • 实时性:WebSocket 协议可以在客户端和服务器之间实现双向实时通信,可以在任何时间点发送和接收数据,避免了 HTTP 请求和响应的延迟和重复。
  • 效率:WebSocket 协议可以在客户端和服务器之间建立持久连接,避免了每次请求和响应的开销,提高了数据传输效率。
  • 跨域支持:WebSocket 协议可以支持跨域通信,可以在不同的域名和端口之间进行数据传输。
  • 可扩展性:WebSocket 协议可以通过自定义消息格式和协议扩展实现更复杂的应用场景和功能。 WebSocket 协议的实现基于 TCP 协议,使用类似 HTTP 的握手协议建立连接。客户端和服务器之间建立连接后,可以通过 send() 方法发送数据,通过 onmessage() 方法接收数据。客户端和服务器之间的通信是双向的,可以在任何时间点发送和接收数据。当客户端或服务器需要关闭连接时,可以调用 close() 方法关闭连接。

总之,WebSocket 协议是一种实现双向实时通信的网络通信协议,可以在 Web 应用程序和服务器之间实现实时数据传输和通信。WebSocket 协议可以提高数据传输效率和实时性,适用于在线游戏、聊天室、实时数据监测等场景。

有状态的持久连接

服务端可以主动推送消息

用VebSocket发送消息延迟比HTTP低

网络安全概述

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

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

怎么在不安全的信道交换秘密信息?

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

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

蟹老板向银行发起了转账请求,银行需要确认

这个请求真的是蟹老板发起的 目标账户和转账金额没有被篡改 如何实现机密性

已知:网络是明文的 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息,意思就是我们想要通过明文来交换密钥,就得有不会被攻击者知道的秘密信息。

如何实现完整性

密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的 有明文m,密码散列函数H 计算H(m)获得哈希值h 将m和h组合成新信息m+h 接收方拆分m+h,重新计算H(m)得h',对比h'和h。

81775491937672582.jpg

PKI概述

PKI(Public Key Infrastructure,公钥基础设施)是一种安全技术体系,用于管理和分发数字证书、公钥和私钥等密钥材料,以保证数字通信和电子商务中的安全性、可信性和可靠性。

PKI 体系由以下几个组成部分构成:

  • 数字证书:数字证书是一种用于证明某个实体身份和公钥信息的电子凭证,由认证机构(CA)进行签发和管理。数字证书包括证书拥有者的身份信息、公钥、数字签名等信息,可以用于身份验证、数据加密和数字签名等场景。
  • 证书颁发机构(CA):CA 是 PKI 体系的核心组成部分,负责签发、验证和管理数字证书。CA 通常是由信任机构或政府部门颁发,具有可信的身份和信誉,是数字证书可靠性的保证。
  • 注册机构(RA):RA 是 CA 的辅助机构,负责验证证书申请者的身份信息和授权申请数字证书。
  • 数字签名:数字签名是一种用于验证数字证书有效性和真实性的技术,可以确保数据的完整性、不可否认性和真实性。
  • 证书撤销列表(CRL):CRL 是由 CA 管理的一份撤销数字证书的列表,如果数字证书已经被撤销,则该数字证书将无法继续使用。
  • 证书存储库(CS):CS 是用于存储数字证书和其他密钥材料的安全存储设施。 PKI 是一种安全技术体系,用于管理和分发数字证书、公钥和私钥等密钥材料,以保证数字通信和电子商务中的安全性、可信性和可靠性。PKI 体系由数字证书、CA、RA、数字签名、CRL 和 CS 等组成部分构成,可以应用于身份验证、数据加密和数字签名等场景。

来张图~

79910999131597286.jpg

再来张图~

小结

145001651144631177.jpg

  • 可能笔记的内容稍有疏忽,欢迎大家指出漏洞,我也很认真在码字了,对了,青训营的其他小伙伴们,加油,加油!