ComputerNetwork | 计算机网络
CLC: TP393
Dewey 004.6
计算机网络与通讯
вычислительная сеть, δίκτυο υπολογιστών, コンピュータネットワーク, 컴퓨터 네트워크, mạng máy tính (網𢵯省), เครือข่ายคอมพิวเตอร์, computer network, Rechnernetz, red de computadoras, கணினி வலையமைப்பு
课程:Stanford CS144,MIT 6.829
- 1.1 互联网概述
- 概述
- 互联网
- 计算机网络
- 互连网(小写 internet or internetwork):网络通过路由器互连
- 重要特点
- 连通性
- 共享
- 互联网服务提供者 ISP (Internet service provider)
- 主干ISP、地区ISP、本地ISP
- 互联网交换点 IXP (Internet exchange point)
- 概述
- 1.2 互联网基本原理
- 从工作方式分两块
- 边缘部分か资源子网
- 核心部分か通信子网
- 互联网最复杂部分
- 起重要作用时路由器,实现分组交换的关键设备
- 交换:按某种方式动态分配传输线路的资源
- 电路交换
- 使用交换机
- 面向连接
- 阶段:建立连接、通信、释放连接
- 缺点:突发性导致通信线路利用率低
- 分组交换
- 主要过程:发送端分报文为较短、固定长数据段,前面加首部为分组(packet),以之为传输单元依次发到接收端,接收端剥去首部还原为报文
- 优点:高效、灵活、迅速、可靠
- 可靠——网络的生存性:部分节点或链路摧毁时仍可畅通
- 带来的问题:排队带来时延和丢弃,首部造成开销
- IP不提供可靠服务
- 报文交换:时延长,已不用,也是存储转发原理
- 电路交换
- 从工作方式分两块
- 1.3 计算机网络概述
- 定义
- 要点:资源共享、独立功能、网络协议
- 从交换功能分类:电路交换、报文交换、分组交换、混合交换
- 从网络传输技术分类:点对点式网络(线路连结一对)、广播式网络(公共信道)
- 从网络的作用范围分类:个人局域网(PAN, personal area network)、局域网(LAN, local)、城域网(MAN, metropolitan)、广域网(WAN, wide)
- 网络的基本功能:资源共享、数据通信、增加可靠性、提高处理能力
- 网络的拓扑结构
- 拓扑结构:所有链路和设备相互关系的几何表示
- 基本网络拓扑:总线、星型、环型、网状
- 网络的性能指标:速率、带宽、吞吐率、时延、时延带宽积(以比特为单位的链路长度)、往返时间(RTT)、利用率
- 时延(delay or latency):两端间传时间
- 组成:发送时延、传播时延、处理时延、排队时延
- 时延(delay or latency):两端间传时间
- 定义
- 1.4 计算机网络体系结构
- 要高度协调。分层把庞大复杂问题转化为较小局部
- 计算机网络体系结构是计网各层及其协议的集合,是其功能的精确定义
- OSI/RM模型 开放系统互连基本参考模型(open sys interconnection reference model),简称OSI模型,也称七层模型
- 分层的优缺点
- 优点:各层独立、灵活性好、结构可分隔开、易于实现和维护、能促进标准化工作
- 缺点:降低效率;有些功能在不同层次重复出现带来额外开销
- 网络协议(network protocol):为进行网络中的数据交换建立的规则、标准或约定
- 三个组成要素:语法、语义、同步
- OSI模型
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
- 各层功能概要
- TCP/IP模型(transmission control protocol/internetworking protocol),目前Internet所用
- 实际上是一个协议族,每一层许多协议,TCP和IP是主要俩
- 各层功能
- 五层协议的体系结构
- 模型
- 模型数据流与首部
- 功能:通信介质的规范、信号的编码与调制、接口标准、线路复用、电路交换等
- 2.1 数据通信的基础知识
- 数据通信系统包括的部分:源系统(か发送端、发送方)、传输系统(か传输网络)、目的系统(か接收端、接收方)
- 实际的信道:带宽受限、有噪声、干扰和失真
- 通信相关基本概念
- 信道:某方向传输信息的媒体
- 单向通信(单工通信)
- 双向交替通信(半双工通信)
- 双向同时通信(全双工通信)
- 频率:信号每秒震荡周期数。介质能容纳信号频率有范围
- 带宽(bandwidth):介质能传送的最高低频率差,物理特性也
- 基带信号(基本频带信号):信源からの。往往有很多低频甚至直流成分,许多信道不能传输,故调制(modulation):
- 基带调制か编码(coding):仅变换基带信号の波形,适应信道,完了仍是基带信号
- 带通调制:用载波(carrier)把频率搬到较高频段,转模拟信号???,适应信道
- 信噪比:信号平均功率比噪声均功率,取分贝
- xzb(dB) = 10log_10 (S/N)
- (几个十倍,再乘十)
- 通信相关定理
- Nyquist:无噪声,介质传输最大频率f,则接受王只要2f频率采样可完整重现
- Shannon:带宽受限且有高斯白噪声干扰的信道的极限、无差错信息传输速率(香农公式)
- C=W×log_2 (1+S/N) bps
- W 为信道带宽(Hz)
- 2.2 传输介质
- 分类
- 按介质特性:金属导体(双绞线、同轴电缆)、透明玻璃或塑料绳(光导纤维)、空气
- 按某:有线介质、无线介质
- 2.2.1 双绞线(twisted-pair cable)
- 概述:两根相互绝缘铜线,螺旋状绞一起抵消噪声
- 分类,按是否屏蔽
- 屏蔽双绞线(STP, shielded twisted-pair):几对双绞线外用铜编织网或金属箔包上,有的每对双绞线外有金属箔
- 非屏蔽双绞线(UTP, unshielded twisted-pair)
- 优点:便宜、使用简
- 分级或分类,按电气特性
- (各种带宽)
- (几对几芯,比如2对4芯、4对8芯,就是对数和根数吧)
- UTP的连接头
- 各线的功能。8针脚,一半不使用。
- 作り方
- 2.2.2 同轴电缆(coaxial cable)
- 概述:内导体铜质芯线、绝缘层、网状编制的外导体屏蔽层、(再来个绝缘层、)保护塑料外层。屏蔽网故抗干扰能力好
- 2.2.3 光纤
- 概述:网络传输介质中性能最好、前途最广。用光脉冲形成的数字信号,带宽大,不受电磁干扰。
- 结构:透明石英玻璃拉细丝作纤芯,&包层(低折射率)、吸收外壳、防护层。
- 其中传输方式是不断全反射。从纤芯射到纤芯表面的入射角大于一定值便可全反射。
- 分类
- 多模光纤:多条不同入射角度光线
- 单模光纤:直径减小到只有几个光波长,就像波导使一直向前不多次反射(脉冲也不变形)
- 连接头
- 优点
- 容量大;损耗小中继距离长;抗电磁干扰;无串音干扰,保密性好;小轻
- 2.2.4 无线传输介质
- 电磁波频谱
- 无线通信波段
- 电磁波传播方法:地面传播(描地)、天空传播(反射)、视线传播(直线)
- 微波传输:几乎直线,可用蝶形天线集中到一小束
- 方式:地面微波接力通信、卫星通信(中继站在卫星)
- 分类
- 2.3 数字传输和模拟传输
- 转换
- 数字👉数字:编码
- 模拟👉数字:数字化
- 数字👉模拟:调制
- 数字信号常用的编码方式:不归零制、归零制、曼彻斯特(01中间皆跳)、差分曼彻斯特(0跳1顺)
- 模拟信号的数字化——数字传输
- 数字信号易于减少噪声
- 有限个离散值に转
- 脉冲编码调制(PCM, pulse code modulation)为常用。
- 四个过程:脉冲振幅调制(PAM, pulse amplitude modulation)(时间离散)、量化(振幅离散)、二进制编码、数字-数字编码
- 规定采样频率、每个采样几个比特位
- 数字信号の调制——模拟传输
- 数字信号的方波频谱宽、低频部分多,故抵偿本远距离通信要调制。用基波承载
- 调制机制,四种:
- 振幅键控(ASK, amplitude shift keying):每波特振幅有别
- 频移键控(FSK, frequency shift keying):每波特频率有别
- 相移键控(PSK, phase shift keying):每波特相位有别
- 4-PSK:波特4种,故每波特2位
- 正交调幅(QAM, quadrature amplitude modulation):现在多用。同时改幅相。每信号(波特)8(8-QAM)、12、15(ADSL所用)比特
- 转换
- 2.4 复用技术(multiplexing):允许一条线路传输多个信号
- 频分复用(FDM, frequency-division multiplexing)
- 模拟信号用
- 所有用户,同样时间,不同的频段资源
- 调制器(modulator。载波频率不同)👉相加👉传播👉带通滤波器👉解调器(demodulator,也那个载波频率)👉基带信号
- 时分复用(TDM):不同时间相同频带宽度。保持信号物理上的独立性,逻辑上结合
- 分类
- 同步TDM:每用户固定时间窗
- 异步TDM,か统计TDM:每一帧的每一个位置谁都可以用,写自己的名字
- 分类
- 波分复用:就是光的频分复用,一根光纤多个光载波信号
- 码分复用
- 频分复用(FDM, frequency-division multiplexing)
- 2.5 宽带接入技术
- 米联邦通信委FCC认为双向速率之和超200kbps即宽带
- 目前常用的有限宽带上网方式:
- 电话线:xDSL
- 有线电视:有线通(cable modem)
- 光纤:FTTx
- 电力线:PLC
- 2.5.1 xDSL 技术:利用数字技术对现有模拟电话用户线进行改造,使可承接宽带
- DSLは数字用户线(digital subscriber line)。x表示不同前缀表示DSL上实现的不同宽带方案
- xDSL 进来的线路连接到不同于电话的交换机,没有滤波器因而发挥本地回路全部承载能力
- ADSL调制技术:采用DMT(discrete multiTone,离散多音调频)调制解调技术,频带分为256子信道
- ADSL数据率:不保证固定的数据率,看用户线具体条件,会自适应使尽可能高
- ADSL组成、接入方式(低通来通话,高通宽带数据)
- 2.5.2 光纤同轴混合网 HFC(Hybrid Fiber Coaxial):基于目前覆盖面很广的有线电视网CATVな居民宽带接入网
- 除可传送CATV还提供电话、数据和其他宽带交互型业务
- 现有的CATV是树形拓扑ナ同轴电缆网络,用模拟技术的频分复用,单向传输电视节目
- HFC将CATV的同缆换为光纤,使用模拟光纤技术(采用光的振幅调制AM,比数字光纤更经济)
- 结点体系结构:主干光纤,末端有的经光电转换转同轴电缆,再小区へ
- 有线电视电缆频率分配
- cable modem か 线缆modem,是为HFC网使用的调制解调器
- 2.5.3 FTTx 技术(Fiber To The x,光纤到x)
- 光纤到哪
- 光纤到家FTTH (home):一直铺设到用户家庭,终极方案
- 光纤到大楼FTTB (building):进大楼转换为电信号,然后电缆或双绞线
- 光纤到路边FTTC (curb):路边到各用户可用星型结构双绞线
- 无源光网络PON:局端(有光线路终端OLT)👉光配线网(ODN。有光分路器)👉用户端(有光网络单元ONU)
- 光纤到哪
- 2.5.4 PLC 技术:电力线通信(power line communication),利用输电和供电的电力线进行高速数据传输
- 设备
- 局端:负责与内部PLC调制解调器的通信和与外部网络的连接
- 调制解调器
- 优点:成本低;范围广;较高速率;永远在线(即插即用,接入电源就等于接入网络);便捷(有电源插座的地方就能上网)
- 缺点:噪声大、安全性低;是一种共享宽带技术,速度决定于当时用户数
- 设备
- 数链层使用的信道
- 点对点信道:一对一
- 广播信道:一对多,必须用专用的共享信道协议(多路访问协议)协调数据发送
- 3.1 数据链路和帧
- 链路(link):点到点物理线路段,没有交换结点。是通路的组成部分
- 数据链路(data link):除了物理线路,还有通信协议控制数据传输,实现它的软硬件
- 最常是用适配器(网卡)实现这些协议的软硬件
- 一般适配器都包括物链两层功能
- 帧:链层传的是帧
- 帧管理构成叻链层工作的核心
- IP数据报装入/取出自帧
- 封装成帧(framing):数据前后分别加首部尾部,构成帧,确定帧的界限
- 首部尾部一个重要功能は帧定界
- 用控制字符进行帧定界:最前SOH(start of header),最后EOT(end of transmission)
- 透明传输:转义字符ESC,用于原始数据恰好含SOH, EOT, ESC时放它前面
- 差错检测
- 检错:检测出信息的改变,多数情况丢弃并通知重发
- 纠错:检测到错误可以纠正而不用重发的能力
- 检错采用冗余技术,即信息加上附加比特,通讯中的冗余技术有
- 奇偶校验(parity checking):校验位使1的总数是偶数(或奇数),只要改变的总比特数是奇数就能检
- 循环冗余校验(CRC, cyclr redundancy check):基于二进制除法,数据单元末尾附加一串冗余比特(CRC码)
- 链层传送的帧广泛采用
- 原数据单元,后n位是0;用n+1除数除,余数是CRC;接收方把数据再除应得到余数是0
- 检错能力:所有影响奇数位的,所有长度小于等于CRC多项式阶数的,一定概率检测出长度r+1的错误,一定概率检测出大于r+1
- 校验和(checksum):高层协议使用的通常为校验和
- 正确接受结果是0
- 注意:仅采用CRC只能做到无差错接收(接受的都可以认为是无差错),但可靠传输(发什么就收什么)还需要确认和重传机制
- 3.2 点对点协议 PPP:点对点线路中最广泛
- 首部:标志字段F、地址字段A(实际没用)、控制字段C、协议字段(表示IP数据报、网络控制数据、PPP链路控制数据、鉴别数据)
- 尾部:FCS、F
- 透明传输:同步传输时用硬件完成比特填充,异步用字符填充法
- 字符填充:都是用0x7D开头的二字节序列,替换信息中出现F、0x7D、ASCII码控制字符
- 零比特填充(用在SONET/SDH链路时,使用同步传输,即一连串比特连续传送,用此):连续5个1则立即填0,接收端每有连续5个1删后接的0(6个1会被认为是标志字段F)
- 特点:简单的点对点;不可靠没有差错控制(帧检验序列FCS保证无差错接受;因为IP也不保证可靠传输所以PPP没必要差错控制)
- 3.3 多路访问协议
- 广播信道也叫多路访问信道
- LAN中,发送方数量多且多变,流量是突发性,所以FDM, TDM不适用
- 多路访问协议分类
- 随机访问协议:ALOHA, CSMA, CSMA/CD, CSMA/CA
- 受控访问协议:reservation, polling, token passing
- 通道化协议:FDMA, TDMA, CDMA
- ALOHA
- 有数据要发送就发送,碰撞/冲突就等待随机时间后重试
- 多个无协调关系竞争单个共享信道的系统适用
- 中枢收到了就用一个不同频率(不干扰进入信号)发确认,站点没收到确认就等重发
- 优点:简单性,传输量不多时很好
- CSMA协议(载波侦听多路访问,carrier sense multiple access)
- 载波侦听:站点监听是否有载波(即有传输),检测到空闲才发送
- CSMA/CD 协议(带冲突检测的载波侦听多路访问,carrier sense multiple access with collision detection)
- 整个传输过程继续监听,检测到冲突就放弃并等待随机时间
- CSMA/CA(CSMA with collision avoidance, 冲突避免):无线产品的适配器不易检测信道的冲突,所以一个无线访问接入点(AP, access point)控制对介质的所有访问,保证只有一个发
- 令牌传递:每个站点只有在轮到自己才发,每次也有时限
- 3.4 以太网(ethernet)
- DIX Ethernet V2 与IEEE802.3支持的LAN标准差别很小,802.3局域网可以简称为以太网
- 3.4.1 以太网的工作原理
- 802委员会把链层拆成媒体接入控制子层(MAC)と逻辑链路控制子层(LLC),分别与传输媒体有关、无关
- TCP/IP一般用DIX Ethernet V2而不是802.3,所以802制定的LLC作用不大,很多适配器只有MAC协议
- 网卡か通信适配器(adapter)か网络接口卡(NIC, network interface card)
- 功能:串行并行切换(I/O总线出来并行的);缓存数据;实现以太网协议
- 差错帧直接丢弃,别的等高层。尽最大努力的交付。
- CSMA/CD 协议
- 的以太网不能实现全双工,只能半双工。发送后一段时间有碰撞可能额(检测最久要端到端传播时延的两倍)
- 要点
- 准备发送
- 检测信道。96比特保持空闲(保证了帧间最小间隔)就发送
- 检查碰撞:争用期内检测到碰撞,立即停止,按规定发送认为干扰信号,适配器执行指数退避算法,r倍512比特时间等待;重传16次不成功则停止重传,报错
- 3.4.2 传统以太网的连接方法
- 可使用的传输媒体:铜缆(粗缆或细缆)、铜线(双绞线)、光缆
- 10 BASE 5: 10 Mbps, Baseband(digital), 500m (2-185m, T-双绞线, F-光纤)
- 10 BASE T 双绞线以太网的出现是局域网发展史的里程碑
- 通信距离稍短
- 对应星型网出现,降低成本,提高可靠
- 集线器:使用电子器件模拟实际的电缆线的工作,因此整个系统仍然像一个传统的以太网一样运行
- 集线器像多端口转发器,工作在物理层
- 使用集线器的以太网,逻辑上仍是一个总线网,各工作站还是CSMA/CD协议
- 3.4.3 以太网的 MAC 帧格式
- 首部:目的地址、源地址、类型(标志上一层协议)
- 尾部:FCS
- 另外,物理层插入8字节前同步码、帧开始定界符
- MAC层硬件地址
- 局域网中,硬件地址か物理地址かMAC地址,48bit
- 路由器同时连接两个网络,因此两个适配器、两个硬件地址
- 适配器从网络收MAC帧,先硬件检查MAC地址,本站的才收下否则丢弃
- 发往本站的包括:单播、广播、多播
- 无效的MAC帧
- 表现为
- 丢弃
- 帧间最小间隔:对传统10Mbps以太网为9.6μs即96bit的发送时间,检测到总线空闲后这么久才能发,是为了让刚接受的缓存来得及清理,做好接收准备
- 3.4.4 100BASE-T 以太网
- 高速以太网:达到或超过100Mbps者
- 特点:可在全双工方式工作而无冲突,此时不用CSMA/CD;帧间间隔时间更小
- 物理层标准
- 3.4.5 千兆以太网
- 允许在1Gbps写全双工或半双工,全双工方式通过交换机进行点到点传输,半双工CSMA/CD协议
- 向后兼容
- 物理层
- 3.4.6 10G比特以太网
- 只使用管线
- 只工作在全双工
- 更快的以太网:10GE, 40GE/100GE
- 3.4.7 以太网宽带接入
- 特点:端到端以太网传输不需要帧格式转换;不支持鉴别用户身份
- PPPoE(在以太网上运行PPP,PPP over Ethernet)
- FTTx都是用PPPoE接入,光猫到ISP之间PPPoE协议通信
- ADSL,用户电脑到ADSL Modem之间是以太网,ADSL Modem到ISP端Modem用PPPoE
- 3.5 扩展局域网
- 局域网互联设备有中继器、集线器、网桥、交换机,不同层次
- 中继器(repeater)か再生器,重新产生信号,来扩展局域网覆盖区域
- 集线器(HUB),有集线与中继功能,简单转发至其他端口,同一时刻只能一个用户,只能连接速率相通的端口
- 网桥(bridge),在数据链路层,根据MAC帧目的地址转发收到的帧,有过滤功能,
- 不改MAC地址
- 优点:过滤通信量;扩大物理范围;提高可靠性;可互联不同物理层、不同MAC子层、不同速率局域网
- 缺点:存储转发增加时延;不同MAC子网的网段桥接在一起时延更大;无法隔离广播风暴
- 乄集线器:集线器转发不需要检测传输媒体,网桥转发前先CSMA/CD算法
- 桥接不同网络,的一些问题:帧格式;速率不同;最大帧长度不同;安全问题;服务质量
- 帧首部在标准间转换
- 交换机(switch):实质上是多端口的网桥
- 特点:端口直接连主机,一般全双工;并行性,同时多对端口;通信皆独占媒体,无碰撞传输;缓存;即插即用,帧交换表是自学习建立;硬件转发很快
- 交换机自学习和转发帧
- 自学习:交换表中有无匹配,没有接增加,有就更新(进入口、有效时间)
- 转发真:交换表有无匹配,无向所有其他
- 虚拟局域网(VLAN, Virtual LAN)
- 一些局域网网段构成,与物理位置无关的逻辑组
- 限制了接收广播信息的工作站数,使网络不会因传播过多广播信息恶化
- 划分
- 静态VLAN:基于端口
- 动态VLAN:基于MAC地址、子网、用户
- 帧格式:以太网帧格式里插入4字节标识符,即VLAN标记,标识哪一个VLAN
- 4.1 IP 协议
- TCP/IP体系中两个最主要的协议
- 与IP配套还有四个协议:地址解析协议ARP(address resolution protocol)、逆地址解析协议RARP(reverse address resolution prot.)、因特网控制报文协议ICMP(Internet control message prot.)、因特网组管理协议IGMP(Internet group management prot.)
- IP协议使性能各异的网络从用户看是统一网络
- 4.1.1 分类的 IP 地址
- IP地址:整个互联网单一抽象,IP地址是每个连接在互联网的主机或路由器的世界唯一32bit标识符
- 点分十进制记法提高可读性
- IP地址编址方法
- 分类的IP地址:最基本
- 划分子网:对最基本方法改进
- 构成超网:比较新的无分类编址方法
- IP地址分类方法
- A类,0始,三字节主机号
- B,10始,2字节主机号
- C,110始,1字节
- D,1110始,后面multicast address
- E, 1111始,后面reserved for future use
- 特殊IP地址
- 网络号任,主机号全0,标识一个网络,主机号全1直接广播;网络号127本机回送地址
- IP地址一些重要特点
- 分网络、主机两个等级,分配方便,路由器仅根据网络号转发
- 一台主机或路由器连接两个网络要两个IP地址,网络号不同
- HUB或网桥连起来的局域网还是一个网络
- IP地址:整个互联网单一抽象,IP地址是每个连接在互联网的主机或路由器的世界唯一32bit标识符
- 4.1.2 IP 地址与硬件地址
- 链路层及以下用硬件地址,网络层及以上用IP
- 4.1.3 地址解析协议 ARP:从网络层IP地址解析硬件地址
- 主机有ARP高速缓存(ARP cache),有所在局域网各主机和路由器IP到硬件映射,和地址映射有效时间
- 广播ARP请求分组
- 收到请求分组就把里面IP、硬件映射写到自己ARPcache
- 4.1.4 IP 数据报的格式
- 首部+数据。
- 首部:固定长度+可选字段
- 固定部分:版本、首部长度、服务类型、总长度、标识、标志(3位,后两位MF(more fragment,还有分片,0表示最后个), DF(Don't fragment,不允许分片))、片偏移、生存时间(TTL, time to live,网络中可通过路由器数最大值)、协议、首部校验和、源地址、目的地址
- 首部与分片有关的字段:总长度、标识、MF、DF、片偏移
- 4.1.5 IP 层转发分组的流程
- 查找路由表
- 根据目的网络地址能确定下一跳路由器;特定主机路由
- 默认路由(default route)较少路由表空间、搜索时间
- 分组转发算法:提取目的地址,与路由器直接相连则给,否则路由表下一跳,否则默认
- 查找路由表
- 4.2 划分子网和构造超网
- 网络早期,IP地址设计问题:地址空间利用率;每个物理网络一个网络号太大;两级IP不够灵活
- 划分子网(subnetting):子网号字段,使变成三级IP地址
- 子网掩码(subnet mask),方便找出IP地址的子网部分,32位,一位=1表示IP中对应位网络号和子网号,=0则对应位主机号
- IP地址 AND 子网掩码 = 网络地址
- ABC类默认子网掩码
- 是网络的重要属性:路由器交换信息要说;路由表每个项目都要给子网掩码;
- 子网划分方法:固定长度子网、变长子网
- 子网下路由器转发分组的算法:提取目的IP,子网掩码与相AND得网络地址,有就直送,否则;特定主机路由;网络;默认路由
- CIDR 无分类编址(无分类域间路由选择, classless inter-domain routing)
- 可变长的网络前缀
- 斜线记法,后面是掩码1的个数
- 全追相通的连续IP地址组成「CIDR地址块」
- 路由聚合:CIDR地址块可以很多地址
- 利于减少路由选择信息交换
- 也叫
构成超网
(supernetting)
- 最长前缀匹配(长则地址块小则路由具体)
- 4.3 ICMP 协议(网际控制报文协议,Internet control message protocol)
- 允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP报文种类
- ICMP差错报告报文
- ICMP询问报文
- IP数据报装进ICMP
- 不应发送差错报告几种情况:差错の差错;多播;特殊地址
- 应用
- ping(packet interNet groper):测试两个主机的连通性
- ICPM风暴
- tracert 跟踪分组从源点到终点的路径
- 4.4 路由选择协议
- 理想的路由suanfa
- 最佳路由
- 路由算法的自适应性
- 静态路由选择策略か非自适应性,不能及时适应网络状态变化
- 动态路由选择策略か自适应路由选择,实现起来复杂开销大
- 分层次的路由选择协议
- 互联网采用分层次的:规模大,隐藏单位内部网络布局细节
- 自治系统AS:单一技术管理下的一组路由器
- 一种AS内部和一种AS之间路由选择协议
- 互联网有量大类路由选择协议
- 内部网关协议IGP(interior gateway prot):自治系统内,如RIP、OSPF
- 外部网关协议 EGP(external ):如BGP-4
- 路由信息协议RIP:内部网关协议中最先广泛使用
- 分布式基于距离向量
- 每个路由器维护从自己到每个网络距离记录
- 距离定义:也叫跳数
- RIP允许一条路径15路由器,超过相当于不可达
- 三个要点:仅和邻居;交换的是自己的路由表;按固定时间间隔交换信息
- 路由表的建立:刚开始只知道直连的1,此后相邻路由交换更新信息
- 距离向量算法
- 有点:实现简单、开销小
- 缺点:限制网络规模,最大距离15;路由器之间交换完整路由表;好消息传得快,坏消息传得慢
- 路由器:互联网关键设备
- 主要作用:联通不同网络;选择信息传送线路
- 分组丢弃:处理分组速率赶不上进入队列速率。一大主要原因,输入输出溢出
- 4.5 IPv6 协议
- 主要变化:大地址空间;扩展地址层次结构;灵活首部;改进选项;允许扩充;即插即用(自动配置,不用DHCP);支持资源预分配;8字节对齐,首部8字节整数倍
- 数据报一般格式
- 基本首部
- 有效载荷か净负荷,允许多个扩展首部
- 通信量类(traffic class):为了区分不同IPv6数据报类型、优先级首先区分两大业务量——收拥塞控制的业务量と不受
- 不受拥塞控制的业务量:拥塞时不能进行速率调整的姑娘
- 流标号(flow label)20位,流式网络上特定源点到特定终点一系列数据报,流经过每一个路由器保证指明的服务质量
- 扩展首部
- 途中经过的路由器不处理
- 六种:逐跳选项、路有选择、分片、认证、加载安全负载、目的站选项
- 目的地址:三种基本类型:单播、多播、任播(目的站一组计算机,只交付其中一个,通常最近个)
- 地址格式:冒号十六进制,冒号分隔,允许零压缩;点分十进制记法
- IPv6地址分类:未指明、环回、多播、本地链路单播、全球单播
- 要向后兼容
- 双协议栈
- 部分主机、路由器两个协议栈
- 隧道技术:路由器把包装成IPv4,走传统路径一直到
- 双协议栈
- 4.6 虚拟专用网络 VPN (virtual private network)
- 公司内网使用专门地址
- 专用地址か本地地址か保留地址か私有地址:仅在单位内部称专用网
- 路由器一律不转发
- 全球地址:全球唯一,ISP分配
- 采用这样专门IP地址的互连网乘
- 公网作为机构专用网通信载体,称虚拟专用网VPN(virtual private network)
- 通常VPN数据加密
- 远程接入VPN(remote access VPN)
- 利用隧道技术实现虚拟专用网:加个外部网的首部
- 网络地址转换NAT(network address translation)
- 专用网到全球地址
- 网络地址与端口号转换NAPT(network address and port translation)
- NAPT 地址转换表:不同地址换成统一全球地址的不同端口(LAN端,WAN端)
- OSI和TCP-IP参考模型の核心,提供独立于具体网络、可靠的端-端数据传输
- 链层:结点到结点
- 网层:主机到主机
- 输层:进程到进程
- 5.1 传输层概述
- 功能:
- 提供应用进程间的逻辑通信
- 差错检测
- 两种传输协议
- 无连接的用户数据报协议(UDP, user datagram protocol)
- 传之前不用连接;单位是UDP报文或用户数据报;不需要确认;不提供可靠交互但些况最有效
- 面向连接的传输控制协议(TCP, transmission control protocol)
- 面向连接;单位是TCP报文段(segment);不提供广播、多播服务;增加开销,增首部,占资源
- 无连接的用户数据报协议(UDP, user datagram protocol)
- 端口
- 用来标识进程;不同于进程标识符;16bit端口号(0~65535);只有本地意义,本计算机应用层各进程
- 类型
- 熟知端口号:统一分配控制(0~1023)
- 注册端口号:在IANA注册防重复(1024~49151)
- 临时端口号:给用户进程暂时选用(49152~65535)
- 功能:
- 5.2 UDP 协议
- 只在IP的数据报服务上加很少功能
- 端口的复用分用
- 差错检测
- 主要特点:无连接;尽最大努力交付;面向报文,应用层报文不合并不拆分;没有拥塞控制,拥塞不使发送速率降低(适合实时、多媒体)支持一对一一对多多对一多对多;首部只有8字节
- 面向报文
- 保留报文边界,加首部就给IP层;应用层多长它多长;应用程序要选择合适大小的(太长,IP层分片,太短,IP数据报首部相对太大低效)
- 首部格式
- 源端口、目的端口、长度、校验和
- 还有仅为了计算校验和的伪首部(源IP、目的IP、0、17、UDP长度)
- 应用:报文短,对报文可靠性要求不高的
- 只在IP的数据报服务上加很少功能
- 5.3 TCP 协议
- 特点:面向连接;只能一对一(点对点)(一条连接只两个端点(endpoint));可靠交付服务を提供;全双工通信;面向字节流(
流
(stream)は流入流出进程的字节序列)(指应用程序交的数据块们仅看作无结构字节流) - 面向流
- 不保证收到数据块和发出的有大小关系;字节流却必须收发同;写、读の缓存
- 注意
- 虚连接不是物理连接;根据对方接收窗口值和拥塞程度决定一个报文段的字节;可把太长的数据块划分,太短的を积累足够多的
- 首部格式
- 传输单元はTCP段,由20字节固定头、可能的选项头、数据字节
- 段长度受IP包数据域长度(最大约65535字节)及链路MTU(Maximum Transmission Unit)限制,实际以太网MTUは1500,故TCP段最大1480字节
- 源端口、目的端口、序号、确认号、头部长度、保留、URG,ACK,PSH,RST,SYN,FIN、窗口大小、校验和、紧急指针
- 特点:面向连接;只能一对一(点对点)(一条连接只两个端点(endpoint));可靠交付服务を提供;全双工通信;面向字节流(
- 5.4 可靠传输
- 理想传输条件:信道不生差错,发送方多块接收方都来得及处理
- 停止等待协议:简单的流量控制与差错控制,每发送完一个分组就停止发送等确认(ACK)后再下一个,否则超时重发;分组、ACK都是重复的底丢弃
- 注意:发了分组暂留副本备重发;分组和确认分组都要编号;超时计数器重传时间长于平均往返时间;简单,信道利用率低
- 报文发送时机:TCP维护变量最大报文段长度MSS(Maximum Segment Size),缓存数据达到MSS就组报文段;发送方可指明要求发送,即推送(push)操作;发送方计时器期限到了就缓存数据都发(还是不超MSS)
- 5.5 TCP传输连接管理
- 每一条TCP连接唯一确定于通信两端端点(即套接字,socket)
- 传输连接的阶段
- 连接建立
- 要解决的问题:确知对方存在;允许协商参数(最大报文段长度、最大窗口值、服务质量)、能对传输实体资源分配(缓存大小、连接表中的项目)
- 数据包可能丢失、重复、不按顺序
- 三次握手算法(交换三个TCP报文段)(防止失效的请求报文段到达而错) Three-Way Handshake
- 客户切SYN-SENT,发SYN=1, seq=x
- 服务器切SYN-RCVD,发SYN=1, ACK=1, seq=y, ack=x+1
- 客户切ESTABLISHED,发ACK=1, seq=x+1, ack=y+1 (注意这里没有SYN咯,就确认)
- 服务器切ESTABLISHED
- 数据传送
- 连接释放
- 传输结束后双方都可释放
- 四次挥手协议 Four-Way Handshake
- A切FIN-WAIT-1,发FIN=1, seq=u
- B切CLOSE-WAIT,发ACK=1, seq=v, ack=u+1
- 到达A后A切FIN-WAIT-2
- 被动关闭后B切LAST-ACK, 发FIN=1, ACK=1, seq=w, ack=u+1
- A切TIME-WAIT,发ACK=1,seq=u+1, ack=w+1
- A自己等2MSL关闭
- B收到FIN的ACK就关闭
- A必须等2MSL(最大报文生存时间,maximum segment life):保证A发送最后一个ACK能到达B;防止已失效连接请求报文段出现(2MSL本连接产生所有报文段皆消失矣)
- 简单总结三次握手四次挥手:握手は客 SYN 服 ACK+SYN 客 ACK,挥手は甲 FIN 乙 ACK 乙 FIN 甲 ACK。之所以三四不一,在于第二者发ACK时是否同时发SYN/FIN
- 分别发三个四个报文。最主要的标志位就是SYN/FIN和ACK。(理解本质嘛,有时候不必过于深入地关注每个报文的序列号和确认号)
- 连接建立
- 每个应用层协议解决个应用问题
- 规定应用进程通信遵循的协议
- 许多基于客户/服务器方式
- 6.1 网络计算模型
- 集中式计算模型(centralized computing):所有处理在主机
- 文件服务器模式(分散式),只适用于小规模局域网,用户多数据多就会网络瓶颈
- 分布式计算模型(distributed computing)
- 客户/服务器模式(client/server)
- 用户界面和应用逻辑在客户机,数据库服务器在服务器
- 优点:充分利用服务器高性能;流量小
- 问题:系统移植困难、对客户端资源要求高、用户界面风格不一、客户端维护困难
- 每一套信息系统要相应客户端,
胖客户端
也 - 不适应高用户量、高安全性、客户端零管理要求
- 每一套信息系统要相应客户端,
- 浏览器/服务器模式(browser/server)
- 用户界面在客户机(表现层)、应用逻辑在应用服务器(应用层)、数据库服务器在服务器(数据层)
- 优点:各层较独立,适应环境变化;数据库安全性;客户端不用专用软件只要浏览器,
瘦客户端
也;客户端零管理 - 不足:应用服务器返回的不止数据还有大量显示格式;CS、BS都有单点服务瓶颈、无法抵抗DoS攻击等问题
- P2P计算模式(peer to peer):非中央化,没有客户或服务器的状态区分;各点逻辑对等直接通信;每个节点都提供一些资源,加入的节点多则性能强(异于BS)
- 客户/服务器模式(client/server)
- 6.2 域名系统 DNS:分布式的域名系统,用以作为主机名字的层次结构的命名树
- 若干域名服务程序完成,运行域服的机器谓域名服务器
- 域名,经DNS👉IP地址,IP经ARP👉MAC地址
- 互联网的域名结构
- 层次树状结构,任何因特网主机或路由器唯一
- ... .三级域名.二级域名.顶级域名
- 从叶到根的路径,用点分开
- 域名服务器
- 一个服务器管辖的叫区(zone),每一个区有权限域名服务器(该区所有主机域名到IP地址)
- 区可≤域,如abc.com域可以分成y.abc.com, abc.com区(这样是两个权限域名服务器)
- 本地域名服务器采用迭代查询(DNS域名解析过程)
- 本机m.xyz.com找本地域名服务器dns.xyz.com,本地域服查根域名服务器、顶级域名服务器dns.com、权限域名服务器dns.abc.com以返回地址
- 名字的高速缓存:每个域名服务器维护一个,最近用过的名字,何处获得名字映射,每项内容设计时器
- 6.3 文件传输 FTP:屏蔽计算机系统的细节,适合异构网络任意计算机传送文件
- 特点
- 只提供基本服务,使用TCP可靠传输服务
- 主要功能减少不同OS处理文件的不兼容
- CS模式
- 服务进程分一个主进程、若干从属进程
- 工作过程:监听端口21;接受请求启动从属的控制进程建立“控制连接”(主进程回去等别人);客户端口令后通过控制连接 传送到控制进程;控制进程创建“数据传送进程”,通过端口20建立数据传输连接;客户端通过控制连接传送交互命令,通过数据连接接受文件数据;结束了释放俩连接,俩进程终止
- 两个端口
- 21服务器进程也,同时告诉服务器自己的另一端口号码用来数据传送
- 20服务器传送数据
- 两个端口号,数据连接控制连接不混乱,简单易实现协议
- 特点
- 6.4 电子邮件 Email
- 两个子系统
- 用户代理:本地,阅读、编辑、发发送、信箱管理
- 消息传输代理:后台的系统守护进程,系统间传递信件
- 优点:快捷,廉价,不打断工作休息
- 缺点:无法确认接收方看过;垃圾邮件尚无有效对策
- 主要组成构件:SMTP(用户代理发送到邮件服务器,邮件服务器间)、POP3(接收方邮件服务器读取到收件人用户代理)
- 简单邮件传送协议(SMTP, simple mail transfer protocol):运行在TCP上,端口25;简单命令传输邮件
- 邮局协议POP3协议,CS方式,服务器端口110,TCP连接
- WebMail:服务器间SMTP,两端都HTTP
- 通用因特网邮件扩充MIME(Multipurpose Internet Mail Extensions)
- SMTP缺点:不能传送可执行文件、二进制对象,限于ASCII码,不能超长
- MIME定义传送非ASCII,转ASCII再给SMTP
- 两个子系统
- 6.5 万维网 WWW(world wide web):数量巨大遍布全球的文档组成,这些文档はWeb页
- 分布式服务,Web服务器互相链接
- Web三要素
- URL 统一资源定位符(uniform resource locator),标识各种资源(文档)
- 相当于文件名在网络范围扩展
< URL 访问方式 >://< 主机>:< 端口>/< 路径>
- 访问方式有ftp文件传送协议, http超文本传送协议, file本地文件访问协议
- HTML 超文本标记语言(hyperText markup language),用于描述网页文档,其超链接描述资源与资源的关系
- HTTP 超文本传送协议(hyperText transfer protocol),访问资源,浏览器与Web服务器间交互
- 应用层,使用TCP可靠传输
- 基于消息,可以在异构系统间
- URL 统一资源定位符(uniform resource locator),标识各种资源(文档)
- 万维网工作过程:浏览器、服务器建立TCP链接、HTTP请求报文、HTTP响应报文、释放TCP连接
- 用户点击超链接后发生的事件:浏览器分析指向页面的URL;浏览器向DNS请求解析IP地址;DNS返回IP地址;浏览器向之的 端口80 建立TCP连接;发送取文件命令;服务器响应把文件发给浏览器;TCP连接释放;浏览器显示文件内容
- 服务器端的工作: 端口80 监听,与请求客户建立TCP连接;确定请求的web也(名字拓展);(若需要)认证客户、对其访问控制;(若需要)对请求页面访问控制;检查请求的也在否高速缓存;不在则本地磁盘读取;切丁包含在响应中的MIME类型;文件返回,日志记录;释放连接
- HTTP报文结构:两类,请求报文、响应报文
- 面向正文(text-orient),每个字段都是ASCII码串
- 三部分,开始行、首部行、实体主体
- 请求报文:客户像服务器
- 请求报文中,开始行是请求行
- 请求方法:OPTION, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
- 响应报文:服务器到客户
- 开始行是状态行:HTTP版本、状态码、解释状态码的简单短语
- 状态码与短语
- 200OK
- 301MovedPermanently
- 400BadRequest
- 404NotFound
- 505HTTPVersionNotSupported
- 在服务器放用户信息:万维网站点用Cookie跟踪,表示HTTP服务器和客户间状态信息,为用户唯一识别码
- 是个索引,很小,内容在服务器本地
- 维护状态:可设置有效期、安全性,第一次发送建立cookie,以后是以之特定动作
- HTTPS
- HTTPS 使用 TLS(Transport Layer Security)来进行加密通信。
- TLS是一种加密通信协议,用于确保在Web浏览器和服务器之间传输的数据的安全性和隐私性。
- SSL/TLS 握手过程:通常发生在TCP三次握手之后,(有人说TLS四次握手,但也经常不说几次握手)
- 步骤
- ClientHello:客户端开始SSL/TLS握手过程,发送包含所支持的加密方法、支持的SSL/TLS版本等信息给服务器。
- ServerHello:服务器回复一个ServerHello消息,确认使用的加密方法和SSL/TLS版本。
- 证书和密钥交换:服务器发送证书给客户端,客户端验证证书的合法性。然后双方通过密钥交换算法协商生成会话密钥。
- Finished:最后,双方发送Finished消息,之后传输的所有数据都使用协商出来的会话密钥进行加密。
- 步骤
- SSL/TLS 握手过程:通常发生在TCP三次握手之后,(有人说TLS四次握手,但也经常不说几次握手)
- TSL 与 SSL 的关系
- TLS 可以被看作是 SSL 的升级版,它基于 SSL 3.0,但是在安全性和效率上进行了一些改进和优化。
- HTTPS 不是“同时使用”TLS 和 SSL,而是基于其中之一来提供安全通信。在大多数现代应用中,HTTPS 通常建立在 TLS 协议之上,因为 TLS 是更新且更安全的协议。
- 虽然我们通常说的是“HTTPS”,但在实际应用中,由于 TLS 是目前更为主流和安全的选择,所以当我们说到“HTTPS”时,一般都是指“运行在 TLS 协议上的 HTTP”。
- https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。
- TLS协议实际上使用了非对称加密和对称加密两者的组合:
- 非对称加密主要用于验证通信方的身份并安全地交换对称密钥。
- 对称加密用于加密实际的数据传输,因为它相对来说计算效率更高。
- 和每个层都有关
- 物理层:防窃听、防破坏的报警装置
- 链层:链路加密
- 网层:防火墙或使用安全IP协议(IPSec)
- 输层:整个连接加密(如安全套接字层SSL,secure socket layer)
- 用层:鉴别、不可否认
- 7.1 网络安全问题概述
- 两大威胁
- 被动攻击(截获):预防(加密)
- 主动攻击(篡改、伪造、拒绝服务):可以通过鉴别技术检测
- 目标
- 数据保密性(授权和访问控制、数据加密技术)、数据完整性(防篡改)(数据加密和校验技术)、用户身份认证(账号-口令、电子证书等)、资源可用性(访问控制、防火墙、入侵检测)、不可否认性(数字签名等)
- 两大威胁
- 7.2 加密技术:网安的基础
- 密码体制
- 常规密码体制:对称密钥
- 加密解密密钥相同,简单快速,密钥分配困难
- 如 DES, 3DES, IDEA
- 公钥密码体制:不对称密钥
- 加密解密密钥不同,适合密钥分配、数字签名、鉴别,加密解密速度慢
- 如 RSA
- 公钥PK公开,私钥SK保密,加密算法E解密算法D公开(实际一样)
- 公钥加密要私钥解密(多个用户加密一个解读,可用于保密),私钥加公钥解(一个用户加密多个用户解读,用于数字签名)
- 密文:用B的公钥加密,B用B私钥解密
- 数字签名:证明真实性
- 确认当事人身份,信息签发后是否篡改
- 必须保证:
- 保温鉴别、报文的完整性(防否认)、不可否认(防伪造)
- 具有保密性的数字签名:同时秘密通信与数字签名,A用自己私钥签名,用B公钥加密,B那边自己私钥解密,A的公钥核实签名
- 解密后才能看签名
- 报文鉴别:接收方能验证真伪,但很慢
- 报文摘要:用散列函数将任意长度报文变换为较短固定场——数字指纹
- 算法:MD5, SHA, CRC
- 特性:便于实现、单向性、不肯能两条同样摘要的报文を、输入微小变化摘要很大变化
- 用法:接受者算摘要和签名里的摘要对比
- 数字证书(digital certificate, digital ID):标志各方身份信息。是CA认证中心发放的数字文件。
- SSL(secure socket layer,安全套接字层)安全协议,对万维网客户与服务器传送数据加密和鉴别
- 联络阶段协商使用的加密算法、密钥
- 联络后左右数据使用联络的会话密钥
- HTTPS使用之
- 提供的安全服务
- SSL服务器鉴别:证实服务器身份,即验证副武器的证书并获得公钥
- SSL客户鉴别
- 加密的SSL会话:加密所有报文,检测是否篡改
- SSL安全会话建立过程
- 协商加密算法(A支持啥B选一个)
- B的数字证书,A用CA发布的公钥鉴别
- A产生秘密数用于产生会话密钥
- B产生会话密钥
- 用会话密钥加密数据传输
- 常规密码体制:对称密钥
- 密码体制
- 7.3 防火墙
- 特殊编程的路由器,两个网络间实施访问控制策略
- 墙内为“可信的网络”墙外は
- 解决内联网(intranet)外联网(extranet)安全问题
- 连接内外局域网的两个分组过滤路由器、一个应用网关
- 分组过滤型防火墙
- 分组过滤:网络层输层选择数据包,依据过滤逻辑(访问控制表ACL)
- 检查源地址、目的地之、端口号、协议状态、协议类型(TCP, UDP, ICMP)(TCP选项)(流向)(刘静网络接口)等因素
- 访问控制表ACL(Access Control Lists)
- 阻止列表:源地址/元端口/目的地之/目的端口
- 分组过滤判断依据
- 分组过滤性防火墙的特点
- 优点:简单,性能影响小;应用层无关,不用改应用程序
- 缺点:需要对协议又深入了解;不允许稳步客户直接连接内部主机;不提供用户鉴别
- 分组过滤:网络层输层选择数据包,依据过滤逻辑(访问控制表ACL)
- 应用网关型防火墙
- 应用层上建立协议过滤和转发
- 可实现高层用户鉴别
- 同城在专用工作站系统或硬件防火墙
sudo apt install nginx
sudo nano /etc/nginx/conf.d/my.conf # 自己添加的配置文件,添加到总的 http {} 部分里,看 `/etc/nginx/nginx.conf` 里的内容,具体是添加在 `/etc/nginx/conf.d/` 建立的文件里
# 当前 http,就是把 `server {...}` 分别给有无www的各写一遍 (其实在 server_name 指定多个域名就好了)
sudo systemctl restart nginx
Nginx 的 .conf 文件怎么写
server {
# location 以外是全局块
listen 3000 ssl; # 这里不写 ssl 的话就不 speak ssl,就不是 https
server_name yangchnx.com www.yangchnx.com;
[root ...;]
[index ...;]
# location 里面是 location 块
#此处更改对应路径(location后面是pattern)
location ^~ /qieyun-autoderiver {
alias /home/yang_chn_x/qieyun-autoderiver/build;
index index.html index.htm;
}
location = /test {
return 200 "hello";
}
location / {
root /home/yang_chn_x/index/build;
index index.html index.htm;
}
location ^~ /cantonese-flashcard {
alias /home/yang_chn_x/cantonese-flashcard/build;
index index.html index.htm;
}
location ^~ /love {
alias /home/yang_chn_x/love/build;
try_files $uri $uri/ /love/index.html;
}
}
location
下面用 root
会把 location 复制到 root 后面,而用 alias
则用 alias 替代 location。
try_files
按顺序尝试这些文件,如果都没有,就对最后一个 uri 元素做 internal redirect,而这个内部重定向也需要写在个 location 里。只 try_files
不 alias
挺好的。
sudo apt update
sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 一旦過期,執行下句亦用於更新。
sudo certbot --nginx
自动给 Nginx 自定义配置文件 /etc/nginx/conf.d/*.conf
里面添加了相关信息。
因为其原理跟网络技术结合紧密,放这。
爬虫需要注意的一些点:
以及 requests
之使用
User-Agent
和 Referer
都被归类为请求上下文。
User-Agent
允许 服务器之流 识别 发起请求的用户代理软件 的 应用程序类型、操作系统、软件供应商或软件版本。- 就比如浏览器的版本
- 可查看于: https://www.whatismybrowser.com/detect/what-is-my-user-agent
Referer
前一个网页的地址,表示从该网页链接(进入)到当前请求的页面。- 常用于图片防盗链,比如想访问锑度网的某图,必须填一个锑度网的网址作为 Referer
- 新开个别的浏览器,就没法直接打开这种图片链接。就因为新开的浏览器也不知道合法的 Referer
headers = { # 对于图片,Referer 很重要
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36',
'Referer': ORIGIN_URL
}
for i, image_url in enumerate(image_urls):
try:
response = requests.get(image_url, headers=headers)
if response.status_code == 200:
# 从URL中提取文件名
filename = os.path.join('downloaded_images', f'image_{i}.jpg')
with open(filename, 'wb') as file:
file.write(response.content)
print(f"Image {i} downloaded successfully.")
else:
print(f"Failed to download image {i}. Status code: {response.status_code}")
except Exception as e:
print(f"Error downloading image {i}: {str(e)}")