计算机网络总览原创
# 网络核心:数据交换
# 分组交换
是计算机网络中数据交换方式,在传输数据时仅占用路径中某两个节点间的链路,属于统计多路复用(类似时分复用)
优势:网络的共享性(提高资源利用率)
代价:额外网络延时、可能的丢包率
发送方行为:构造、发送分组
交换节点行为:存储、查路由表转发分组
接收方行为:接收、还原报文
将要发送的数据报文,分为有限大小的数据块,加上首部形成分组,通过各个节点存储转发
# 存储转发
在接收完一个分组前,需要将已接收的比特存储,等接收完这一分组后将整个分组进行转发
# 转发表与路由协议选择
路由选择协议:用来决定每台路由器到每个目的地的最短路径,并基于此配置路由器中的转发表
# 时延
处理时延
- 取决于路由器性能,如路由器最大吞吐量等
- 检查分组首部
- 决定分组去向
- 检查比特级别的差错
排队时延:最为复杂和有趣
- 取决于当前网络流量,流量小等于链路输出速率时,时延为毫秒至微秒量级
- 交换机对于每条相连的链路都有输出队列(输出缓存)
- 若转发时相应链路正在传输其它分组,则需要进入输出队列,排队等待
- 若输出队列已满,则次分组或队列中的分组之一将被丢弃,即分组丢包
- 排队时延通常用统计量来度量(平均,方差,概率 ...),以应对其不确定性
- 多个分组同时到达空队列,则第一个无排队时延,最后一个有较长排队时延
- 流量强度:La/R
- 分组中比特数L,分组到达平均速率 a pkt/s,传输速率 R
- 流量强度>1,队列时延趋向于无限大
- 设计系统时流量强度不能大于1
传输时延:将数据推向链路所需时间
与分组长度和链路传输速率有关,通常为毫秒至微秒量级
源和目的地间有 N+1 个节点,分组长度为 L,链路速率为 R,其组成的路线从源到目的地,传输一个分组所需时间 $d=N\frac{L}{R}$
P个分组:$t=(N+P-1)\frac{L}{R}$
传播时延:数据传输所需时间
- 取决于物理媒介和链路长度 $210^8m/s - 210^8m/s$
# 吞吐量
单位时间内源主机向目标主机发送的有效比特量
瞬时/平均
# 网络中实现
采用分组交换,有时也需要有电路交换的特性,通过其它方式实现
# 虚电路
- 有连接,建立虚电路后,每个分组包含虚电路号,通过虚电路号转发数据
# 数据报
- 无连接,每份都包含完整目标地址,独立传送
# 报文交换
相当于不限分组大小的分组交换
# 电路交换
持续占用物理链路,例:电话
建立连接所需时间长
- 过程:建立连接 - 通信 - 释放连接
# 复用技术
将一条链路通过划分时间或频段等方式,使其能同时接受多个连接
- 时分复用(TDM):链路为每条连接在帧中分配一个时隙
- 每条连接在其间隙中周期性地得到所有带宽
- 传输速率=帧速率*每个时隙比特数
- 案例:A、B间使用24时隙的TDM链路,比特速率1.536Mbps,创建电路需要500ms,发送一个640000比特的文件所需时间
- 传输时间:
640kb / (1536/24)kbps + 0.5s = 10.5s
- 通信:1Mbps = 1000Kbps
- 存储:1MB = 1024KB
- 该时间与链路数无关,是稳定的传输时间
- 实际时延还需要加上传播时延
- 传输时间:
- 频分复用(FDM):链路为每条连接分配一个专用频段
- 每条连接持续得到部分带宽
- 波分复用(WDM):光纤通信,链路为每条连接分配一个专用波段
- 码分复用(CDM):通常是接入的方式(码分多址:CDMA)
# 网络边缘:控制交换策略
- 面向连接:主机双方及其底层协议栈知道通信状态,中间经过的网络不知道
- 有连接:主机及各个节点都需要维护其通信状态
# TCP
- 面向连接
- RDT:可靠(不重复、不丢失、不失序)
- 流量控制:控制发送速度
- 拥塞控制:解决路径堵塞问题
- 应用场景:http(web),ftp(文件传输),telnet(远程登录)、smtp(邮件)
- 缺点:需要额外消耗资源,并且会增长时延;可能会产生粘包;
# UDP
- 无连接,不可靠,无流量控制,无拥塞控制
- 应用场景:实时应用,流媒体、远程会议、DNS、网络电话...
# 网络的网络
ISP:网络服务提供商
IXP:对等,通常不涉及费用结算,属于不同服务商之间的合作
ICP: 网络内容提供商(如:谷歌在各地有自己的数据机房,部署在顶级ISP附近,访问其服务通过自己搭建的线路)
# traceroute
TTL: 生存时间,经过一个节点就减一,为零时就会被丢弃,将其丢弃的节点返回一个ICMP报文
发送三次特殊分组,其通过TTL控制其在第几个路由器被丢弃,以此计算延时并得到每个路由地址
如果有分组丢失,根据相关各层的可靠性有三种情况:由上一跳重传、源主机重传、不重传
如果到达目的地,则会因为找不到服务(对应端口)被丢弃,被丢弃后返回一个ICMP报文
# 协议层次和服务模型
分层实现:本层协议通过下层服务实现,本层实体通过协议向上层提供更高级的服务
协议是水平的,服务是垂直的
PDU(协议数据单元):通过服务访问点(SAP)使用下层提供的服务,与对等层通信
- 应用层:报文
- 传输层:报文段、段
- 网络层:分组、数据报
- 数据链路层:帧
- 物理层:位...
服务访问点(SAP):用来区分服务的不同用户(应用)
- 数据链路层的服务访问点是TYPE中的类型说明(例如0800代表上层是IP),
- 网络层的服务访问点是IP头部中的protocol字段(17表示上层是UDP,6是TCP,89是OSPF,88是EIGRP,1是ICMP等)
- 传输层的服务访问点是端口号
header中包含对应层的控制信息等
SDU过大时,会先将SDU分为多份,每份都加上header
SDU过小时,会先将多个SDU合并后,加上header
# 服务类型
# 各层分工
- 物理层:将包含数据链路层中帧的数据转为比特 - 在物理介质中传输比特 - 将比特转换回数据
- 数据链路层:在物理层服务的基础上,负责相邻两节点间,点到点的,以帧为单位的数据传输
- PPP、802.11(wifi)、ethernet(以太网)
- 网络层:在数据链路层服务的基础上,负责源主机到目标主机,端到端的,以分组为单位的数据传输
- IP、路由选择协议(RIP、OSPF、BGP...)、ICMP...
- 传输层:在网络层的基础上,负责进程到进程的,以报文段为单位的数据传输
- 还可提供可靠的传输服务
- TCP、UDP
- 应用层:在传输层的基础上,提供各种不同的网络应用,以报文为单位的数据传输
- FTP、HTTP、DNS...
- 在七层模型中,应用层只关心语义
- 表示层:负责具体数据的表达(如加密、压缩、表示转换)
- 会话层:负责会话管理(建立会话,关闭会话,维持session,数据交换的同步、检查点、恢复)
- 报文:应用层首部+数据
- 报文段:传输层首部(端口号等)+报文(TCP会划分成段,UDP不划分)
- MSS(Maximum Segment Size):TCP数据包每次传输的最大数据分段大小
- 一般由发送端向对端TCP通知对端在每个分段中能发送的最大TCP数据
- 例:以太网中,MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte),即 1500-20-20=1460 Byte
- 数据报:网络层首部(IP等)+报文段(如果是UDP,报文段长度可能超限(MTU),会在此分片)
- 分片:若一IP数据报大小超过相应链路的MTU的时候,执行分片
- 帧:数据链路层首部(MAC等)+数据报+数据链路层尾部
- 最大传输单元 (Maximum Transmission Unit,MTU):数据链路层对数据帧长度的限制
- 例:以太网(1500);802.3(1492,以太网基础上多了 3字节的802.2LLC和5字节的SNAP字段)