概论
网络
- 组成:节点和边,是一种关系,与大小形状无关
计算机网络
- 节点:主机节点、数据交换节点(中继器、交换机、路由器、负载均衡设备)
- 链路:连接节点的链路(接入链路 access、骨干链路 backbone)
- 软组成:协议(对等层实体在通信过程中应当遵守的规则集合,包含了语法语义时序和动作)
互联网
- 组成角度看:
“网络的网络”,通过网络互联设备连在一起的巨型计算机网络。 - 服务角度看:
分布式的应用进程及为其提供通信服务的基础设施。分布式的应用进程是互联网存在的理由,通信的目的是实现应用提供服务。
互联网所有通信行为,都受到协议规范。
通信分面向连接(如 TCP)和无连接(如 UDP)。
PDU
- **协议数据单元 (PDU)**:网络数据在每一层的叫法和格式,比如在应用层叫 messgae,传输层叫 Segment 数据段,网络层叫 Packet 数据包。
分层原理
- 本层功能和所提供的服务。
- 本层功能通过层间接口向上层提供服务,上层功能调用层间接口获取下层服务。
OSI 七层模型
OSI(Open System Interconnect)七层模型是一种将计算机网络通信协议划分为七个不同层次的标准化框架。每一层都负责不同的功能,从物理连接到应用程序的处理。这种模型有助于不同的系统之间进行通信时,更好地理解和管理网络通信的过程。
OSI 定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即 ISO 开放互连系统参考模型。
- 应用层 —— 为计算机用户提供服务
- 表示层 —— 数据处理,允许解释传输的数据
- 会话层 —— 管理应用程序间会话 数据交换的同步,检查点,恢复
- 传输层 —— 为两台主机进程间通信提供数据传输服务
- 网络层 —— 路由和寻址
- 数据链路层 —— 帧编码和误差纠正控制
- 物理层 —— 透明传送比特流传输
互联网协议栈没有表示层和会话层
TCP/IP模型
> - 应用层
> - 传输层
> - 网络层
> - 网络接口层
通信
Client 与 Server 的逻辑通信依赖双方下层实体的互相传输。
- 传输要点:不出错、不重复、不丢失
- 面向连接的通讯方式:目标是在端系统间传输数据,采用 TCP 传输控制协议
信道 表示向某一方向传送信息的通道(!=通信线路),一条通信线路在逻辑上往往对应一条发送信道和一条接收信道
信源 信号来源
信宿 信号接收方
信号 数据载体
数字信号离散 模拟信号连续
IP 协议
IP(网际互连协议,Internet Protocol)是 TCP/IP 协议族中最为核心的协议。所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。
- 尽力而为:不提供保障
TCP 协议
TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,广泛应用于互联网中。它旨在提供可靠的端到端通信;在双方进行通信之前,必须先通过三次握手建立连接。TCP 同时提供了一系列的机制来保证数据的可靠传输,这些机制包括:序列号、确认应答、重传控制、流量控制和拥塞控制。
- 特点:可靠、流量控制
- 总结:IP 协议工作在网络层,解决数据如何从 A 到 B;TCP 协议工作在传输层,解决数据如何准确无误。
UDP 协议
UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是 OSI 参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
- 特征:无连接、不可靠、不保证顺序、不控制流量、传输基于数据报文
- 适用场景:传播具有实时性,适用于直播等流媒体传播
网络层
E2E
网络层提供的服务是端到端的,两端主体负责,中间网络透明。
P2P
同一网络下相邻主机点到点,去中心化,每个节点既是服务器也是客户端。
传统方式下网络层是如何传输数据的?
路由器
工作于网络层,连接不同的网络(如家庭局域网和互联网),通过路由选择算法为数据选择最佳路径。
交换机
工作于数据链路层,连接同一网络内的设备(如电脑、打印机),实现高速数据交换。
SDN
- 数据平面:交换机
- 控制平面:操作系统
- 与传统不同:
- 字段种类不同
- 网络应用可生成不同流表发给交换机
- 对流表的操作多样化
- 作用:一般化,可执行更多网络功能
网络结构
包含三个子系统:边缘、核心、access 接入网。
网络边缘
- 包括主机和应用程序(客户端和服务器)
- 有数据交换需求
网络核心
- 路由器的网状网络
- 起数据交换的作用
access
把网络边缘的主机和应用程序接入网络核心。
网络模式
- 客户端服务器模式:主从模式,服务端开放端口由客户端请求数据。
- P2P 模式:每个节点既是客户端又是服务器。
通信网络
线路交换 / 电路交换
- 端到端资源被分配给从源端到目标端的呼叫“call”。
- 网络资源被分成片、为呼叫分配片、如果呼叫无数据则资源片处于空闲状态。
- 将带宽分成片:
- 频分(FDM:信号占用频率不同的子带,同时发送)
- 时分(TDM:按时间轮流)
- 波分(WDM:光纤中按波长划分)
- 码分(CDM:发送方用特定码序列扩频、接收方解扩、不同用户码序列正交、抗干扰极强)
- 特点:需要很长的建立时间、资源独享、没呼叫就会浪费资源、可靠性?
- 通常被传统电话网络采用。
分组交换
- 以分组为单位存储-转发,资源共享,按需使用。
- 网络带宽资源不再分片,传输时使用全部带宽。
- 主机间数据被分为一个个分组。
- 存储-转发:分组每次移动一跳;转发前节点必须收到整个分组,延迟更大,有排队时间。
- 特点:资源共享、排队延迟、丢失、支持的通讯数量更多。
- 分类:按照网络层有无连接分为数据报方式和虚电路方式:
- 数据报方式:无连接,每个分组独立寻找路径,可能失序。
- 虚电路方式:面向连接,固定路径,开销更小,可靠性差。
接入网络和物理媒体
住宅接入
- **调制解调器 (Modem)**:在原有的电话通信网络基础上添加设备,把来自电话线等的信号翻译成电子设备能懂的数字信号。
线缆网络
- **有线电视网络 (CATV)**:原理大致相同,优势是频带宽。
无线接入网络 (RAN)
- 天线:将电信号转换成无线电波发送出去,或接收无线电波并转回电信号。
- 无线电单元:负责处理信号的收发,确保信号在正确的频段和功率水平上传输。
- 基带单元:负责信号的“大脑级”处理,如纠错、资源调度,确保通信高效可靠。
- 传输流程:
手机信号→天线接收→无线电单元转换→基带单元处理→送入核心网
物理媒体
- 有形(导引型媒体):光纤、双绞线(两根绝缘铜线扭在一起)
- 无形(非导引型媒体):电磁波(如 Wi-Fi、卫星)
Internet结构和ISP
ISP 是互联网服务提供商(Internet Service Provider) 最核心的业务是互联网接入服务,通过电话线、光纤、移动网络等让普通用户的设备接入互联网
IXP是互联网交换中心(Internet Exchange Point),可以理解为不同网络运营商(ISP)之间互相连接和交换流量的“交通枢纽”。它的核心作用是让不同ISP的网络流量直接交换,而不必绕行更远的第三方骨干网,从而提升网速、降低延迟、节省成本。通常不涉及费用结算
一个分组要经过许多网络
POP 高层ISP面向客户网络的接入点,涉及费用结算
对等接入:两个ISP对等互接 不涉及费用结算
分组延时、丢失和吞吐量
分组的延时和丢失是如何发生的
延迟:
排队延迟 分组到达链路的速率超过了链路输出的能力
节点处理延迟 检查bit级差错 检查分组首部和决定将分组导向何处
传输延迟 将分组发送到链路上的时间等于分组长度/链路带宽
传播延迟 物理链路长度/媒体传播速度 两个节点距离够近传播延迟几乎可忽略不计
LAN
局域网
WAN
广域网
信道容量是指一条通信链路(信道)在单位时间内最大能够无差错传输的信息量。单位通常是 bps(比特每秒)。
流量强度 分组长度(bits)*分组到达队列平均速率/链路带宽
流量强度越接近0,平均排队延时非常小,越接近1越大,1时平均排队延时趋向无限大
设计系统时流量强度不能大于1
ICMP(Internet Control Message Protocol,互联网控制报文协议)是TCP/IP协议族中的一个核心协议,主要用于在IP主机和路由器之间传递网络层的控制信息和错误报告。它不传输用户数据,但为网络通信的稳定和诊断提供了关键支持。
吞吐量 在源端和目标端之间传输的速率
平均吞吐取决于最小吞吐链路(瓶颈链路)
瓶颈链路:端到端路径上,限制端到端吞吐的链路
协议层次及服务模型
服务:低层实体向上层实体提供它们之间的通信能力
服务的类型分为面向连接的服务和无连接的服务
原语 原语是网络服务提供者(如操作系统内核或网卡驱动)与服务用户(如应用程序)之间进行交互的一种标准接口或契约。
服务访问点 SAP 使用下层提供的服务通过的层间接口地点
数据单元 DU
上层sdu+本层控制信息 得到本层pdu
SDU(Service Data Unit,服务数据单元):它是从上一层传下来的、未经当前层处理的原始数据。可以理解为当前层需要服务的“客户”,它本身是上一层PDU的“净荷”(Payload)部分。
PDU(Protocol Data Unit,协议数据单元):它是当前层对SDU进行处理(封装)后,准备发给对等层的最终数据单元。处理方式通常是给SDU加上本层的头部信息(Protocol Control Information, PCI),有时也会加上尾部
各层次的pdu(协议数据单元)
应用层:报文(message)
传输层:报文段(segment) TCP段 UDP数据报
网络层:分组packet(无连接则是数据报datagram)
数据链路层:帧(frame)
物理层:位(bit)
应用层
架构:c/s模式 p2p模式 混合模式
进程通信
进程 在主机上运行的应用程序
同一个主机内,使用进程间通信机制通信(操作系统定义)
不同主机,通过交换报文来通信
主机为了发送和接收报文,必须有一个标识 SAP
包含主机32位IP地址、所采用的传输层协议、端口号
一个进程用IP+port 标示端节点
本杂志上一对主机进程间通信由两个端节点构成
需要穿过层间的信息
必须携带的信息:
要传输的报文(SDU)
谁传的、传给谁(IP+TCP/UDP+port)
传输层实体(tcp/udp)根据信息进行报文段或数据报的封装
源端口号,目标端口号,数据等
将IP地址往下交IP实体,用于封装IP数据报::源IP、目标IP
TCP的套接字
socket 包含本地ip+port和目标ip+port 4元组的一个整数
唯一指定了一个会话 可以直接使用这个标示与远程应用进程通信 不必每次报文发送都指定4元组
使用socket的原因是简单易于管理
ICI 接口控制信息,同一台设备里,上下相邻两层协议在“交接”数据时,额外传递的一些“备注”或“指令”。它不是要发送给对方的数据本身,而是用来帮助下层协议更好地处理这份数据的辅助信息
UDP的套接字
包含本地ip和port的二元组
应用层协议
定义了不同端系统上的应用进程如何相互交换报文
- 交换的报文类型:请求和应答报文
- 各种报文类型的语法:报文中各个字段和描述
- 字段语义:字段取值的含义
- 进程何时、如何发送报文及对应报文相应规则
应用协议仅仅是应用的一个组成部分
Web应用包含了HTTP协议、web客户端、web服务器和HTML
安全TCP
SSL 在TCP上实现,提供加密TCP连接
具有私密性、数据完整性和端到端的鉴别
在应用层,应用采用SSL库,SSL库使用TCP通信
SSL socket API 应用通过API将明文交给socket,SSL加密在互联网上传输
SSL已废弃,目前被更安全可靠的TLS替代
Web 与HTTP
Web
Web页: 由一些对象组成,对象可以是HTML、JPEG、JAVA小程序、声音剪辑文件等
Web页含有一个基本HTML文件,该文件包含若干对象引用(链接)
通过URL对每个对象引用
URL格式:协议名 用户 口令 主机名 路径名 端口
HTTP
超文本传输协议
HTTP是Web的应用层协议
守候socket:等待连接 连接socket:主动连接
非持久HTTP连接(http1.0):每个请求都建立新TCP连接,处理完成后立即断开
持久连接(http1.1):建立TCP连接后不关闭连接,可连续发送多个请求,且无需等待前一个响应返回
请求报文
类型:请求、响应
ASCII:人能阅读
结构包含请求行(GET、POST、HEAD命令)、首部行和一个换行回车符(表示报文结束)
method sp URL sp version cr if (request line)
header field name value cr if
……(header lines)
cr if
Entity Body
HTTP响应状态码
位于服务器>客户端响应报文中的首行
一些状态码的例子:
200 OK
301 永久移除
400 通用差错代码,表示请求不能被服务器解读
404 NOT FOUND
505 HTTP VERSION NOT SUPPORTED
cookie
用户-服务器状态
4个组成部分
1 HTTP响应报文有一个cookie首部行 2 HTTP请求报文有一个首部行
3 用户端系统中保留一个cookie文件,由用户浏览器管理
4 Web站点有一个后端数据库
Web缓存(代理服务器)
不访问原始服务器就满足客户需求
条件GET方法
目标:如果缓存器中的对象拷贝是最新的,就不要发送对象
缓存器:在HTTP请求中指定缓存拷贝的日期
服务器:如果缓存在拷贝陈旧,则响应报文没包含对象
HTTP/1.0 304 Not Modified
ftp 文件传输协议
向远程主机上传输文件或从远程主机接收文件
客户/服务器模式
客户端:发起传输的一方
服务端:远程主机 端口号21
客户端通过控制连接以获取身份确认 然后发送命令浏览远程目录
收到一个文件传输命令时 服务器打开一个到客户端(20端口)的数据连接
一个文件传输完成后,服务器关闭连接
ftp是有状态协议连接,ftp服务器维护用户状态信息
组成
用户代理、邮件服务器、SMTP(简单邮件传输协议)
用户代理
撰写浏览发送邮件的客户端软件 如Outlook
SMTP
使用TCP在客户端与服务器传送报文,端口25
报文必须为7位ASCII