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

150 阅读23分钟

课程内容

  • 通过一个示例建立对计算机网络的整体认识
  • 建立对网络协议分层的认知
  • 分析HTTP1、2、3的关系
  • 介绍CDN运行的基本原理
  • 了解网络安全的最基本原则

蟹堡王帝国

三步走战略

  • 在比奇堡开通外卖
  • 在北京和上海开分店
  • 在全国开分店并开通外卖

小结

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

image.png

计算机网络基础

网络组成部分

  • 主机:客户端和服务端(提供信息和接收信息)
  • 路由器(转发主机之间的信息)
  • 网络协议(提供统一格式,方便主机和路由器之间编码和解码)

网络结构:网络的网络

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

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

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

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

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

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

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

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

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

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

在一个大型组织或企业环境中,通常会使用子网划分(subnetting)对本地网络进行划分。子网划分的目的是将一个大的网络划分为多个较小的子网络,以实现更好的网络管理、降低网络拥塞和提高安全性。这些子网络可以根据部门、地理位置或功能进行划分。

子网划分是通过对IP地址进行按位与操作来实现的。使用子网掩码(subnet mask)可以确定一个IP地址属于哪个子网。在子网划分后,同一子网内的设备可以直接通信,而跨子网通信需要通过路由器(router)实现。

总结一下,在一个本地网络(LAN)中,可以根据实际需求将其划分为多个子网络。这些子网络有助于实现更有效的网络管理、提高安全性和降低网络拥塞。

  • 区域网络、城域网和广域网
  1. 区域网络(Metropolitan Area Network,简称 MAN):区域网络覆盖一个城市或城市群,比本地网络(LAN)的范围更大,但比广域网(WAN)小。典型的应用场景包括连接同一城市内的多个企业办公楼、大学校园、政府机构等。区域网络通常使用高速光纤或其他高速传输介质,可以提供较高的数据传输速率。
  2. 城域网(Campus Area Network,简称 CAN):城域网是指覆盖一个学校、大学或企业园区范围内的计算机网络。城域网的规模介于本地网络(LAN)和区域网络(MAN)之间。城域网通常由多个相互连接的局域网组成,以实现资源共享、通信和数据传输。城域网可以使用有线(如以太网)和无线(如 Wi-Fi)连接。
  3. 广域网(Wide Area Network,简称 WAN):广域网覆盖一个很大的地理区域,如国家、地区甚至全球。广域网通过远程通信链路和中继设备连接多个本地网络、区域网络和城域网。典型的广域网应用包括互联网、电话公司的网络和大型企业的全球网络。广域网的数据传输速率通常较低,因为它们需要跨越更大的距离并涉及更多的中继设备。

这些网络类型之间的主要区别在于覆盖范围、传输速率和管理复杂性。不同类型的网络适用于不同的应用场景,如资源共享、通信和数据传输

电路交换&分组交换

1、电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道。分组交换是以分组为单位进行传输和交换的,它是一种存储转发交换方式,即将到达交换机的分组先送到存储器暂时存储和处理,等到相应的输出电路有空闲时再送出。

2、电路交换分为时分交换和空分交换两种方式。分组交换也称为包交换,它将用户通信的数据划分成多个更小的等长数据段,在每个数据段的前面加上必要的控制信息作为数据段的首部,每个带有首部的数据段就构成了一个分组。

3、电路交换方式的优点是数据传输可靠、迅速,数据不会丢失,且保持原来的序列。分组交换方式的优点是不同的数据分组可以在同一条链路上以动态共享和复用方式进行传输,通信资源利用率高。

网络分层

OSI七层模型包括以下七个层次:

  1. 物理层:负责传输比特流。
  2. 数据链路层:负责通过校验、确认和重传机制来保证数据的可靠传输。(快递公司)
  3. 网络层:负责为不同的主机之间提供网络间的路径选择和逻辑地址寻址等服务。(高速公路)
  4. 传输层:负责提供可靠的端到端传输服务,包括流量控制、拥塞控制和错误恢复等。(卡车)
  5. 会话层:负责建立、管理和终止会话,提供会话层服务。
  6. 表示层:负责数据的格式化、加密和压缩等转换工作。
  7. 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输等。

TCP/IP四层模型包括以下四个层次:

  1. 网络接口层:负责将数据帧传输到物理网络中。
  2. 网际层:负责进行逻辑地址寻址和路由选择,以实现跨网络通信。
  3. 运输层:负责提供可靠的端到端传输服务。
  4. 应用层:负责为用户提供各种网络应用服务,如电子邮件、文件传输等。

