1 概述
网络将计算机连接在一起,互联网将网络连接在一起
1.1 专业名词概览
- ISP(Internet Service Provider):互联网服务提供商
- IXP(Internet eXchange Point):互联网交换点,允许两个网络直接交换信息
- IP地址:主机的接口在网络上的唯一凭证,用于标识身份
- RCF(Request For Comments):撰写的互联网建议标准
- 数据率:网络中数据传输的速率
- 带宽:表示通道传送数据的能力,即单位时间内通道能通过的最大数据量
- 吞吐量:单位时间内通过网络或接口的数据量
- 时延:分为发送时延、传播时延、处理时延和排队时延
- 时延带宽积:传播时延×带宽,指发送端发出的尚未到达接收端的比特
- RTT(Round-Trip Time):指数据在收发双方进行一次往返所需的时间
- 协议:为进行网络中的数据交换而建立的规则、标准与约定
1.2 网络是如何组成的
网络由主干ISP、地区ISP、本地ISP层层向下提供服务,主机透过不同的ISP与连接在互联网上的另一台主机进行通信
我们将连接在互联网上的主机划分为边缘部分,网络及路由器划分为核心部分
1.3 数据是如何在网络上传输的
数据在网络上传输,主要分为三种方式:电路交换、报文交换、分组交换
1.3.1 电路交换
- 电路交换首先需要建立连接,通信的双方在一定时间内独占一条链路
- 连接建立后,直接不断地传输比特流,路由器不对数据进行分发
- 传输结束后,将独占的链路释放
电路交换的时延计算:电路的建立时间+数据的发送时延+数据的传播时延+连接的释放时间
1.3.2 报文交换
- 整个报文传输给路由节点
- 节点对报文进行整体存储
- 节点再继续转发
报文交换的时延计算:数据的单次发送时延×链路数+数据的传播时延+每次路由节点的处理时延×链路数
1.3.3 分组交换
- 为了较好地管理互联网上传输的数据,我们将数据流划分为组进行整体传输;
- 主机对数据进行具体处理,路由器负责对数据进行转发
- 主机将数据传输的要求附加在数据分组中,路由器根据主机的需求进行工作
分组交换的时延计算:数据的单次发送时延×分组数+每个分组的处理时延×结点数+数据的单组传播时延×分组数
1.4 互联网的体系结构
网络协议通过语法(数据与控制信息的结构或格式)、语义(需要发出的控制信息、动作与响应)和同步(事件实现的顺序)对网络上数据的传输加以控制
将复杂的工作按照一定的方式将不同的任务划分给不同的模块,各模块之间又可以相互调用
计算机网络各层与各层的协议的集合构成了网络的体系结构,计算机网络的体系结构就是计算机网络及其构件所应该完成的任务的精确定义
体系结构是抽象的,实现是具体的
2 物理层 ->
物理层主要负责确定传输媒体接口的一些特征,即如何在连接各计算机的传输媒体中以合理的方式传输比特流
2.1 专业名词概览
- 发送器:指将上层生成的比特流经过某种编码方式转换为能在传输媒体中满足某种要求地进行传输的数据的系统
- 接收器:指将传输媒体传输的数据通过相应的解码方式转换为上层能处理的信息的系统
- 传输媒体:指信号传播的路径,分为导引型传输媒体和非导引型传输媒体
- 信号:分为具有连续参数的模拟信号与具有离散参数的数字信号
- 码元:一段唯一代表某种状态的基本波形
- 信道:指向某一个方向传输数据的传输媒体
- 带通调制:即使用载波的调制,将基带信号的频率范围转移到更高的频段使之能通过信道
2.2 物理层综述
- 物理层的任务在于将上层交付的,需要传输的比特流经过发送器加工后通过传输系统传递给接收器处理,再交付上层
2.3 传输媒体的特性
- 机械特性:物理实体的,关于物理连接的数目、排列方式、形状大小、固定方式等
- 电气特性:对电压取值范围的要求
- 功能特性:传输媒体中某种电压代表的意义
- 过程特性:不同功能的可能事件的出现顺序
2.4 信道
由于噪声等环境因素的干扰,信号的波峰与波谷的差异会有所缩小,码元的识别也相应变得困难。根据奈氏准则,当信道中码元的传输速率达到某上限时,接收端就无法识别不同的码元了。根据香农公式,此上限为
\[C=Wlog_2(1+S/N)\]其中,W为带宽,S/N是信噪比,即信号的平均功率与噪声的平均功率的比值
2.4.1 编码方式
- 不归零制:正电平表示1,负电平表示0
- 归零制:正脉冲表示1,负脉冲表示0
- 曼彻斯特编码:位中心向上跳变表示1,向下跳变表示0
- 差分曼彻斯特编码:位开始边界跳变表示0,没有跳变表示1
注:曼彻斯特编码的信号频率高,还能从波形信号本身提取出时钟频率
2.4.2 带通调制方式
- 调幅:振幅随数字信号变化
- 调频:频率随数字信号变化
- 调相:初始相位随数字信号变化
2.4.3 信道复用
- 频分复用:不同的用户使用不同的频率传输
- 时分复用:不同的用户分配一定的时间进行数据传输
- 码分复用:不同的用户分配唯一的码片序列作为信号的代表
3 数据链路层 ->
数据链路层负责将数据通过硬件与软件的保障,经物理链路,保证数据传输的正确性
3.1 专业名词概览
- 帧:数据链路层的协议数据单元
- 适配器:又称网络接口卡,装有处理器与存储器。MAC地址就是封装在适配器的ROM中。负责连接互联网与主机
- 转发器:又称为中继器或放大器,执行物理层协议,负责物理层的数据中继,实现电气信号的“再生”。用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。
- 集线器:一种典型或称为特殊的转发器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。它不具有智能处理能力,处理的数据只是电流而已,它采用共享带宽的工作方式,附接端口的所有计算机采用CSMA/CD方式竞争带宽的使用,任一时刻只能由两台计算机之间进行通信。
- 交换机:交换机可以无碰撞地进行数据传输,每一个用户独占归其所有的全部资源而不受到碰撞域的限制
- 路由器:具有多个输入输出端口的专用计算机
- 广播风暴:大量广播与多播信号的积累
3.2 主机是如何接入互联网的
主机如果需要连接到互联网,需要依靠适配器。适配器将主机申请或断开连接的请求通过物理连接发送给局域网。
同时,适配器也负责连接完成后主机与互联网之间的数据交换:主机通过I/O总线以并行方式与适配器通信,局域网通过物理链路以串行方式进行通信
3.3 数据是如何在层级之间流动的
数据报从网络层传递给数据链路层,数据链路层直接在数据报前后加上首部和尾部,然后传递给物理层;
物理层交付的数据,数据链路层检验无差错后剥离首部尾部,提交给网络层
3.4 数据怎样才能安全地传输
- 封装成帧:单纯的数据比特流受到干扰的可能性较大,如果有出错的数据,对整个数据流的影响很强。如果将数据分成多组进行传输,即使某一组的传输产生了错误,对整个数据流的影响也较小。为了区分不同的分组,须在分组的前后加上界线,即首部与尾部,也称帧定界符
- 透明传输:帧定界符使用的同样也是ASCII码中的内容,很有可能帧中也存在有相同的有效数据。为了区分帧定界符与有效数据,我们在与帧定界符一致的有效数据前面添加转义字符,同样地,也在与转义字符一致的有效数据前再添加一个转义字符以示区分
- 差错检测:数据在传输的过程中不可避免地会产生错误,为了避免错误的信息被当成正确的信息加以处理,我们需要采取差错检测的手段。如被广泛使用的循环冗余检验(CRC);CRC能够保证帧无比特差错,但不能保证无传输差错
3.5 如何在总线中有效地传输数据
最初,主机之间以一根总线相连,所有需要发送的数据都经过总线,同时也只允许一台主机发送数据。为了减少这种情况下数据的碰撞,需要使用CSMA/CD(载波监听多点接入/碰撞检测)
3.6 扩展以太网
有时,我们希望扩展以太网的覆盖范围,可以在物理层和数据链路层两方面进行扩展
3.6.1 物理层的扩展
信号在铜线中的传输衰减很大,一旦线路变长,发送数据的可靠性就会大大减弱。于是,我们使用集线器作为周转装置,使用光纤作为主机与集线器之间的连接,使用光纤调制解调器作为两者的转换器;如果将多个集线器再以骨干集线器相连,就能建立一个更大的扩展局域网,能互相通信的主机之间的最大距离也就扩大了
但,原来小的局域网只有很小的碰撞域,在物理层以集线器扩展以太网会使以太网的碰撞域增大,碰撞几率增加
3.6.2 数据链路层的扩展
正因为物理层的扩展会使碰撞域增大,我们通常在数据链路层进行以太网的扩展,而在数据链路层,更多地使用交换机。交换机内部由硬件对收到的帧进行分析、存储与转发。由于交换机能对数据进行简单的处理,与单纯的总线型网络不同,交换机可以在接口繁忙时短暂地存储数据,从而实现全双工通信。
3.7 广播风暴的产生与避免
3.7.1 广播风暴产生的原因
多数情况下,由于线路配置的失误,使得网络中产生了回路,造成广播或多播信号在网络中不断累积传播,造成网络带宽被占用
3.7.2 VLAN技术
虚拟局域网通过将不同物理位置的主机以逻辑方式组合起来,形成不同的广播域,限制广播信号传输的范围,在一定程度上减弱了广播风暴的产生
4 网络层
4.1 专业名词概览
- 面向连接:指网络负责顺序发送报文并确保数据在网络中以可靠方式传输,且具有检测和重发的能力;收发两端都不必要对数据进行检查
- 自治系统:指在单一技术管理下的一组路由器
4.2 网络层负责怎样的任务
网络层并不向上提供可靠的承诺,而只是尽最大努力交付。因此,数据在网络层流动时,不需要事先建立完整的通路,而是让数据灵活地在中转节点间按照某种约定的方式进行转发。数据在传输的过程中不一定能保证到达,也不保证无差错,数据的重传与差错检测由收发双方完成
4.3 数据如何在网络层流动
4.3.1 地址的划分
互联网上,每一台主机的每一个接口都被分配一个32位的标识符,即IP地址,与固定在网络适配器中的MAC地址不同,IP地址的分配是动态的,每一个接口只能在一段时间内拥有一个IP地址。数据在互联网上的传播正是以IP地址为根据的,自然,IP地址在有效期内必然是全球唯一的,否则,数据就会发送给错误的主机。
MAC地址的分配是杂乱的,无规律的,格式不统一的;互联网将IP地址按区域分配给ISP,不同级别的ISP再层层分配,这使得数据在互联网上的传播是有条理的,总体上说也减少了数据的转发次数,节省了大量的网络带宽。
为了较好地使用有限的IP地址资源,早期的互联网将IP地址人为地划分为网络号及主机号两部分。根据网络号的长度,又将IP地址分为5类,IP地址的网络号是IP地址管理机构分配的,而主机号则是由申请单位分配的,于是不同类的IP地址也就可以分配不同数量级的主机号。
但由于申请IP地址的单位不能很好地估计自身的使用量,这就造成了IP地址的大量浪费,后来,将IP地址划为网络号、子网号和主机号三部分,即三级IP地址。路由器将目的地址和子网掩码逐位相与,即可得到需要转发到的子网网络地址
一段时间后,IP地址B类地址即将分配完毕,产生CIDR(Classless Inter-Domain Routing).CIDR消除了之前对地址划分的概念,将IP地址划分为网络前缀和主机号两部分。ISP可以根据不同的需求,分配一个或多个CIDR地址块给下一级,若是路由表有不止一个匹配结果,则选取最长前缀。
CIDR方案极大地减少了路由表的复杂性
4.3.2 寻址
为了满足数据链路层和一些古老的协议的要求,通信时需要得到指定设备的MAC地址。我们可以通过ARP协议,提交该设备的IP地址,得到对方的MAC地址
4.3.3 自治系统
由于不同的区域希望拥有较高的自主性,将整个互联网划分为许多个自治系统。在自治系统内部使用内部网关协议(RIP、OSPF),自治系统之间使用外部网关协议(BGP)
4.4 路由器的构成
路由器负责分组的转发,分为路由选择部分和分组转发部分;分组转发又分为交换结构和输入输出端口。数据从线路进入路由器,然后经物理层模块、数据链路层模块、网络层模块做相应的处理,根据数据的类型,决定需要交付交换结构或是路由选择交换机处理。
4.4.1 交换结构是如何工作的
- 存储器交换:由输入端口对数据报进行目标地址的查找及对分组的存储,再将分组复制到交换结构的存储器内,查找路由表,交付合适的输出接口
- 总线交换:由输入端口交付的数据报直接通过一根总线发送给合适的输出端口;由于只有一根总线,为了避免碰撞,如果总线正在使用,分组即在输入端口进行等待
- 互联网络交换:若总共有N个输入端口、N个输出端口,则有2N条总线将诸多端口相连,总线之间的交叉点可以联通与阻塞,以合理地利用总线资源进行数据传输
5 运输层 ->
5.1 专业名词概览
- 复用与分用:指数据在发送方由多个应用程序产生并通过一个运输层协议发出,而接收方从同一个运输层协议可以分发给不同的、对应的应用进程
- 端口:指协议端口号,是在协议栈层间的抽象的软件端口
5.2 端口在传输过程中发挥怎样的作用
端口的本质是软件层面的,工作在不同层级之间的地址
在不同的主机上,同种端口的端口号很可能是不同的,因为端口号只在本机有意义,区分的是在一台计算机中的不同端口
运输层协议的首部格式中,都需要填写目的端口号与源端口号,这样的意义在于厘清在传输过程中,数据是由哪个应用程序产生,又需要发往目的主机的哪个应用程序
根据使用者身份的不同,端口号分为熟知端口号与短暂端口号等不同类型
5.2.1 熟知端口号
熟知端口号是服务器端使用的端口号,互联网上的所有用户都明白不同的熟知端口号代表的不同固定程序
5.2.2 短暂端口号
短暂端口号是客户端在一段通信时动态选择的,通信结束后即将该端口号释放
5.3 UDP协议
用户数据报协议不需要事先建立连接,只是尽最大努力交付;同时,UDP协议每次交付一个完整报文
UDP协议通常用于对实时连接要求不高的数据传输,即使数据报丢失部分也不影响用户使用
5.4 TCP协议
传输控制协议需要事先建立连接,保证可靠交付;TCP协议根据实际情况将完整的报文分割为大小适合的多个数据块进行多次传输
5.4.1 TCP连接的建立
一个TCP连接由一对套接字作为端点并由其确定,而套接字由IP地址与端口号拼接而成
5.4.2 TCP如何保证可靠传输
TCP封装的报文由IP协议进行传输,但IP协议并不保证可靠传输,于是运输层的收发双方需要使用某些协议保证传输的可靠性
- 停止等待协议:接收方接收到报文后,向发送方发送确认报文,表示已经收到该报文;发送方接收到确认报文后才继续进行发送;若发送方在一段时间内仍没有收到对应的确认报文,就需要重新发送
- 连续ARQ协议:停止等待协议所浪费在等待上的时间过长,消耗了大量的带宽;发送方与接收方分别维护各自的窗口,接收方发送确认报文表示此报文前的所有报文都已经收到了;
窗口的设置保证了报文序号不会重复
5.4.3 TCP如何减少拥塞的发生
- 慢开始:发送方维护一个拥塞窗口,拥塞窗口表示最大能连续向网络上发送的数据量;慢开始从1开始,每个传播轮次就将拥塞窗口加倍
- 拥塞避免:为了防止慢开始导致拥塞窗口无限制增大,需要设置一个门槛,一旦拥塞窗口超过门槛,就将拥塞窗口的增加改为线性增加,每次增加1;当网络出现超时情况时,就将门槛减半,并将拥塞窗口重新设置为1
- 快重传:有时由于没有及时收到报文的确认,发送方错误地认为发生了拥塞;当发送方连续收到了三个对同一报文的确认,即采取快重传算法,重传下一报文
- 快恢复:由于网络在快重传时并未阻塞,发送方仅将门槛与拥塞窗口减半,而不是置1
5.4.4 TCP如何完成连接
三次握手与四次挥手
6 应用层->
6.1 专业名词概览
- 域名:为了方便用户,避免记忆IP地址而使用的名字
6.2 应用层综述
构成应用层的协议通常使用客户服务器模式
每一个需要通信的进程都应该被分配一个或多个端口号,所谓端口号即是对端口的标识
可以选择打开或关闭端口,关闭即在接收到指定目的端口的报文时丢弃或发送错误报文
通常来说,由客户端首先向服务器发送报文,而服务器的端口号是公开的,如果服务器的对应端口打开,则能接收请求,服务器根据收到的报文中包含的源端口号与客户端继续通信
6.3 DNS域名系统
6.3.1 域名结构
互联网采用层次树状结构的命名方法,即将域分为子域,子域再划分为子域的子域,每一个域分配一个域名
每个域名都由一个域名管理机构管理,但同时一个域也可以划分为若干个子域
6.3.2 域名服务器
一个域名服务器负责一个固定区域内的域名解析服务
根域名服务器负责告诉下层的域名服务器下一步应该查询哪个顶级域名服务器
顶级域名服务器负责管理在该顶级域名服务器的所有二级域名
权限域名服务器负责区域内的DNS查询请求
本地域名服务器负责接管主机发出的DNS查询请求,并代替主机进行后续的查询
6.3.3 主机如何访问希望访问的IP地址
- 主机以UDP报文格式向本地域名服务器提交DNS查询请求
- 本地域名服务器根据自己的高速缓存返回域名对应的IP地址
- 如果本地域名服务器不能回答,则分为迭代查询和递归查询两种查询方式
- 迭代查询指本地域名服务器向根域名服务器查询,然后再查询相应的顶级域名服务器,然后查询权限域名服务器,直至得出IP地址为止
- 递归查询指本地域名服务器向根域名服务器查询,若根域名服务器不能回答,则代替本地域名服务器查询顶级域名服务器,若顶级域名服务器不能回答,则代替根域名服务器查询权限域名服务器;最终层层返回结果
6.4 万维网
6.4.1 如何标志用户需要访问的文档
使用统一资源定位符URL 协议://主机:端口/路径
6.4.2 如何传输用户需要访问的文档
使用基于TCP协议的超文本传送协议HTTP
6.5 电子邮件
6.5.1 基于用户代理软件的邮件传输
- 邮件发送方与邮件接收方都有自己的用户代理,用户代理负责提供用户编辑邮件的环境
- 邮件编辑好后,用户代理通过邮件发送协议发送给发送方的邮件服务器
- 邮件服务器将收到的邮件依次发送给接收方邮件服务器
- 接收方邮件服务器收到邮件后,交付给相应的进程
- 接收人希望查看邮件时,使用邮件读取协议读取收到的邮件
6.5.2 邮件发送协议
SMTP(简单邮件传送协议)
本文共8581字符