计算机网络概论|青训营笔记
前言 & 课程介绍
课程目标和收益
• 建立对计算机网络的整体认知,对计算机网络中的各种概念(网络分层、网络协议、网络应用等)有初步的理解。 进而可以在后续的实际工作中能高效解决网络问题。
课程内容
• 通过一个示例建立对计算机网络的整体认识 • 建立对网络协议分层的认知 • 分析HTTP1、2、3的关系 • 介绍CDN运行的基本原理 • 了解网络安全的最基本原则
分析方法
• 自底向上 • 从简单开始,逐渐变复杂 • 将模块逐步拼凑成一个系统 • 自顶向下 • 从复杂开始,逐渐变简单 • 从复杂的系统问题入手,拆分为模块问题
蟹堡王帝国
•一个富含计算机网络思想的故事
•三步走战略
•在比奇堡开通外卖
•在北京和上海开分店
•在全国开分店并开通外卖
小结
•蟹堡王顾客:客户端
•蟹堡王分店:服务端
•小区转发点和蟹包王城市转发分店:路由器
•转发表格:网络协议
计算机网络基础
网络组成部分
•主机:客户端和服务端
•路由器
•网络协议
网络结构:网络的网络
比奇堡和小区网络:本地网络
•本地网络(Local Area Network,简称 LAN)是指一个相对较小的地理范围内(例如家庭、学校、公司或办公楼)的计算机和其他设备通过网络媒介相互连接的系统。本地网络的主要目的是实现这些设备间的资源共享、数据传输和通信。
本地网络的典型特点包括:
•范围有限:通常覆盖一个较小的地理区域,如同一栋建筑物或一个园区。
•高速传输:相较于广域网(WAN),本地网络内的数据传输速度通常较快。
•私有所有:本地网络通常由组织或个人拥有和管理。
•设备多样:本地网络内可能包括计算机、打印机、服务器、网络存储设备等各种设备。
•通信协议:本地网络通常使用 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.**电路交换**(Circuit Switching): 电路交换最早用于电话系统,主要用于语音通信。在电路交换中,通信双方之间建立一条固定的、专用的物理通信路径。在通话过程中,这条路径会一直被保留,直到通话结束。数据沿着这条路径顺序传输。
电路交换的主要特点和缺点如下:
•确保了连续性:由于通信双方之间有一条专用的通信路径,因此数据传输具有连续性和实时性,适用于实时通信,如电话通话。
•低效:在通信过程中,即使没有数据传输,通信路径也会一直被占用。这可能导致资源浪费,尤其在数据传输量不大的情况下。
•通话建立时间较长:在建立通话之前,需要为通信双方分配一条物理路径,这个过程可能需要较长的时间。
2.**分组交换**(Packet Switching): 分组交换是现代计算机网络(如互联网)中主要使用的通信技术。在分组交换中,数据被切分成多个数据包(或称分组),每个数据包独立传输。数据包在网络中根据最佳路由选择相应的路径,最终在目的地重新组装成原始数据。
分组交换的主要特点和优点如下:
•高效:数据包在网络中独立传输,可以根据网络拥塞情况动态选择最佳路径。这样可以实现更高效的资源利用和更快的数据传输速率。
•弹性:由于数据包可以通过不同的路径传输,因此分组交换网络具有较强的抗干扰能力和容错性。
•适用于多种应用:分组交换可以处理多种类型的数据(如文本、图像、音频和视频),非常适合复杂的计算机网络应用。
[ 电路交换和分组交换是两种截然不同的通信技术。电路交换主要用于实时通信,如电话系统,而分组交换则广泛应用于现代计算机网络,如互联网。分组交换具有更高的资源利用率和更强的适应性,因此在大多数场景下,分组交换是更优的选择。]
网络分层
计算机网络的七层结构通常指的是 OSI(Open Systems Interconnection)模型,即开放式系统互联模型。OSI 模型是一个用于描述网络协议的分层架构,它将网络通信过程划分为七个层次,每层负责处理不同的通信任务。从底层到顶层,这些层次分别是:
1.物理层(Physical Layer): 物理层负责处理与物理介质(如电缆、光纤等)相关的通信任务,包括数据的比特流传输、信号编码、硬件接口等。在这一层,数据以比特(bit)为单位进行传输。
2.数据链路层(Data Link Layer): 数据链路层负责建立、维护和断开数据链路,以确保从源到目的地的可靠数据传输。此外,数据链路层还负责进行错误检测和流量控制。在这一层,数据以帧(frame)为单位进行传输。
3.网络层(Network Layer): 网络层负责处理网络寻址和路由选择,以确定数据包从源节点到目的节点的最佳路径。网络层使用 IP 地址进行寻址。此外,网络层还负责处理分组和重组数据包。在这一层,数据以数据包(packet)为单位进行传输。
4.传输层(Transport Layer): 传输层负责提供端到端的通信服务,包括数据的分段、传输、重组和确认。传输层还负责处理流量控制和差错控制。常见的传输层协议有 TCP(传输控制协议)和 UDP(用户数据报协议)。
5.会话层(Session Layer): 会话层负责建立、管理和断开网络中的通信会话。会话层通过会话标识符来区分不同的通信会话,以确保数据流向正确的目的地。
6.表示层(Presentation Layer): 表示层负责处理数据的表示和编码问题,以确保发送方和接收方的数据格式兼容。此外,表示层还负责进行数据加密和解密、数据压缩和解压缩等操作。
7.应用层(Application Layer): 应用层是网络协议栈的最顶层,负责处理与特定应用程序相关的通信任务。应用层协议通常与用户直接交互,例如 HTTP(超文本传输协议)、FTP(文件传输协议)和 SMTP(简单邮件传输协议)等。
[ 通过将网络通信过程划分为七个层次,OSI 模型有助于简化网络协议的设计 字节课程这里主要关注上三层网络分层的部分,且这里说的是五层。 在实际应用中,网络模型经常会简化为五层模型。五层模型与 OSI 七层模型的主要区别在于它将会话层、表示层和应用层合并为一个层次,并将物理层和数据链路层合并为一个层次。]
1.物理层和数据链路层(Physical and Data Link Layers): 这个层次结合了 OSI 模型中的物理层和数据链路层,负责处理数据链路的建立、维护和断开,以及物理介质上的比特流传输和信号编码等任务。
2.网络层(Network Layer): 网络层与 OSI 模型中的网络层相同,负责处理网络寻址和路由选择,以确定数据包从源节点到目的节点的最佳路径。
3.传输层(Transport Layer): 传输层与 OSI 模型中的传输层相同,负责提供端到端的通信服务,包括数据的分段、传输、重组和确认。传输层还负责处理流量控制和差错控制。
4.应用层(Application Layer): 这个层次结合了 OSI 模型中的会话层、表示层和应用层,负责处理与特定应用程序相关的通信任务,以及数据的表示和编码问题。
[ 五层模型在实际应用中非常常见,因为它相对于七层模型更加简洁,同时涵盖了网络通信的主要功能。五层模型的应用可以简化网络协议的设计和实现,便于网络设备和协议的互操作。]
-快递员(快递公司类比应用层)不关心包裹内容
-卡车司机(类比传输层)不关心车厢里拉的是什么
-高速公路(类比网络层)不关心开的什么车
网络协议
网络基础协议是指在计算机网络中实现各种功能的一组规定,这些规定描述了数据在网络中的传输方式、格式和处理过程,这里列出一些常见的计算机网络协议。
•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 可以保护数据的完整性和隐私,防止窃听和篡改。它们广泛应用于安全敏感的场景,如在线支付、登录验证等。
[ 协议的存在依赖于连接 协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。]
标头和载荷
在计算机网络中,数据通常按照协议的格式进行封装和传输。一个数据包或帧通常分为两部分:标头(Header)和载荷(Payload)。标头和载荷分别承担不同的作用,共同实现数据在网络中的传输和处理。
1.标头(Header): 标头是数据包或帧的开头部分,包含了用于处理和传输数据的控制信息。标头中的信息根据不同的协议和网络层次而有所不同。一般来说,标头包含了如下信息:
•源地址和目的地址:标头中通常包含了发送方和接收方的地址信息,如 IP 地址、MAC 地址等。这些地址信息用于确保数据正确传输到目的地。
•协议类型:标头中还包含了协议类型信息,以标识数据包属于哪个协议。这有助于网络设备正确处理和转发数据包。
•序列号和确认号:对于面向连接的协议(如 TCP),标头中还包含了序列号和确认号,用于实现可靠数据传输和流量控制。
•校验和:标头中通常包含了校验和信息,用于检测数据在传输过程中是否发生错误。
•其他控制信息:标头中还可能包含其他控制信息,如数据包的生命周期、优先级、标志位等。
2.载荷(Payload): 载荷是数据包或帧的主体部分,包含了实际要传输的数据。载荷的内容根据不同的应用和场景而有所不同。例如,在传输文件时,载荷中包含了文件的内容;在传输网页时,载荷中包含了 HTML、CSS 和 JavaScript 等网页元素。
在数据传输过程中,数据包或帧会经过多个网络层次。每个层次都可能为数据添加自己的标头,形成嵌套的结构。这种嵌套结构有时被称为“封装”(Encapsulation)。当数据到达目的地时,每个网络层次会依次去除相应的标头,还原出原始的数据。这个过程被称为“解封装”(Decapsulation)。
了解标头和载荷的概念有助于理解计算机网络中数据包的结构和传输过程。在网络调试和故障诊断时,分析标头中的信息对于定位问题和解决问题具有重要意义。
网络安全
机密性:攻击者无法获知通信内容
完整性:攻击者对内容进行篡改时能被发现
身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密和非对称加密
对称加密:加密、解密用同样的密钥
非对称加密:加密、解密使用不同的密钥(公钥和私玥),而且公玥加密只能用私玥解密、私玥加密只能用公玥解密
密码散列函数(哈希函数)
•输入:任意长度的内容
•输出:固定长度的哈希值
•性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的。
机密性
-加密需要加密算法和密钥等信息(统称为秘密信息)
-网络是明文的,不安全
完整性和身份验证
**完整性和身份验证互相关联**
•蟹老板向银行发起了转账请求
•银行需要确认
o这个请求真的是蟹老板发起的
o目标账户和转账金额没有被篡改
如何实现机密性
•已知:网络是明文的
•如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
•所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息,意思就是我们想要通过明文来交换密钥,就得有不会被攻击者知道的秘密信息
如何实现完整性
•密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
•有明文m,密码散列函数H
•计算H(m)获得哈希值h
•将m和h组合成新信息m+h
•接收方拆分m+h,重新计算H(m)得h',对比h'和h,想要实现完整性,通信双方需要先有秘密信息
如何实现身份验证
•签名:用于鉴别身份和防止伪造
•非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
•蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
•海绵宝宝使用蟹老板的公钥进行解密,获得原文
•保证了机密性、完整性和身份验证
[下面以一二点会形成套娃,所以我们最后需要有一个大哥站出来说够了,就到这里,这个大哥就是根证书,也就是套娃链(证书链)的尽头。]
网络安全:HTTPS
把HTTP的明文换成密文,再验证身份,即HTTPS。
-
HTTPS=HTTP + TLS TLS=身份验证 + 解密 身份验证靠PKI服务端身份验证靠PKI,客户端身份验证靠HTTP协议。
小结
•网络安全三要素:机密性、完整性和身份验证
•在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
•PKI保证了普通用户不需要“面对面”和根证书机构交换根证书
•HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠
•HTTP协议实现