本人在考研过程中二刷王道计算机网络时一步步总结出来的内容,既精简,也全面,包括几乎所有知识点和细节,将45万字的书最终浓缩进了这一万六千字!
目录
1、计算机网络体系结构
组成
-
组成部分上看:硬件、软件、协议 (网络的核心)
-
工作方式上看:边缘部分——由用户主机组成,用来通信和资源共享
核心部分——由大量网络和路由器组成,用来为边缘部分提供连通性和交换服务
-
功能组成上看:通信子网(实现数据通信)、资源子网(实现资源共享和数据处理)
五大功能
数据通信(计算机网络最基本最重要的功能)、资源共享、分布式处理、提高可靠性、负载均衡
分类
-
按分部范围:广域网(WAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)
-
按传输技术:广播式网络——所有计算机共享一个公共通信信道,局域网基本都采用广播式;
点对点网络——采用分组存储转发和路由选择机制,广域网基本都是点对点
-
按拓扑结构:总线形、星形和环形多用于局域网,网状网络多用于广域网
-
按交换技术:电路交换、报文交换、分组交换
-
按传输介质:有线、无线
性能指标
带宽、时延、吞吐量、速率、信道利用率等
时延:发送时延(传输时延)——将分组的比特推向链路的时间
传播时延——电磁波在信道中传播一定距离需要花费的时间
处理时延、排队时延
带宽:最高传输速率
协议、接口、服务
协议:控制对等实体之间通信的规则合集,是水平的(服务是垂直的),由语法(传输数据的格式)、语义(规定了所要完成的功能)和同步(规定执行各种操作的时序关系)组成,一个完整的协议应有线路管理、差错控制和数据转换等功能
接口:同一结点内相邻两层之间交换信息的连接点,不能跨层定义接口
服务:下层为紧邻的上层提供的系统调用,是垂直的(协议是水平的)
ISO/OSI参考模型和TCP/IP模型
OSI参考模型(7层)
端到端:
—— 应用层:用户与网络的界面,是最复杂的一层,用的协议最多
—— 表示层:处理两个通信系统中交换信息的表示方式,提供数据压缩、加密和解密
—— 会话层:为表示层实体或用户进程建立连接并在连接上有序的传输数据,也称建立同步
—— 传输层(进程-进程;单位:报文):是面向连接的,负责主机中两个进程之间的通信,为端
到端提供可靠的传输服务,流量控制、差错控制、服务质量和数据传输管理服务
点到点:
—— 网络层(主机-主机;单位:分组):是无连接+面向连接的,把分组从源端传到目的端,对
分组进行路由选择、流量控制、拥塞控制。差错控制和网际互联
—— 数据链路层(单位:帧):将网络层传来的IP组装成帧、差错控制、流量控制和传输管理
—— 物理层(单位:比特):透明传输比特流
**注意:其中高三层为资源子网,低三层为通信子网
TCP/IP模型(4层)
网络接口层(对应OSI物理层和数据链路层)
网际层(对应网络层,主机-主机):是无连接的
传输层(用户-用户或进程-进程):面向连接(TCP)+无连接的(UDP)
应用层(用户-用户)
综合模型(5层)
应用层:对应协议FTP、SMTP、HTTP
传输层:TCP、UDP
网络层:IP、ICMP、OSPF
数据链路层:Eethernet、PPP
物理层
2、物理层
基本概念
数据的串行传输:1比特1比特按时间顺序传输,远距离传输通常使用串行传输
并行传输:若干比特在多条通信信道内同时传输
码元传输速率(波特率):单位时间内所输传码元个数(脉冲次数或信号变化次数)
信息传输速率(信息速率/比特率):单位时间内所传输二进制码元个数
**若一个码元所携带信息量:n 波特率:M 则信息传输速率:Mn
电路交换
三阶段:连接建立、数据传输和连接释放
主要特点:通信时延小、有序传输、没有冲突
报文交换
是在交换结点采用的存储转发传输方式,现在较少使用
单位:报文
主要特点:无需建立连接、动态分配线路、提高线路可靠性和利用率、提供多目标服务
分组交换
单位:分组,即把大的数据块划分为合理的小数据块,再加上一些必要控制信息构成分组
主要特点:无建立时延(但存在转发时延)、减少了出错概率和重发数据量,需要传输额外信息量
数据报方式
是无连接的,不同的分组可以走不同的路径,按不同的顺序到达
虚电路方式
发送方和接收方建立了一条逻辑上的虚电路(不真正存在的)
主要特点:路由选择体现在建立连接阶段,一旦建立连接,就固定了物理路径
当某个结点或链路出现问题整个虚电路会被破坏
分组首部不包含目的地址,包含的是虚电路标识符
传输介质
双绞线:便宜
同轴电缆:由于外导体屏蔽层的作用,相比双绞线有更好的抗干扰特性,传输距离更远,价格更贵
光纤:用光脉冲来通信,带宽范围极大,光波利用光的全反射特性在纤芯进行传导
多模光纤:光源为发光二极管,光脉冲在传输过程中会逐渐展宽造成失真,适合于近距离传输
单模光纤:光源为半导体激光器,适合于远距离传输
无线电波:信号向所有方向传播
微波、红外线和激光:信号向固定方向传播
接口特性
-
机械特性:接线器尺寸、形状、引脚数目等
-
电气特性:电压范围
-
功能特性:电平的电压表示何种意义
-
过程特性(规程特性):不同功能的各种事件的出现顺序
物理层设备
中继器
主要功能:将信号整形并放大再发送出去,原理是信号再生(并非简单的将衰减信号放大)
主要特点:中继器没有存储转发功能,所以他不能连接两个速率不同的网段,两端网段一定要用同一个协议
**注意:放大器和中继器都有放大功能,但放大器放大的是模拟信号,只是简单的放大;中继器放大的是数字信号,原理是再生
集线器(Hub)
实质上是一个多端口的中继器
主要功能:将信号放大并转发,目的是扩大网络传输范围,而不具备定向传输能力,传输方向固定,是一个标准共享设备
**注意:Hub每个端口连接的网络部分是同一个网络的不同网段,能在半双工状态下工作,不能分割冲突域,所有端口都属于同一个冲突域,在一个时钟周期只能传输一组信息
3、数据链路层
为网络层提供服务
-
无确认无连接服务:适用于实时通信或误码率较低的信道,如以太网
-
有确认无连接服务:适用于误码率较高的信道,如无线通信
-
有确认的面向连接服务:适用于通信要求较高(可靠性、实时性)的场合
差错控制
奇偶校验码
只能检测奇数位出错情况,但并不知道哪些位出错了
CRC循环冗余码
利用的是模2除(异或运算),余数为帧检验序列(FCS)
CRC是有纠错功能的,只是数据链路层仅仅使用了它的检测功能,检测到帧出错便直接丢弃,是不可靠传输
流量控制与可靠传输机制
滑动窗口的特性
只有接收窗口向前滑动时,发送窗口才有可能向前滑动;数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的(与传输层中的滑动窗口协议不同)
停止等待协议
相当于发送窗口=1,接收窗口=1;
可保证帧的有序接收
后退N帧协议(GBN)
发送窗口大小>1,接收窗口大小=1;1=<发送窗口尺寸<=2的n次方-1,若大于最大值,接收方无法分辨新帧和旧帧
发送方无需收到一个帧的确认帧后才能发送下一帧,可以连续发送帧,接收方也不用收到一个发一个确认帧,采用累积确认和捎带确认,但当接收方检测到出错帧后,将直接丢弃后来收到的所有正确帧,并要求发送方重发,即只能有序接收帧
选择重传协议(SR)
发送窗口大小>1,接收窗口大小>1;
接收窗口尺寸+发送窗口尺寸<=2的n次方,接收窗口尺寸<发送窗口尺寸,且接收窗口<=2的n-1次方
是无序接收,接收方一旦怀疑帧出错,便向发送方发送一个否定帧NAK,发送方只需重传出错帧,无需重传已到达接收端的正确帧,所需缓冲区的数目等于窗口大小,而不是序号数目
介质访问控制
信道划分介质访问控制
信道划分实质上就是通过分时、分频、分码等方法把原来一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道变为点对点信道
多路复用技术是实现信道划分的途径,即把多个信号组合在一条物理信道上进行传输,使多个设备共享信道资源,提高信道利用率
频分多路复用(FDM)
将物理信道总带宽分割成若干单个信号带宽,一个子信道传输一种信号,同一时间可以同时发送多路信号
时分多路复用(TDM)
将一条物理信道按时间分为若干时间片,轮流分配给多个信号使用,每个时间片由一个信号占用,但在一条物理信道上可交叉传输多个信号
统计时分多路复用(STDM)
是TDM的一种改进,STDM帧不固定分配时隙,而按需动态分配时隙,当终端有数据传送时,才会分配到时间片
码分多路复用(CDM)
采用不同的编码来区分各路原始信号,既共享信道频率又共享时间
码分多址(CDMA)
将每个比特单位划分为m个短的时间槽,称为码片
A站向C站发出的信号用一个向量表示,B向C发送的信号用另一个信号表示,两个信号要求正交,C收到的序列与A、B码片正交,分别得到A、B发送的数据
随机访问介质访问控制(必考)
随机访问协议中用户能随机发送信息占用全部信道速率,于是需要解决当多个用户同时发送信息时可能产生的帧冲突问题,为解决这个问题,每个用户需要按照一定规则反复重传帧,直到帧无碰撞通过
常用的随机访问介质访问控制协议(争用型协议)有:ALOHA、CSMA、CSMA/CD、CSMA/CA
ALOHA协议
纯ALOHA协议:用户随意发送,如果一段时间内没有收到确认,发送站点需要等待一段时间后再发送数据直至发送成功
时隙ALOHA协议:将时间划分为一段段等长的时隙,规定只能在一段时隙的开始才可以发送一个帧,减少了帧冲突的可能性,吞吐量比纯ALOHA大了1倍
CSMA协议
它的思想是每个站点在发送之前都监听一下信道,若信道空闲再发送,它比ALOHA多了一个载波监听装置(根据电压摆动值发现信道是否忙碌)
坚持CSMA
侦听信道忙,则坚持侦听,侦听到空闲后立即发送,若发生冲突,则随机等待一段时间后再发送
非坚持CSMA
侦听信道忙,则放弃侦听,随机等待一段时间后再重复上述过程
p坚持CSMA
用于时分信道
侦听信道忙,则持续侦听(推迟到下一时隙再侦听),侦听到空闲后以概率p发送,以概率1-p推迟到下一时隙
CSMA/CD协议
是CSMA的改进方案,用于有线连接的局域网,适合于总线形网络或半双工网络环境
侦听信道忙,则持续侦听直至信道空闲,发送过程中持续侦听信道,若检测到碰撞,则中止发送并发送一个拥塞信号让所有用户知道,再执行指数退避算法,等待一段随机时间后再侦听信道
以太网把端到端的往返时延2 τ 称为征用期(冲突窗口/碰撞窗口),每个站点在自己发动数据后的一小段时间内存在发生碰撞的可能性,只有经过征用期这段时间还未检测到碰撞发生时,才能确定这次发送不会产生碰撞
总线中所有数据帧都必须大于一个最小帧长,最小帧长=总线传播时延x数据传输速率x2
对于10Mb/s的以太网,在征用期内可发送64B,规定最短帧长为64B,凡是小于64B的帧都是由于冲突而异常终止的无效帧,收到立即丢弃
除了检测中途,CSMA/CD还能从冲突中恢复,二进制退避算法精髓如下:
-
先确定基本退避时间,一般取争用期(2 τ )
-
定义重传次数k,k不超过10,当k大于10,k就不再增大,一直等于10
-
重传所需退避时间为r倍的争用期,2 rτ (r取[0、1、...、2的k次方-1])
-
若重传次数达到16次仍不成功,则此帧永远无法发出,抛弃此帧,并向高层报错
CSMA/CA协议
CSMA/CA用于无线局域网,检测信道采用能量检测、载波检测和能量载波混合检测三种方式
CSMA/CA将CSMA/CD的碰撞检测改为碰撞避免(并不是完全避免,只是降低碰撞发生概率)
该协议规定所有站在发送完成后要等待一段很短的时间才能发送下一帧,这段时间被称为帧间间隔(IFS),有下列3种IFS:
-
SIFS:最短的IFS
-
PIFS:中等长度的IFS
-
DIFS:最长的IFS,用于异步竞争访问的时延,当站点最初有数据要发送时,在等待一个DIFS后就发送整个数据帧
处理隐蔽站问题
是指无线局域网中,A、B两个站点距离较远彼此都听不见对方,两个站点都检测到信道空闲于是发送数据,导致碰撞发生
于是802.11允许发送站对信道进行预约,发送站先广播一个请求发送RTS控制帧,若信道空闲,接收站广播一个允许发送CTS控制帧,用于给源站许可以及指示其他站点不要发送
轮询访问介质访问控制
令牌传递协议
轮询访问中用户不能随机发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道分配,当计算机没有数据发送时,令牌(唯一)就在环形网中游荡,当要发送数据的计算机拿到令牌后才能发送,因此不会发生冲突
局域网
以太网与IEEE 802.3
逻辑拓扑是环形结构,物理拓扑是星行结构,以太网中所有计算机共享一条总线,信息以广播方式发送,并使用了CSMA/CD方式对总线进行访问控制,通常将802.3局域网称为以太网
以太网采用两项措施以简化通信:
-
采用无连接通信方式,不要求接收方发送确认,提供不可靠服务
-
发送的数据使用曼彻斯特编码
10BASE-T非屏蔽双绞线以太网速度为10Mb/s,拓扑结构为星形网
计算机与外界局域网的连接是通过网络适配器(网卡)实现的,网卡工作在物理层,其作用是进行数据的串并转换,全世界的每块网卡在出厂时都有一个唯一的代码,称为介质访问控制地址(MAC地址/物理地址)
MAC帧的组成部分:6B目的地址、6B源地址、2B类型、46~1500B数据,4B校验码(FCS)
其中校验码采用32位CRC,需要校验除了前导码之外的所有部分
高速以太网
速率达到或超过100Mb/s的以太网
-
100BASE-T以太网:支持全双工和半双工,在半双工下使用CSMA/CD协议,在全双工下无冲突工作,不使用CSMA/CD(使用铜线传输)
-
吉比特以太网(千兆以太网):1Gb/s下用全双工和半双工工作(使用铜线传输)
-
10吉比特以太网:只工作在全双工方式,没有争用问题,也不使用CSMA/CD(使用光纤传输)
IEEE 802.11
无线局域网可分为有固定基础设施(有基站)无线局域网和无固定基础设施移动自组织网络
对于有固定设施:又称WI-FI,使用星形拓扑,中心接入点称为AP,使用CSMA/CA协议
对于自组网络:没有基本服务集中的AP,而是由一些移动站组成的临时网络,各结点地位平等,中间结点都为转发结点,都具有路由功能
广域网
广域网为因特网的核心部分,由一些结点交换机和连接这些交换机的链路组成,结点之间都是点到点连接
**注意:结点交换机和路由器的功能都是分组转发,但结点交换机在单个网络中转发分组,路由器在多个网络构成的互联网中转发分组
PPP协议
是面向字节的协议,帧长度都是整数个字节,是不可靠传输协议,提供差错检测但无纠错功能,只支持全双工
三部分组成:
-
链路控制协议(LCP):用于建立、配置、测试和管理数据链路
-
网络控制协议(NCP):PPP允许采用多种网络层协议,每个不同的网络层协议用一个NCP配置,为网络层协议建立和配置逻辑连接
-
一个将IP数据报封装到串行链路的方法
PPP帧的组成:2B标志字段(开头结尾各1B)、1B地址字段、1B控制字段、2B协议段、0~1500B信息段、2B校验字段
HDLC协议
是面向比特的协议,使用编号和确认机制,提供可靠传输
有三种数据操作方式:
-
正常响应方式
-
异步平衡方式
-
异步响应方式
HDLC帧和PPP帧相比,没有协议字段,且控制字段可变,可根据其第1、2位的取值将HDLC帧划为三类
-
信息帧:第1位为0
-
监督帧:第1、2位分别为1、0
-
无编号帧:第1、2位都为1
数据链路层设备
网桥
两个或多个以太网通过网桥连接后就成为一个覆盖更大范围的以太网,原来的每个以太网就称为一个网段,网桥可以使各个网段成为隔离开的碰撞域,因此一个网段的故障不会影响到另一个网段的运行
透明网桥
选择的不是最佳路由,按照自学习算法处理收到的帧
源路由网桥
选择的是最佳路由,源站通过发送一个发现帧以及根据每个目的站返回的应答帧选择出最佳路由
**注意:最佳路由不是经过路由器最少的路由,而是发送帧往返时间最短的路由
局域网交换机
本质上是一个多端口网桥,以太网交换机可以将网络分成小的冲突域,还可以实现虚拟局域网(VLAN),VLAN不仅可以隔离冲突域,还可以隔离广播域
特点:
-
每个端口都与单台主机直接相连(网桥端口连接一个网段)
-
独占媒体带宽:对于10Mb/s的共享式以太网,若有N个用户,每个用户占有的平均带宽只有总带宽的1/N,但用了以太网交换机后,每个用户并不和其他用户共享带宽而是独占带宽,所以交换机总容量为Nx10Mb/s
-
一般都具有多种速率的端口
两种交换模式:
-
直通式:只检查帧的目的地址,缺乏智能性和安全性,无法支持具有不同速率的端口的交换
-
存储转发式:可靠性高,能支持不同速率端口转换,但延迟大
4、网络层
(历年考察的重中之重,出综合题概率大,IPv4历年都有考查)
网络层功能
异构网络互联
网络互联是指将两个以上的计算机通过一定的办法用一种或多种中间设备(中继设备)相互连接起来,由于参加网络互联的计算机网络都采用相同的网际协议(IP),因此可以把互联后的计算机网络视为一个虚拟IP网络,也就是逻辑互联网络
路由与转发
-
确定路由(确定哪一条路径)
-
分组转发
拥塞控制
-
轻度拥塞:随着网络负载增加,网络吞吐量明显小于正常吞吐量
-
拥塞状态:网络吞吐量随着网络负载的增大而下降
-
死锁状态:网络负载继续增大,网络吞吐量下降到0
拥塞控制方法:
-
开环控制:设计网络时实现将有关发生拥塞的因素考虑周到,是一种静态的预防方法
-
闭环控制:实现不考虑,采用监测网络系统去监视,是一种动态的调整网络系统的方法
路由算法
静态路由与动态路由
-
静态路由算法(非自适应路由算法):网络管理员手动配置、修改路由信息,不能及时适应网络状态变化
-
动态路由算法(自适应路由算法):路由表项是通过路由器之间彼此交换信息,按照一定算法优化出来的,以适应不断变化的网络
常见的动态路由算法:距离向量路由算法、链路状态路由算法
距离-向量路由算法
特点:好消息传得快,坏消息传的慢,即慢收敛现象,慢收敛是导致发生路由回路的根本原因
所有结点都定期将他们的整个路由选择表传送给所有与之相邻的结点,表中包含路径目的地和路径代价(距离)
最常见的是应用层的RIP算法,采用“跳数”作为距离度量
链路状态路由算法
要求每个结点都具有完全的网络拓扑信息,他们执行两项任务:
-
主动测试所有相邻结点状态
-
定期将链路状态传播给其他所有结点(只有当链路状态发生变化时才发送信息)
典型的算法是OSPF算法
层次路由
因特网将整个互联网划分为许多较小的自治系统(一个自治系统包含很多局域网),每个自治系统有权自主决定本系统内应采用何种路由选择协议
-
IGP(内部网关协议):一个自治系统内部所使用的路由选择协议,有RIP、OSPF等
其中OSPF将一个自治系统再划分为若干区域(Area),每个路由器都知道本区域内如何把分组传到目的地的细节,而无需知道其他区域的内部结构
-
EGP(外部网关协议):自治系统之间使用的路由选择协议,在不同自治系统之间交换路由信息,具体有BGP
IPv4
分组格式
分为首部和数据部分
首部:固定部分(20B):版本、首部长度、总长度、标识、标志、片偏移、生存时间、协议、首部校验和(只校验首部)、源地址字 段、目的地址字段;可变部分:可选字段、填充
首部长度(4位):以4B为单位,最大值为60B,最常用长度为20B
总长度(16位):以字节(1B)为单位,指首部和数据之和长度,数据报最大长度为65535B,以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报总长度不能超过下面的数据链路层MTU值,所以才有分片的出现
片偏移(13位):以8B为单位,指出较长的分组在分片后某片在原分组的相对位置,每个分片的长度一定是8B的整数倍
标志(3位):最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片或没有分片,中间一位是DF,只有当DF=0才允许分片
网络层转发分组的流程
1、从数据报的首部提取目的主机IP地址D,得出目的网络地址N
2、若网络N与此路由器直接相连,则把数据直接交付给目的主机D,这称为直接交付,否则3
3、若路由表中有目的地址为D的主机路由,则把数据传送给路由表中指明的下一跳路由,否则4
4、若路由表中有到达网络N的路由,则传给指明的下一跳路由,否则5
5、若路由表中有一个默认路由,则把数据传送给默认路由,否则6
6、报告转发分组出错
**注意:
-
得到下一跳路由的IP地址后并不是直接将其填入数据报,而是通过ARP将其转化为MAC地址,将其放到MAC帧首部中,根据此MAC地址找到下一跳路由器
-
在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但网桥在转发帧时不改变源地址
IPv4地址
每台主机(或路由器)都被分配一个32位的全球唯一标识符,即IP地址,由网络号和主机号两部分组成
A类(1~126):网络号1B、主机号3B,可用网络数为2^7-2,每个网络中最大主机数为2^24-2
B类(128~191):网络号2B、主机号2B,可用网络数为2^14-1,每个网络中最大主机数为2^16-2
C类(192~223):网络号3B、主机号1B,可用网络数为2^21-1,每个网络中最大主机数为2^8-2
D类(224~239):多播地址
**注意:主机号全0表示本网络本身;网络号全0表示本网内某个特定主机;主机号全1是直接广播地址,对特定网络上所有主机广播;32位全为0表示本网络上的本主机;32位全为1表示整个TCP/IP网络的广播地址
**注意:IP地址是标志一台主机(或路由器)和一条链路的接口,当一台主机同时连接到两个网络时该主机就有两个IP地址(路由器每个端口都至少分配一个IP地址)
网络地址转换(NAT)
是指通过将专用网络地址转换为公用地址,而对外隐藏内部IP地址,使得整个专用网只需要一个全球IP地址就可以与因特网相连,专用网络本地IP地址(私有IP地址)是可重用的
**注意:普通路由器在转发IP数据报时不改变源IP地址和目的IP地址,但NAT路由器在转发时一定要更换IP地址(转换源IP地址或目的IP地址)
子网划分与子网掩码
-
子网划分
子网划分只是把IP地址的主机号进行再划分,而不改变原来地址的网络号,因此用一个IP地址本身或IP数据包首部无法判断源主机或目的主机连接的网络是否进行了子网划分,子网划分可以增加IP地址空间利用率,减小广播域的大小
-
子网掩码
因特网标准规定,所有网络都必须使用子网掩码,如果一个网络未划分子网,就采用默认子网掩码
-
使用子网掩码时的路由交换
路由器在进行信息交换时,除了把目的网络地址和下一跳告诉对方之外,还要将子网掩码告诉对方
-
子网的网络号(网络地址)
IP地址和子网掩码逐位相“与”得到子网的网络号
无分类域间路由选择(CIDR)
一种消除ABC类网络划分且可以在软件支持下实现超网构造的一种IP地址划分方法
格式为{<网络前缀>,<主机号>},如128.14.32.5/20,它的掩码为20个连续的1和12个连续的0,网络前缀为前20位
-
最长前缀匹配(最佳匹配)
使用CIDR时,路由表中的每个每个项目由网络前缀和下一跳组成,在查找路由表时可能又不止一个结果,选择有最长网络前缀的路由,因为网络前缀越长地址块就越小,路由就越具体
地址解析协议(ARP)
在从网络层到数据链路层的数据封装时,IP数据报分组被封装成MAC帧,数据链路层看不见数据分组中的IP地址,在链路上传输帧时必须使用硬件地址(MAC地址),所以需要一种方法完成IP地址到MAC地址的映射,即ARP协议,每个主机都有一个ARP高速缓存,用来存放本局域网内主机和路由器的IP地址到MAC地址的映射表,即ARP表
工作原理
-
主机A给B发送IP数据报之前先在ARP缓存中查看是否有主机B的IP地址
-
如果有,就可以根据映射查出对应MAC地址,将其写入MAC帧
-
如果没有,就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,所有主机收到ARP请求
-
主机B收到请求后向主机A发送响应ARP分组,其中包括B的IP地址到MAC地址的映射关系
-
A将映射关系写入ARP缓存,并按MAC地址发出MAC帧
**注意:ARP请求分组是广播发送,但ARP响应分组是普通单播
四种情况
-
发送方为主机,要发送到本网络的另一台主机:用ARP找到目的主机硬件地址
-
发送方为主机,要发送到另一网络的另一主机:用ARP找到本网络的一台路由器的硬件地址,剩下的工作交给它
-
发送方为路由器,要发送到本网络的另一台主机:用ARP找到目的主机硬件地址
-
发送方为路由器,要发送到另一网络的另一主机:用ARP找到本网络的一台路由器的硬件地址,剩下的工作交给它
动态主机配置协议(DHCP)
常用于给主机动态分配IP地址,它提供了即插即用的联网机制,允许一台计算机加入新的网络和获取IP地址而不需要手工参与,DHCP是应用层协议,基于UDP,采用客户/服务器方式
工作过程如下
-
DHCP客户机广播DHCP发现消息,试图找到本网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址
-
DHCP服务器收到DHCP发现后,向网络中广播DHCP提供消息,其中包括提供的IP地址和相关配置信息,但此时只是拟分配,并没有真正分配
-
客户机收到消息后如果接受,那么通过DHCP请求消息向服务器请求提供IP地址
-
服务器广播DHCP确认消息,将IP地址分配给该主机
**注意
-
DHCP允许网络上配置多台DHCP服务器,所以客户机发送请求后可能收到多个应答,通常会选择最先到达的
-
服务器分配给客户的IP地址是临时的,这段时期称为租用期,租用时间由服务器决定,客户机也可以在报文中提要求
网际控制报文协议(ICMP)
为了提高IP数据报交付成功的机会,ICMP协议来让主机或路由器报告差错和异常情况,ICMP报文作为IP数据报的数据,加上数据报的首部,组成IP数据报发送出去,是网络层协议
-
ICMP差错报告报文
用于报告差错和异常情况
五种类型
-
终点不可达
-
源点抑制
-
时间超过
-
参数问题
-
改变路由(重定向)
不应发送ICMP差错报告报文的几种情况
-
对ICMP差错报告报文不再发送ICMP差错报告报文
-
对第一个分片的数据报片所有后续报片都不发送
-
对具有组播地址的数据报不发送
-
对具有特殊地址的数据报不发送
-
-
ICMP询问报文
四种类型
-
回送请求和回答报文(常用)
-
时间戳请求和回答报文(常用)
-
掩码地址请和回答报文
-
路由器询问和通告报文
-
ICMP的两个常见应用
-
PING:用来测试两台主机连通性,工作在应用层,直接使用了网络层ICMP询问报文中的回送请求和回答报文,而未使用传输层的TCP或UDP
-
Traceroute:用来跟踪分组经过的路由,工作在网络层,使用了ICMP差错报告报文中的时间超过报文
IPv6
上述所介绍的划分子网、采用CIDR以及采用NAT都只能一定程度上缓解“IP地址耗尽”的问题,想要从根本上解决此问题必须采用具有更大地址空间的新版本IPv6
IPv6特点:
-
将IPv4的地址从32位(4B)扩大到128位(16B)
-
首部长度固定部分必须是8B的整数倍,一般为40B
-
取消了协议、总长度、服务类型以及校验和字段
-
支持即插即用(即自动配置,分配IP地址不需要DHCP协议)
-
只有在包的源节点才能分片,是端到端的,传输过程中的路由器不能分片,所以一般意义上IPv6不能分片,如果传输的数据报过大将直接丢弃
-
增大了安全性,有身份验证和保密功能
IPv6地址
三种目的地址基本类型
-
单播地址:即传统点对点通信,可做源地址+目的地址
-
多播地址:即一点对多点的通信,分组被交付到每台计算机
-
任播地址:任播的目的站是一组计算机,但数据在交付时只交付给其中一台计算机,通常是距离最近的一台
IPv6地址的表示方法:把地址中的每4位用一个十六进制数表示,用冒号分隔每16位,当16位域的开头有一些0时可以省略,但在域中至少有一个数字,当有相继的0值域时,可以用双冒号表示,但双冒号只能出现一次
IPv4向IPv6的过渡
-
双协议栈技术:在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信又可以和IPv6网络通
-
隧道技术:将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输
路由协议
域内路由和域间路由
自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择
-
内部网关协议(IGP):在自治系统内部使用的路由选择协议,如RIP、OSPF
-
外部网关协议(EGP):在不同自治系统之间使用的路由选择协议,目前使用最多的是BGP-4
路由信息协议(RIP)
一种基于距离向量算法的内部路由选择协议,最大优点是简单
RIP规定:
-
RIP认为最好的路由是它通过的路由器数目最少,即优先选择跳数少的路径
-
允许一条路径最多包含15个路由器(即15跳),因此距离为16时代表网络不可达
-
两个路由器之间默认30秒广播一次路由更新信息,以动态维护路由表
-
RIP中每个网络的子网掩码必须相同,但在新的RIP2中支持变长子网掩码和CIDR
特点:
-
仅和相邻路由器交换信息,交换的信息是当前路由器所知道的全部信息
-
正常情况下收敛过程快
-
当网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传的慢”
-
是应用层协议,使用UDP传输
开放最短路径优先协议(OSPF)
基于链路状态路由算法的协议
特点:
-
向本自治系统中的所有路由发送信息,使用洪泛法
-
发送的信息是与本路由器相邻的所有路由的链路状态,这只是路由器所知道的部分信息
-
没有“坏消息传的慢”问题
-
是网络层协议,不使用UDP或TCP,直接使用IP数据报传输
-
支持可变长度的子网划分和CIDR
边界网关协议(BGP)
是基于路径向量算法的在不同自治系统之间交换路由信息的协议,常用于互联网的网关之间
特点:
-
只能力求寻找一条能够到达目的网络且较好(非最佳)的路由
-
BGP刚运行时交换整个BGP路由表,之后只交换有变化的部分
-
是应用层协议,基于TCP
-
支持CIDR
IP组播
即把一个分组发送给指定的一组目的主机,一台主机可以同时属于多个组,主机组播时仅发送一份数据,只有数据在传输路径出现分岔时下将组播复制后再继续转发,组播需要支持组播协议的组播路由器的支持
IP组播地址
IP组播使用D类地址格式,每个D类地址标志一个组播组,组播数据报首部中的协议字段为2,表明使用IGMP
特点:
-
组播数据报是尽最大努力交付,不提供可靠交付
-
组播地址只能用于目的地址,而不能用于源地址
-
对组播数据报不产生ICMP差错报文,因此如果在PING命令后输入组播地址,将永远不会收到响应
-
并非所有D类都可以做组播地址,每个组播地址只有后23位用作组播,并用于映射到MAC地址
IP组播分为两种,一种是在局域网上的硬件组播,一种是在因特网上的硬件组播
IGMP与组播路由算法
要使路由器知道组播组成员的信息,需要利用因特网组管理协议(IGMP),而为了把组播数据报用最小代价传送给所有组成员,需要用到组播路由算法,主要有三种:基于链路状态、基于距离向量和PIM(可以建立在任何协议上)
移动IP
移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段实现的漫游功能,并保证基于网络IP的网络权限在漫游中不发送任何改变
工作流程:
-
移动结点在本地时按传统TCP/IP方式通信
-
结点漫游到外网时仍用固定IP地址通信,为了能够收到对端发给他的IP分组,移动节点需要向本地代理注册一个当前的位置地址(临时辅地址),也叫转交地址
-
本地代理构建一条通向转交地址的隧道,将截获的IP分组通过隧道送到转交地址
-
在转交地址解除封装恢复原始IP地址,送到移动结点
-
移动结点通过外网路由器或者外部代理向对端发送IP分组
-
结点回到本地网时注销转交地址
网络层设备
-
路由器的组成和功能
路由器是具有多个输入输出端口的专用计算机,其任务是连接不同的网络(连接异构网络),并完成路由转发,在多个逻辑网络(即多个广播域)互联时必须使用路由器
路由器主要完成两个功能,一是分组转发,二是路由计算,其中分组转发分为交换结构、一组输入端口和一组输出端口三部分,交换结构本身就是一个网络
路由器与网桥的重要区别是,网桥与高层协议无关,路由器是面向协议的
-
路由表与路由转发
标准的路由表有四个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口
路由表与转发表的区别:
路由表不等于转发表,转发表是由路由表得来的,两者格式不同,转发表中含有一个分组要发往的目的地址,以及分组的下一跳,分组实际的分组转发是靠直接查找转发表,而不是路由表
5、传输层
传输层的作用
-
传输层提供应用进程之间的逻辑通信(即端到端的通信),与网络层的区别是,网络层提供的是主机之间的逻辑通信
-
复用和分用,复用是指发送方的不同进程都可以使用同一个传输层的协议传送数据,分用是指接收方的传输层在剥去报文首部后能把这些数据正确交付到目的应用程序
-
传输层要对收到的报文进行差错检测(首部和数据部分),而网络层只检查首部,不检验数据部分是否出错
-
提供面向连接的TCP和无连接的UDP协议,而网络层无法同时实现两种协议
传输层的端口
-
端口的作用:端口能让应用层的各种进程将其数据通过端口向下交付给传输层,作用相当于IP地址在网络层的作用或MAC地址在数据链路层的作用,不过IP地址和MAC地址标识的是主机,端口标识的是主机的应用程序
-
端口号:应用程序通过端口号进行标识,端口号长度为2B,能够表示65536个不同的端口号
-
端口号范围分为服务器端使用的端口号和客户端使用的端口号
服务器端分为两类:熟知端口号(范围0-1023,FTP:21;TELNET:23;SMTP:25;DNS:53;TFTP:69;HTTP:80;SNMP:161),登记端口号(范围1024-49151)
客户端使用的端口号,仅在客户进程运行时才动态地选择,范围为49152-65535
-
套接字:端口号拼接到IP地址即构成套接字Socket,在网络中采用发送方和接收方的套接字来识别端点格式为(IP地址:端口号),它唯一的标识网络中一台主机和其上的一个应用进程
无连接服务和面向连接服务
-
面向连接就是在双方通信前先建立连接,过程中连接情况被监控,通信结束才释放
-
无连接服务是指两个实体通信之前不需要建立连接,将信息直接发到网络中,让该信息尽力而为的往目的地发送
-
TCP适用于可靠性更高的场合,如FTP,HTTP,TELNET
-
UDP在IP之上提供附加服务:复用、分用和差错检测,速度快实时性好适用于小文件传输协议(TFTP),DNS,SNMP和实时传输协议(RTP)
UDP协议
UDP概述
UDP常用于一次性传输较少数据的网络应用,如DNS、SNMP,也常用于多媒体应用
特点:
-
无需建立连接,不会引入建立连接的时延,速度快
-
无连接状态,因此也不需要维护连接状态
-
分组首部开销小,TCP有20B开销,而UDP只有8B
-
支持一对一、一对多、多对一和多对多的交互通信
-
面向报文,一次发送一个报文,既不合并,也不分割
UDP首部格式
首部8B:
-
源端口:在需要对方回信时选用,不需要时可用全0
-
目的端口:在终点交付报文时必须用到
-
长度:包括首部和数据,最小值是8(仅有首部)
-
校验和:可选,不想计算校验和时,该字段为全0,若检测有错则丢弃
UDP校验
在计算校验和之前需要在首部之前再临时添加12B的伪首部,伪首部不向上或向下传送,仅仅用来计算校验和
-
若UDP数据报部分长度不是偶数个字节,则需要填入一个全0字节,但此字节和伪首部一样是不发送的
-
如果UDP校验后发现数据报出错那么可以丢弃,也可以交付给上层,但需要附上错误报告
-
通过伪首部不仅可以检查源端口号、目的端口号和数据部分,还可以检查IP数据报的源地址和目的地址
TCP协议
是在不可靠的IP层之上实现的可靠传输协议,主要解决了传输的可靠、有序、无丢失和不重复问题
特点:
-
是面向连接的协议,提供可靠的交付服务
-
每条TCP连接只能有两个端点,只能是点对点的(一对一)
-
提供全双工通信,允许发送双方在任何时候发送数据,所以在连接两端都设有发送缓存和接收缓存以临时存放数据
-
是面向字节流的,吧应用程序交下来的数据视为一连串的无结构字节流
TCP首部报文段
首部前20B固定,首部长度最短为20B,后面是根据需要而增加的选项,一般为4B整数倍
几个重要首部字段:
-
源端口和目的端口
-
序号:4B,发送的字节流中每个字节都按顺序编号,序号字段的值指的是本报文段所发送数据的第一个字节的序号
-
确认号:4B,是期望收到对方下一个报文段的第一个数据字节的序号,确认号之前序号所表示的所有数据都已收到
-
数据偏移(即首部长度):4位,数据偏移单位为4B,所以当数据偏移为15时代表首部最大长度为60B
-
紧急位URG:URG=1表明有紧急数据传送,需要和紧急指针配合使用,即数据从第一个字节到紧急指针所指字节为紧急数据
-
确认位ACK:ACK=1才有效,为0时无效,建立连接后所有传送的报文段都需要把ACK置1
-
复位位RST:RST=1表明出现严重差错,必须释放连接重新建立连接
-
同步位SYN:SYN=1,ACK=0表明是一个连接请求报文,当ACK=1,SYN=1表明是一个连接接受报文
-
窗口:2B,指允许对方再发送的数据量,即自己所剩接收缓存空间
-
校验和:2B,检验数据+首部,也要加上伪首部(其中协议字段为6,在UDP中为17)
-
选项:长度可变,只规定了一种选项,即MSS(最大报文段长度),注意其所指的仅仅是数据段最大长度
TCP连接管理
TCP连接的建立采用客户/服务器方式,注意TCP连接的端点不是主机、不是主机的IP地址、不是应用进程,也不是传输层的协议端口,而是套接字(socket),每条TCP连接唯一的被两个的socket确定
-
TCP连接的建立(三次握手)
规定客户机为A,服务器为B
1)A向B发送连接请求报文段,此时不携带数据,但要消耗一个序号
SYN=1,seq=x
2)B同意连接发送确认报文,此时也不携带数据,消耗一个序号
SYN=1,ACK=1,ack=x+1,seq=y
3)A再回复确认报文,并为连接分配缓存和变量,该报文段可以携带数据,若不携带数据则不消耗序号
ACK=1,ack=y+1,seq=x+1
**注意:服务器端资源是在第二次握手时分配的,客户端是在第三次,这就使得服务器易受洪泛攻击,解决办法是设置SYN cookie
-
TCP连接的释放(四次握手)
1)A发送连接释放报文段,停止发送数据,主动关闭TCP连接,中止位FIN置1,此时序号seq等于前面已传送过的数 据的最后一个字节的序号加1,FIN报文段消耗一个序号,这时对方还可以发送数据
FIN=1,seq=u
2)B发出确认,此时从客户机到服务器方向的连接被释放,TCP连接处于半关闭状态,但此时若服务器要发送数据,客户机仍要接收
ACK=1,seq=v,ack=u+1
3)若B再没有数据要发送,则发出连接释放报文
FIN=1,ACK=1,seq=w,ack=u+1
4)A发出确认,但此时TCP连接还未释放,必须经过等待计时器设置的时间2MSL(最长报文寿命)后才关闭连接
ACK=1,seq=u+1,ack=w+1
TCP重传
有两种事件会导致重传,超时和冗余ACK
-
超时:TCP每发送一个报文段就会设置一个计时器,计时器到时还未收到确认时就要重传
-
冗余ACK:就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认,当发送方收到对同一个报文段的3个冗余ACK时,就认为该报文段之后的报文段已丢失,执行重传,这种方式通常较快速重传
TCP流量/拥塞控制
-
接收窗口(rwnd):反应接收方容量
-
拥塞窗口(cwnd):发送方根据自己估算的网络拥塞程度而设置的窗口值,反应网络当前容量
-
发送窗口上限:min{rwnd,cwnd}
发送方如何维护拥塞窗口:
1)慢开始和拥塞避免
-
慢开始:先将cwnd设为1,每收到一个报文段确认后cwnd+1,也可理解为每经过一个传输轮次(RTT)后cwnd按指数规律x2增大,一直增大到一个ssthresh(慢开始门限值/阀值),然后改用用拥塞避免算法
-
拥塞避免:每经过一个RTT,cwnd+1而不是加倍
**注意:当cwnd=ssthresh时既可以用慢开始算法也可以用拥塞避免算法(通常做法)
2)网络拥塞的处理
网络拥塞时把慢开始门限ssthresh设为此时发送方cwnd的一半(需>=2),再将cwnd重新设为1,执行慢开始算法
**注意:拥塞避免并不能完全避免拥塞
3)快重传和快恢复
是对慢开始和拥塞避免的改进
-
快重传:在冗余ACK有介绍
-
快恢复:与慢开始不同的是,收到3个冗余ACK后,它把cwnd值设为改变后的ssthresh值,而不是重新设为1,然后执行拥塞避免算法
6、应用层
网络应用模型
客户/服务器(C/S)模型
-
客户程序必须知道服务器程序的地址,而服务器程序不需要知道客户程序的地址
-
整个网络的管理工作由少量服务器担当
-
客户机之间不直接通信
-
可扩展性不佳
P2P模型
-
没有服务器的存在,每个结点都同时具有下载、上传的功能
-
任意一对计算机(对等方)直接互相通信
-
多个客户机之间可以共享文档
-
可扩展性好
-
网络健壮性强,单个结点失效不会影响其他结点
域名系统(DNS)
用来把便于人们记忆的具有特定含义的主机名转换成便于机器处理的IP地址,DNS采用客户/服务器模型,其协议运行在UDP之上,使用53号端口
层次域名空间
有*域名、二级域名、三级域名和四级域名等
域名服务器
-
根域名服务器:用来管辖*域,是最高层次的域名服务器,也是最重要的域名服务器,无论是哪个本地域名服务器,只要自己无法解析一个域名,就必须先求助于根域名服务器,通常他并不直接将待查询的域名转换为IP地址,而是告诉本地域名服务器下一步应当找哪个*域名服务器进行查询
-
*域名服务器:管理所有二级域名,给出的应答可能是最后结果,也可能是下一步应当查找的域名服务器的IP地址
-
授权(权限)域名服务器:每台主机都必须在授权域名服务器处登记,授权域名服务器能将自己管辖的主机名转换为IP地址
-
本地域名服务器:当一台主机发出DNS请求时这个报文就会发送给本地域名服务器,windows系统中配置本地连接时所填写的DNS地址就是本地域名服务器的地址
域名解析过程
两种方式:递归查询(比较少用)和递归迭代相结合的查询
-
递归查询:本地域名服务器只需向根域名服务器查询一次,剩下的查询都是递归的在其他几个域名服务器之间进行的,最终本地域名服务器从根域名服务器得到IP地址并返回给主机
-
递归迭代相结合:主机向本地域名服务器的查询仍是递归查询,但之后本地域名服务器向根域名服务器的查询是迭代查询,根域名服务器要么返回本地域名服务器所要查询的IP地址,要么告诉本地域名服务器下一步应该找哪个域名服务器进行查询,依次类推,最后查询到结果的那个域名服务器将IP地址返回给本地域名服务器
**注意:在域名服务器中广泛使用高速缓存,当一个服务器收到一个查询结果后将该信息缓存在高速缓存中,当另一个相同的域名查询到该服务器时就可以直接提供IP地址,但因为主机名和IP地址之间的映射不是永久的,DNS服务器会在一段时间后丢弃高速缓存中的信息
文件传输协议(FTP)
提供交互式访问,适合于在异构网络中的任意计算机之间传送文件,采用客户/服务器的工作方式,使用可靠的TCP传输服务,一个FTP服务器进程可同时为多个客户进程提供服务,服务器进程由负责接收新请求的主进程和若干个负责处理单个请求的从属进程组成
FTP在工作时使用两个并行的TCP连接,一个是控制连接(端口号21),一个是数据连接(端口号20)
-
控制连接:用来传输控制信息(如连接请求、传送请求),并且是以7位ASCII码格式传送,在整个会话过程中一直处于打开状态
-
数据连接:用来连接客户端和服务器端的数据传送进程,在传送完毕后关闭数据传送连接并结束运行
两种传输模式:
1)主动模式PORT:客户端随机开放一个端口,向服务器端发送命令,服务器端收到命令和端口号后和客户端连接并传送数据
2)被动模式PASV:客户端向服务器端发送命令,服务器端随机开放一个端口(一般大于1024),客户端知道端口号后与服务器端连接并传送数据
电子邮件
电子邮件系统组成结构
由用户代理、邮件服务器和电子邮件使用的协议组成,协议如SMTP、POP3(或IMAP)等
-
用户代理:用户与电子邮件系统的接口,通常情况下用户代理就是一个运行在PC上的程序(电子邮件客户端软件)
-
邮件服务器:功能是发送和接收邮件,同时还要向发件人报告邮件传送情况,采用客户/服务器方式工作,必须能够同时充当客户和服务器
-
邮件发送协议和读取协议:发送协议如SMTP,读取协议如POP3
MIME
多用途网际邮件扩充(MIME)是对SMTP的优化,它并未改动或取代SMTP,而是继续使用目前格式,但增加了邮件主体的结构,并定义了传送非ASCII的规则,MIME邮件可对任何内容格式进行转换,可以在现有的电子邮件程序和协议下传送
SMTP
SMTP使用的是TCP连接,端口号为25,分为三个阶段:
-
建立连接
-
邮件传送:先发送MAIL命令,后面接发件人地址,收到应答后发送一个或多个RCPT命令,后面接收件人地址,目的是先弄清收方系统是否已经做好准备,收到应答后使用DATA命令传输邮件内容
-
连接释放:发送完毕后客户发送QUIT命令,服务器同意释放则结束
POP3和IMAP
邮局协议(POP3)是一个简单但功能有限的邮件读取协议,是基于ASCII码的,不能发送二进制数据,也使用客户/服务器方式工作,端口号为110,有两种工作方式,“下载并保留”和“下载并删除”
而IMAP比POP3复杂的多,为用户提供了创建文件夹、在不同文件夹移动邮件,远程查询邮件等联机命令
万维网(WWW)
万维网是一个分布式。联机式的信息存储空间,这个空间中一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识,这些资源通过超文本传输协议(HTTP)传送给使用者
超文本传输协议(HTTP)
HTTP是面向事务的协议,规定了浏览器和服务器之间请求和响应的格式与规则,是万维网上能可靠交换文件的重要基础,也是面向文本的协议,HTTP报文中每个字段都是一些ASCII码串
-
HTTP操作过程
1)浏览器要访问WWW服务器时,首先通过DNS系统对WWW服务器进行域名解析,得到服务器的IP地址
2)浏览器通过TCP向服务器发送建立连接请求
3)每个万维网站点都会有一个服务器进程,不断监听TCP的80端口,当监听到连接后便与浏览器建立连接
4)然后浏览器向服务器发送某个Web页面的HTTP请求
5)服务器收到请求后将构建Web页面的必需信息返回给浏览器
6)浏览器再将信息进行解释,将Web页面显示给用户
-
HTTP特点
1)虽然是使用TCP保证了数据可靠性,但HTTP本身是无连接的(务必注意),也就是说通信双方在交换HTTP报文之前不需要建立连接
2)HTTP是无状态的,也就是无法识别用户,如果希望能够识别用户,就需要用到Cookie(Cookie是服务器产生的一个存储在用户主机的文本文件,作为识别用户的手段)
3)既可以使用非持久连接(每请求一个对象就需要建立一次TCP连接),
又可以使用持久连接(HTTP/1.1提供)