网络协议

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

image.png

网络协议是计算机网络中实现通信的一套规则和标准。它定义了在网络中如何传输数据,包括数据格式、数据传输方式、错误处理等,不同的网络协议用于不同的网络层次,例如TCP/IP协议用于互联网传输,HTTP协议用于万维网上的数据传输。 常见的网络协议包括:

  • TCP/IP协议:是互联网的核心协议之一,由传输控制协议(TCP)和互联网协议(IP)组成,负责实现数据的可靠传输和路由选择。
  • HTTP协议:是超文本传输协议,用于在万维网上传输超文本(HTML、XML等)文档。
  • FTP协议:是文件传输协议,用于在网络中传输文件,包括上传和下载文件等功能。
  • SMTP协议:是简单邮件传输协议,用于在网络中传输电子邮件。
  • POP3协议:是邮局协议,用于从邮件服务器上获取电子邮件。
  • IMAP协议:是互联网邮件访问协议,用于从邮件服务器上获取电子邮件,并支持对邮件的操作(例如删除、移动等)。
  • DNS协议:是域名系统协议,用于将域名解析为IP地址,以实现网络中的主机名和IP地址的转换。
  • 这些协议共同构成了现代计算机网络的基础,保证了网络的稳定性和可靠性。

协议示例

Http1.1头部和载荷是通过两个换行符和回车符进行划分的,tcp协议和ip协议并不是。

image.png

image.png

image.png

image.png

image.png

Tcp协议格式

image.png

小结

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

web中的网络

Http协议

客户端请求消息

image.png

服务器响应消息

image.png

image.png

请求信息

请求行(Request Line):GET /index.html HTTP/1.1。请求行包含了请求方法(GET)、请求资源的路径(/index.html)和 HTTP 协议版本(HTTP/1.1)。

Host:www.example.com。Host 头部指定了请求的目标服务器域名。

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。User-Agent 头部描述了发起请求的客户端(浏览器)的信息,包括操作系统、浏览器类型和版本等。

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8。Accept 头部表示客户端支持接收的 MIME 类型。在这个示例中,客户端支持接收 HTML、XHTML、XML 和 WebP 等格式的内容。

Accept-Language:en-US,en;q=0.5。Accept-Language 头部表示客户端支持的语言和优先级。在这个示例中,客户端优先支持美国英语,其次是其他英语。

Connection:keep-alive。Connection 头部表示连接的控制选项。在这个示例中,keep-alive 表示客户端希望保持连接,以便在多个请求之间复用 TCP 连接。

响应信息

状态行(Status Line):HTTP/1.1 200 OK。状态行包含 HTTP 协议版本(HTTP/1.1)、状态码(200)和状态描述(OK)。状态码 200 表示请求已成功处理。

Date:Mon, 23 May 2022 22:38:34 GMT。Date 头部表示响应生成的日期和时间。

Server:Apache/2.4.1 (Unix)。Server 头部描述了生成响应的服务器软件和版本信息。

Content-Type:text/html; charset=UTF-8。Content-Type 头部指定了响应体的媒体类型(MIME 类型)和字符编码。在这个示例中,响应体的内容是 HTML 格式,字符编码为 UTF-8。

Content-Length:138。Content-Length 头部表示响应体的字节长度。

Last-Modified:Sun, 22 May 2022 15:28:12 GMT。Last-Modified 头部表示请求资源的最后修改时间。

Connection:close。Connection 头部表示连接的控制选项。在这个示例中,close 表示服务器在发送完响应后将关闭 TCP 连接。

响应体(Response Body):响应体包含实际返回的数据,通常是 HTML、JSON、XML 等格式的内容。在这个示例中,响应体是一个简单的 HTML 页面。

Http连接模型

image.png

HTTP连接模型指的是客户端和服务器之间进行HTTP通信时的一种交互模式。HTTP连接模型包括以下几种:

非持久连接模型:非持久连接模型是指每次HTTP请求都需要建立一个新的TCP连接。在一个TCP连接中,客户端只能发送一个请求,然后等待服务器响应后,TCP连接就会被关闭。下次再发送请求时,需要重新建立一个新的TCP连接。这种模型的优点是简单易于实现,缺点是建立和关闭TCP连接需要时间,可能导致一定的延迟。

持久连接模型:持久连接模型是指客户端和服务器之间建立一条TCP连接后,可以在这个连接上发送多个HTTP请求和响应。在这种模型中,TCP连接只在客户端或服务器端明确表示断开连接时才会关闭,这样可以避免频繁建立和关闭连接的时间开销。持久连接模型的优点是可以显著降低HTTP通信的延迟和提高性能,但同时需要服务器端支持和管理TCP连接,因此复杂度较高。

管道化连接模型:管道化连接模型是指客户端可以在服务器响应之前,发送多个HTTP请求,而不需要等待每个请求的响应。这样可以减少延迟并提高性能,但需要服务器支持和管理管道化连接。

长轮询连接模型:长轮询连接模型是指客户端发送一个HTTP请求后,服务器保持连接打开,并在有新的数据时立即返回响应。如果没有新的数据,则服务器在一定时间后才返回响应,这样可以减少轮询的次数,降低服务器的负载和网络带宽的消耗。

Comet连接模型:Comet连接模型是指客户端发送一个HTTP请求后,服务器保持连接打开,但在有新的数据时不立即返回响应,而是等待一段时间后才返回响应。这种模型可以在客户端和服务器之间实现双向通信,但需要服务器支持和管理长时间的连接。

HTTP/1.1引入了持久连接,使得客户端和服务器可以在一个TCP连接上发送多个请求和响应。同时,HTTP/2协议还支持多路复用,在一个TCP连接上可以同时发送多个请求和响应,进一步提高了HTTP通信的效率和性能。

http2:帧结构

image.png

image.png

帧来带来的好处

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

传输效率提高:帧可以将传输的数据分成多个较小的数据块,从而提高了传输效率。帧可以根据链路容量的不同进行动态调整,从而避免了数据传输过程中的阻塞和延迟。

可靠性提高:帧包含了控制信息和FCS,可以在传输过程中检测和纠正错误,从而提高了传输的可靠性。

灵活性提高:帧的大小和内容可以根据实际需求进行调整,从而提高了数据传输的灵活性。

安全性提高:帧可以进行加密和认证,从而保证了数据传输的安全性。帧的首部中包含源地址和目的地址信息,可以确保数据只传输到指定的接收方。

总的来说,帧的引入提高了数据链路层的性能和效率,增强了数据传输的可靠性和安全性,有助于提高网络的整体性能和用户的使用体验。

image.png

Http3 QUIC

image.png

HTTP/3是HTTP协议的最新版本,它基于QUIC协议进行传输。与之前的HTTP协议版本不同,HTTP/3使用了QUIC协议的新特性,例如多路复用、快速连接建立等,以提高Web应用程序的性能和效率。HTTP/3使用了QUIC的基础结构和加密机制,因此可以提供更好的安全性和可靠性。

QUIC(Quick UDP Internet Connections)是一个基于UDP协议的传输层协议,它由Google公司开发。QUIC可以在建立连接时同时传输数据,从而避免了HTTP/2中的“队头阻塞”问题,提高了多路复用和并发连接的效率。此外,QUIC还可以在丢失或延迟的情况下更快地恢复连接,因为它使用了一种称为“0-RTT”的技术,可以在不进行身份验证的情况下快速建立连接。

HTTP/3基于QUIC协议进行传输,因此具有与QUIC相同的优点,例如多路复用、快速连接建立、减少延迟等。同时,HTTP/3还使用了新的传输格式(称为“HTTP/3帧”),以适应QUIC的数据传输方式。HTTP/3和QUIC的结合使得Web应用程序可以更快、更可靠地传输数据,提高用户的使用体验。

image.png

image.png

CDN

image.png

image.png

image.png

image.png

image.png

CDN是指内容分发网络(Content Delivery Network),是一种基于分布式计算和网络技术的应用加速和内容分发系统。CDN通过将网站内容分发到全球各地的服务器节点上,实现了网站内容的就近访问,从而提高了访问速度和用户体验。

CDN的工作原理通常分为以下几个步骤:

负载均衡:当用户访问CDN加速的网站时,请求会被转发到CDN的全局负载均衡系统,该系统会根据用户的位置、服务器负载情况等因素,选择最合适的节点。

缓存技术:CDN节点会在本地缓存网站的静态内容,如图片、视频等,以便快速响应用户请求。这可以减少数据传输的距离和时间,从而提高访问速度和可用性。

动态内容优化:除了静态内容,CDN还可以缓存和优化动态内容,如HTML页面和Web应用程序。这些内容可以通过动态加速、HTTP缓存、代码优化等技术进行优化,从而提高响应速度和性能。

安全保障:CDN通常还提供了防御DDoS攻击、恶意访问、网络钓鱼等安全服务,保障网站的安全性和稳定性。

总的来说,CDN通过分发内容到全球各地的节点上,优化内容传输和加速访问,从而提高网站的性能和可用性,为网站提供更好的用户体验和服务。

image.png

image.png

WebSocket

image.png

WebSocket是一种网络通信协议,它可以在浏览器和服务器之间建立持久化的连接,实现双向通信。相对于HTTP协议,WebSocket具有更低的延迟和更高的效率,可以大大提高Web应用程序的性能和响应速度。

WebSocket协议是HTML5中的一部分,它使用标准的HTTP和HTTPS端口(80和443),并与HTTP协议兼容。当客户端发起WebSocket连接请求时,服务器将响应并建立一个持久化的TCP连接。通过该连接,客户端和服务器可以直接进行双向通信,而不需要像HTTP协议一样每次请求都要重新建立连接。

WebSocket协议的特点包括:

  1. 支持双向通信,客户端和服务器可以同时发送和接收数据。
  2. 支持实时数据传输,数据的传输速度比HTTP协议更快。
  3. 支持持久化连接,减少了每次建立连接的开销和延迟。
  4. 支持跨域通信,可以跨域名和协议进行通信。

WebSocket协议适用于需要实时双向通信的Web应用程序,如在线游戏、聊天应用程序、实时数据监控等。它可以与其他Web技术(如HTTP、AJAX、JSON等)结合使用,以满足不同的需求。

尽管WebSocket协议提供了更好的性能和效率,但它也存在一些安全风险,如跨站点脚本攻击(XSS)、跨站点请求伪造(CSRF)、中间人攻击等。因此,在使用WebSocket协议时,必须采取相应的安全措施,例如使用SSL/TLS加密连接、验证数据来源、限制数据大小等。

代码示例

image.png

image.png

image.png

image.png

image.png

小结

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

网络安全

三要素

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

对称加密和非对称加密

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

密码散列函数(哈希函数)

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

网络安全:机密性

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

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

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

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

  • 蟹老板向银行发起了转账请求

  • 银行需要确认

    • 这个请求真的是蟹老板发起的
    • 目标账户和转账金额没有被篡改

如何实现机密性

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

如何实现完整性

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

如何实现身份验证

数字签名是一种基于公钥加密技术的技术,用于保证数据的完整性、不可否认性和真实性。它通常使用非对称加密算法进行实现,如 RSA、DSA 等。

在数字签名中,发送方首先对原始数据进行哈希运算,得到一个唯一的、固定长度的哈希值。然后,发送方使用自己的私钥对这个哈希值进行加密,形成数字签名,并将数字签名和原始数据一起发送给接收方。接收方可以使用发送方的公钥来验证数字签名的真实性和完整性。

验证数字签名的过程如下:

  1. 接收方对原始数据进行哈希运算,得到一个哈希值。
  2. 接收方使用发送方的公钥对数字签名进行解密,得到一个哈希值。
  3. 接收方比较这两个哈希值是否相同,如果相同,则说明数字签名是有效的,原始数据没有被篡改。

这个过程的核心在于发送方使用私钥对哈希值进行加密,只有持有私钥的发送方才能够生成有效的数字签名,因此数字签名可以被认为是发送方对原始数据的“数字指纹”。同时,接收方使用公钥对数字签名进行解密,只有持有公钥的发送方才能够生成有效的数字签名,因此可以保证数字签名的真实性和完整性。

总之,数字签名是一种基于公钥加密技术的技术,用于保证数据的完整性、不可否认性和真实性。它通过对原始数据进行哈希运算和使用发送方的私钥进行加密,生成数字签名,然后通过使用发送方的公钥对数字签名进行解密和验证,保证数据的安全性和可靠性。

  • 签名:用于鉴别身份和防止伪造
  • 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
  • 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
  • 海绵宝宝使用蟹老板的公钥进行解密,获得原文
  • 保证了机密性、完整性和身份验证

如何实现身份验证

  • 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证。
  • 数字签名(指纹)= 私钥加密(密码散列函数(原文))
  • 消息 = 原文 + 数字签名
  • 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改。

image.png

证书链示例

image.png

image.png

小结

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