计算机网络强化小结
1. 物理层
1.1 概念
-
模拟信号:消息的参数取值是连续的
-
数字信号:信息的参数取值是离散的
-
基带信号:来自信源的信号,可以是数字信号也可以是模拟信号;基带信号有很多不适合信道传输的低频或直流分量,所以需要进行调制
-
带通信号:仅在一段频率范围内能够通过信道的信号
-
单工信号:一条信道,只有一个方向的通信而没有反方向的交互
-
半双工通信:(逻辑上)有两条方向相反的信道,但不能同时使用,同一时刻只能有一方发送
-
全双工通信:(物理上)有两条方向相反的信道,通信双方可以同时发送和接收消息
1.2 基带调制(编码)
-
不归零NRZ编码:高电平1,低电平0;双方都带有时钟线
-
归零RZ编码:高电平1,低电平0,中间跳变变回零电平;可根据归零实现自同步
-
反向非归零NRZI编码:电平跳变0,不变1;可根据跳变实现自同步
-
曼彻斯特编码:中间发生跳变,向下跳1,向上跳0;可根据跳变实现自同步
-
差分曼彻斯特编码:中间发生跳变,开始处有跳变0,不变1;可根据跳变实现自同步
注意:标准以太网使用曼彻斯特编码,曼彻斯特编码比特率:波特率=1:2(因为发送一个比特需要两个码元)
1.3 带通调制
-
调幅AM/ASK
-
调频FM/FSK
-
调相PM/PSK
-
正交振幅调制QAM:在频率相同的前提下,把AM和PM结合起来,形成叠加信号。设波特率为B,有m个相位,每个相位有n种振幅,则该QAM的数据传输速率R=B log2(mn) b/s
1.4 信道极限速率
-
比特率R(信息传输速率/数据传输速率):1秒能发送多少个比特
-
波特率B(码元传输速率):1秒能发送多少个码元
-
奈氏准则:理想信道下的极限数据传输速率 = 2W log2V b/s。奈氏准则说明传输速率有上限,一旦超过这个上限,就会出现严重的码间串扰
-
香农定理:信道下的极限数据传输速率 = W log2(1+S/N) b/s,信噪比 = 10 log10(S/N) dB。香农定理说明信噪比同样限制了极限传输速率,所以一个码元可以携带的比特数是有限的
1.5 物理层特性
-
机械特性:指明接口所用接线器的形状、尺寸、引脚数目和排列、固定和锁定装置等
-
电气特性:指明在接口电缆的各条线上出现的电压的范围
-
功能特性:指明某条线上出现的某一电平的电压的意义
-
过程特性:指明对于不同功能的各种可能事件的出现顺序
1.6 物理层设备
-
中继器:
将信号整形放大再转发出去,进而扩大网络传输的距离
原理是信号再生,而非简单放大
中继器有两个端口,数据从一个端口进入,再从另一个端口发出
5-4-3规则:用4个中继器串联的5段通信介质只有三段可连接计算机
中继器再生数字信号,放大器放大模拟信号 -
集线器Hub:
集线器就是多端口的中继器
不具备定向传送能力,一个端口进入的数据会被转发到其余所有端口
只能工作在半双工 -
相同点:
中继器和集线器连接的网段属于同一个局域网
中继器和集线器不能连接两个具有不同速率、不同协议的局域网
中继器和集线器不能分割冲突域,也不能分割广播域
1.7 传输介质
-
双绞线:屏蔽双绞线STP、非屏蔽双绞线UTP
-
同轴电缆
-
光纤:多模光纤适用于短距离通信、单模光纤适用于远距离通信
-
无线:无线电波、微波、红外线和激光
2. 数据链路层
2.1 信道类型
-
点对点信道:
PPP协议 -
广播信道(共享信道):
介质访问控制:
(1)静态划分信道:
频分复用FDM
时分复用TDM
波分复用WDM
码分复用CDM/码分多址CDMA:每个站都有自己的码片序列,如果要发1,就发送自己的码片序列,如果要发0,就发送自己的码片序列的反码,接收站用接收到的混合数据和码片序列求规格化内积
(2)动态划分信道:
随机访问:ALOHA、CSMA(载波监听多路访问)、CSMA/CD(载波监听多路访问/冲突检测)、CSMA/CA(载波监听多路访问/冲突避免)
轮询访问:令牌传递协议
2.2 CSMA/CD协议(802.3)
-
思想:载波侦听、碰撞检测
-
工作流程:
适配器发送帧前先侦听,信道空闲则发送帧,信道忙则持续监听直到信道空闲
发送过程中持续监听,若检测到碰撞则中止数据的发送,并向所有用户发送拥塞信号
中止发送后,适配器执行指数退避算法,等待一段随机时间后回到第一步 -
争用期:
以太网端到端的往返时间2τ
只有经过争用期这段时间还未检测到碰撞才能确定这次发送不会产生碰撞 -
最小帧长:
最小帧长 = 总线传播时延 * 2 * 数据传输速率 = 争用期 * 数据传输速率
10M以太网的最小帧长64B
10M以太网基本退避时间51.2us
100BASE-T:100->速率100Mbps、BASE->基带传输、T->双绞线
为了确保发送数据的同时能检测到可能存在的碰撞,所有数据帧都要大于最小帧长的长度 -
指数退避算法:
基本退避时间取2τ,以太网中为51.2 us
整数集合[0,1,...,2^k-1]中随机取一个数,记为r,k = min{重传次数,10},重传应退避的时间是2rτ
如果重传16次还不成功,则丢弃该帧,向高层报告
2.3 CSMA/CA协议(802.11)
-
思想:
将碰撞检测改为碰撞避免,尽量降低碰撞发生的概率
采用确认重传ARQ方案,对每帧进行确认,收到确认后才能继续发送下一帧 -
工作流程:
(1)站点若想要发送数据,必须先监听信道,若信道在时间间隔DIFS内均为空闲,则发送整个数据帧,否则进行
(2)站点选择一随机数,设置退避计时器
计数器的运行规则是:若信道忙,则冻结退避计时器,继续等待,直至信道变空闲;若信道空闲,并在时间间隔DIFS内均为空闲,则开始争用信道,开始倒计时
当退避计时器的时间减到0,站点就发送数据帧,把一整帧发完
在第i次退避时,在时隙{0,1,...,2^(2+i)-1}中随机选择一个,随机乘以基本退避时间就得到随机退避时间
(3)站点若收到接收方发来的确认帧,且还有后续帧要发送,就转到(2)
若在设定时间内未收到确认,则准备重传,并转到(2),但会在更大的范围内选择一随机数 -
必须使用退避算法的情况:
在发送数据帧之前检测到信道处于忙状态时
在每一次重传一个数据帧时
在每一次成功发送后要连续发送下一个帧时(这样可以避免一个站点长期占用信道) -
帧间间隔:
DIFS:分布式协调IFS,最长的IFS,异步帧竞争时访问的时延
SIFS:最短的IFS,分隔用于一次对话的各帧
PIFS:点协调IFS -
隐蔽站:
(1)信道预约:
RTS:SIFS + CTS + SIFS + DATA + SIFS + ACK
CTS:SIFS + DATA + SIFS + ACK
DATA:DATA + SIFS + ACK
(2)NAV网络分配向量
2.4 封装成帧
-
字节填充法:
SOH(0000 0001):放在最前面,表示帧的首部开始
EOT(0000 0100):放在最后面,表示帧的结束
当数据中出现SOH或EOT时,在前面插入一个ESC(0001 1011)即可
当数据中出现ESC时,同样在前面再插入一个ESC即可 -
字符计数法:
在帧首部用一个计数字段来记录该帧含有的字节数,包括计数字段本身占用的1个字节
这种方法一旦计数字段出错,失去了帧边界的划分依据,收发双方就会失去同步,造成灾难性后果 -
零比特填充法:
允许数据帧包含任意个数的比特,使用0111 1110来表示帧的开始和结束
数据中如果出现了5个连续的1,就填充一个0
接收方再做相反操作,每收到5个连续的1就自动删掉后面跟着的0
很容易用硬件实现,HDLC协议经常使用这种方法 -
违规编码法:
借用违规编码序列实现帧定界
2.5 透明传输
即使数据中恰好出现与帧定界符相同的比特组合,也不会被误判为帧边界。接收方能将帧完整恢复为原始SDU(服务数据单元),即数据链路层的帧封装过程对网络层是透明的
2.6 差错检测
-
循环冗余码CRC
(1)发送方生成FCS:
按照生成多项式G(x)的最高有效次项给数据补0;模2除法;所得余数即FCS
(2)接收方校验:
用相同的G(x)对整个帧进行模2除法,除不尽,则传输过程存在差错,丢弃该帧
(3)注意:
生成多项式G(x)最高位和最低位必须为1
带r个校验位的多项式编码可以检测到所有长度<=r的错误
CRC具有纠错能力,但是数据链路层使用到了检测错误的功能,出错了直接丢弃 -
奇偶校验码
奇偶校验码只能检测出奇数个比特的错误,一旦出现偶数个比特错误就无法检测出来 -
海明码
(1)发送方对校验位取值:
信息位n位,校验位k位,需满足2^k >= n + k + 1
校验码插在2的次方的位置
信息位所在位号 = 其所参与的所有校验位位号之和
校验位Pi的值为其对应校验组中所有位求异或(偶校验结果)
(2)接收方校验过程:
每个校验组进行奇偶校验检查
S3S2S1的值为000 表示无错误,否则表示出错,且这个数就是错误位的位号 -
关于码距的补充
l = d + c + 1( d>=c )
l:码距,d:检错的位数,c:纠错的位数
码距指两个码字在对应位上取值不同的比特数量;可以对两个码字进行异或运算,结果中1的个数即为码距;l为码字集合的最小海明距
2.7 可靠传输
-
机制:确认、序号、超时重传
-
停止-等待协议(S-W)
发送方每次只允许发送一个帧,接收方每接收一个帧都要反馈应答,表示可以接收下一个帧,发送方收到确认帧才能发送下一帧 -
后退n帧协议(GBN)
可以连续发送帧,允许接收方累计确认
若采用n比特对帧编号,则发送窗口尺寸1<=Wt<=2^n-1
若大于2^n-1会使接收方无法分辨新旧帧
接收窗口为1,保证按序接收帧 -
选择重传协议(SR)
可以连续发送帧,接收方使用逐帧确认
Wr <= Wt
Wt max = Wr max = 2^(n-1)
Wt + Wr <=2^n
只重传出现差错的帧或计数器超时的帧
收到NAK后重传出错帧
2.8 信道利用率
在一个发送周期内,有效地发送数据所需时间占整个发送时间的比例
信道利用率u = Td / (Td + RTT +Ta)
在一个发送周期内发送方一直发帧时有最大信道利用率为100%
2.9 局域网LAN
2.9.1 以太网和IEEE802.3
-
以太网的特性:
以太网使用广播信道
以太网使用CSMA/CD进行介质访问控制
以太网采用无连接无确认的工作方式
以太网使用曼彻斯特编码 -
以太网的传输介质:
(1)标准名称:10Base-5
传输介质:同轴电缆(粗缆)
编码:曼彻斯特编码
拓扑结构:总线型
最大段长:500m
最多节点数量:100
(2)标准名称:10Base-2
传输介质:同轴电缆(细缆)
编码:曼彻斯特编码
拓扑结构:总线型
最大段长:185m
最多节点数量:30
(3)标准名称:10Base-T
传输介质:非屏蔽型双绞线
编码:曼彻斯特编码
拓扑结构:星型
最大段长:100m
最多节点数量:2
(4)标准名称:10Base-F
传输介质:光线对(850nm)
编码:曼彻斯特编码
拓扑结构:点对点
最大段长:2000m
最多节点数量:2 -
以太网的两个标准:
(1)UEEE802.3标准
(2)DIX Ethernet V2:
物理地址/MAC地址/硬件地址:固化在适配器的ROM中,如果主机/路由器有多个网卡(适配器),就会有多个MAC地址
以太网交换机不具备MAC地址
7B前同步码:作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步
1B帧开始定界符
(前导码由硬件生成,实际上由物理层插入)
6B目的地址
6B源地址
2B类型:用来标识上一层使用什么协议,以便把收到的数据交给上层的这个协议
46B~1500B数据:以太网的最小帧长64B减去18B的首部和尾部就能得到数据字段的最小长度46B,当数据字段小于46B,MAC子层就会在数据字段的后面加上一个整数字节的填充字段,以保证以太网的MAC帧长不小于64B
4BFCS:使用CRC校验整个MAC帧从目的地址开始到数据为止的前四个字段,不包括前导码 -
高速以太网:
(1)标准名称:100Base-T以太网
传输速率:100Mb/s
传输介质:双绞线
通信方式:支持半双工和全双工
介质访问控制协议:半双工模式下使用CSMA/CD协议
(2)标准名称:吉比特以太网
传输速率:1Gb/s
传输介质:双绞线或光纤
通信方式:支持半双工和全双工介质访问
控制协议:半双工模式下使用CSMA/CD协议
(3)标准名称:10吉比特以太网
传输速率:10Gb/s
传输介质:双绞线或光纤
通信方式:只支持全双工
控制协议:无
2.9.2 802.11无线局域网
-
802.11标准MAC帧格式:
2B帧控制
2B持续期
6B地址1:接收地址,即直接接收数据帧的节点地址
6B地址2:发送地址,即直接发送数据帧的节点地址
6B地址3:来自AP填源地址,去往AP填目的地址
2B序号控制
6B地址4
0~2312B帧主体
4BFCS -
RTS帧格式:
2B帧控制
2B持续期
6B地址接收地址
6B地址发送地址
4BFCS -
CTS帧/ACK帧格式:
2B帧控制
2B持续期
6B地址接收地址
4BFCS
2.9.3 广域网
2.9.4 VLAN虚拟局域网
-
思想:把一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的VLAN;每个VLAN是一个小广播域
-
802.1Q帧:
6B目的地址
6B源地址
4BVLAN标记:2B802.1Q标签类型:1000 0001 0000 0000;2B标签控制信息:3bit用户优先级,1bitCFI,12bitVID(VLAN标识符),12位VID最多可支持4096个VLAN;由于扩展了首部,以太网的最大帧长会从原来的1518B变为1522B
2B类型
42B~1500B数据
4BFCS
2.10 以太网交换机
-
特点:
以太网交换机一般基于存储转发机制
检测从端口来的数据帧的源和目的MAC地址,然后与系统内部的动态查找表进行比较(特别地,直通式交换机只要得知了数据帧的目的MAC地址就开始向目的端口转发数据)
以太网交换机工作在全双工
支持两端连接不同速率的网段 -
自学习:
谁发送了帧,就记录谁的MAC和端口对应关系
使用生成树协议STP从逻辑上切断某些链路来避免兜圈问题
3. 网络层
3.1 交换方式
电路交换
报文交换
分组交换:(1)虚电路;(2)数据报,最后所有数据传输到位的总开销 = (分组数量 + 链路数量 - 1)* 传输时延 + 链路数量 * 传播时延
3.2 IPv4
3.2.1 IP分组
4bit版本
4bit首部长度:单位4B,首部长度范围20B~60B
1B区分服务
2B总长度:单位1B,受到MTU的严格限制
2B标识
3bit标志:MF(more fragment);DF(dont fragment)
13bit片偏移:单位8B;除了最后一个分片,每个分片的数据部分长度一定是8B的整数倍
1B生存时间:路由器先将TTL值减1再转发该数据报,若TTL减小到0,就丢弃这个数据报不再转发;TTL=最大跳数,意义是数据报在互联网中最多能经过多少个路由器,最大为255
1B协议:指明此数据报携带的数据使用哪种协议,目的主机的IP层就知道应该把数据部分上交给哪个协议进行处理;ICMP:1;IGMP:2;IP:4;TCP:6;EGP:8;IGP:9;UDP:17;IPv6:41;ESP:50;OSFP:89
2B首部校验和:只校验数据报首部,不包括数据部分(MAC帧会校验数据部分);IP首部不采用CRC校验码,而是把首部划分成16位子序列,用反码把它们相加后,得到和的反码写入校验码字段
4B源地址
4B目的地址
(IP数据报在转发的过程中,源地址和目的地址始终保持不变,除非遇到NAT;MAC源地址和目的地址会随着转发变动)
可选字段(长度可变)+填充
数据部分
3.2.2 传统分类
-
分类
A类:0 + 7位网络号 + 24位主机号
B类:10 + 14位网络号 + 16位主机号
C类:110 + 21位网络号 + 8位主机号
D类:1110 + 28位多播组号(D类作为多播地址)
E类:1111 + 28位留待后用(E类是保留地址,不能被分配给普通的设备或网络,也不会出现在公共互联网上) -
特点
(1)对A类网络,网络号全0的IP地址有特殊用途,用来表示本网络;网络号全1(对应十进制的127)保留作为本地软件回环测试本主机。
(2)对所有网络,主机号全0表示该IP地址是本主机所连接到的单个网络地址;主机号全1表示该网络上的所有主机,或者可以理解为本网络的广播地址。
(3)A类
最大可用网络数:2^7-2
第一个可用的网络号:1
最后一个可用的网络号:126
每个网络中最大的主机数:2^24-2
(4)B类
最大可用网络数:2^14
第一个可用的网络号:128.0
最后一个可用的网络号:191.255
每个网络中最大的主机数:2^16-2
(5)C类
最大可用网络数:2^21
第一个可用的网络号:192.0.0
最后一个可用的网络号:223.255.255
每个网络中最大的主机数:2^8-2 -
一般不指派的IP地址
(1)网络号0,主机号0,代表本网络上的本主机,源地址可以使用,目的地址不可以使用
(2)网络号0,主机号x,代表本网络上主机号x的主机,源地址可以使用,目的地址不可以使用
(3)网络号全1,主机号全1,代表在本网络上进行广播,源地址不可以使用,目的地址可以使用
(4)网络号x,主机号全1,代表对网络号为x的网络上的所有主机进行广播,源地址不可以使用,目的地址可以使用
(5)网络号127,主机号非全0或全1的任何数,代表用于本地软件环回测试,源地址可以使用,目的地址可以使用
3.2.3 CIDR无分类编址
-
思想
消除传统A、B、C、D类网络划分,使用网络前缀替代网络的概念
IP::={<网络前缀>,<主机号>}
IP地址/网络前缀所占比特数
网络前缀都相同的连续IP地址组成CIDR地址块
一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数;只要知道了CIDR地址块中任意一个IP地址,就可以知道这个地址块的起始地址(最小地址)和最大地址,以及地址块中有多少地址 -
路由聚合
-
最长前缀匹配
3.2.4 子网划分
-
思想
从主机号借用若干bit作为子网号 -
子网掩码
地址掩码的1对应了网络前缀,0对应了主机号
通过IP地址和地址掩码相与的操作,得到网络号
默认子网掩码:A类:255.0.0.0;B类:255.255.0.0;C类:255.255.255.0 -
定长子网划分
-
变长子网划分
每个子网的子网号不能互为前缀
3.2.5 DHCP动态主机配置协议
-
概述
用于给主机动态地分配IP地址
基于UDP
DHCP是应用层协议
DHCP服务器给客户分配的IP是临时的,只能在一段时间内使用,这段时间叫做租用期,租用期由DHCP服务器决定,客户也可以在自己发的报文里提出对租用期的要求 -
工作原理
(1)DHCP客户使用端口号68,DHCP服务器端口为67
(2)DHCP四个阶段
报文类型:DHCP发现报文(Discover);源IP:0.0.0.0;目的IP:255.255.255.255;源MAC:DHCP客户机MAC;目的MAC:FF-FF-FF-FF-FF-FF
报文类型:DHCP提供报文(Offer);源IP:DHCP服务器IP;目的IP:255.255.255.255;源MAC:DHCP服务器MAC;目的MAC:DHCP客户机MAC
报文类型:DHCP请求报文(Request);源IP:0.0.0.0;目的IP:255.255.255.255;源MAC:DHCP客户机MAC;目的MAC:FF-FF-FF-FF-FF-FF
报文类型:DHCP确认报文(ACK);源IP:DHCP服务器IP;目的IP:255.255.255.255;源MAC:DHCP服务器MAC;目的MAC:DHCP客户机MAC
3.2.6 ARP地址解析协议
-
概述
无论网络层使用什么协议,在实际的链路上传送数据帧时,必须使用硬件地址
实现IP到MAC地址的映射
工作在网络层 -
工作原理
(1)工作过程
主机A和主机B在同一个局域网内,主机A希望给主机B发送IP数据报,首先在ARP缓存表中看看有没有IPB对应的MAC地址,如果有,就直接把这个地址作为MAC地址写入帧,如果没有,A会运行ARP协议,按照一定步骤找到MAC地址
主机A的ARP进程在本局域网上广播发送(目的MAC:FF-FF-FF-FF-FF-FF)一个ARP请求分组,内容是”我的IP地址是209.0.0.5,MAC地址是00-00-C0-15-AD-18,我想知道IP地址为209.0.0.6的主机的MAC地址“
在本局域网上的所有主机上运行的ARP进程都会收到此ARP请求分组,主机B的IP地址与ARP请求分组中要查询的IP地址一致,因此收下这个ARP请求分组,并向主机A发送单播ARP响应分组,同时在这个ARP响应分组中写入自己的MAC地址,其余所有主机的IP地址和ARP请求分组中要查询的IP地址都不一致,因此不会理睬这个ARP请求分组,ARP响应分组的内容是”我的IP地址是209.0.0.6,我的MAC地址是08-00-2B-00-EE-0A“
主机A收到ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到MAC地址的映射
(2)ARP请求报文
源IP:发起请求的主机IP
目的IP:目标主机IP
源MAC:发起请求的主机MAC
目的MAC:FF-FF-FF-FF-FF-FF
(3)ARP响应报文
源IP:被请求主机IP
目的IP:发起请求的主机IP
源MAC:被请求主机MAC
目的MAC:发起请求的主机MAC
3.2.7 ICMP网际控制报文协议
-
概述
为了提高IP数据报交付成功的概率,在网络层使用ICMP来让主机或路由器报告差错和异常情况
ICMP是网络层协议
ICMP报文作为IP数据包的数据部分 -
ICMP报文格式
1B类型
1B代码
2B校验和
数据部分(长度取决于类型) -
分类
(1)ICMP差错报告报文
ICMP报文类型:终点不可达;类型的值:3
ICMP报文类型:时间超过;类型的值:11
ICMP报文类型:参数问题;类型的值:12;当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,丢弃该数据报,向源点发送参数问题报文;校验和错误则直接丢弃,不会回复ICMP报文
ICMP报文类型:改变路由;类型的值:5
(2)ICMP询问报文
ICMP报文类型:回送请求或回送回答;类型的值:8或0;PING
ICMP报文类型:时间戳请求或时间戳回答;类型的值:13或14 -
不会发送ICMP差错报告报文的情况
对ICMP差错报告报文,不再发送ICMP差错报告报文
对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
对具有多播地址的数据报,都不发送ICMP差错报告报文
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文
3.2.8 NAT网络地址转换
-
概述
将专用网络地址转换为共用地址,从而对外隐藏内部管理的IP地址
IP数据报经过NAT路由器,源地址字段或目的地址字段会被修改 -
工作原理
NAT路由器通过NAT转换表,把IP数据报源地址改为自己的全球IP,然后转发给互联网;NAT路由器收到IP数据报后,查找自己的NAT转换表,将目的地址转换成对应专用网地址
通过NAT路由器的通信必须由专用网内的主机发起,如果有专用网外的主机发起通信,IP数据报到达NAT路由器时不知道应该把IP地址转换成专用网的哪一个本地IP地址,所以专用网内部的主机不能充当服务器使用 -
NAPT(使用端口号的NAT)
为了更有效地利用NAT路由器上的全球IP地址,常用的NAT转换表把运输层的端口号也利用上,这样就可以多个拥有本地地址的主机共用NAT路由器的一个全球IP地址,也就可以同时和互联网上不同主机进行通信
NAPT工作在传输层、网络层 -
私有地址划分
3.2.9 转发分组的过程
-
主机路由:对特定目的的主机的IP地址专门指明一个路由
-
默认路由:只要目的网络不在转发表中,就一律选择默认路由
-
IP分组转发的过程
(1)从收到的分组的首部提取目的主机的IP地址D
(2)若查找到有特定主机路由(目的地址为D),就按照这条路由的下一跳转发分组,否则从转发表中下一行开始检查,执行(3)
(3)把这一行的子网掩码与目的地址D进行按位与运算,若运算结果与本行的前缀匹配,则查找结束,按照下一跳所指出的进行处理(或直接交付给本网络上的目的主机,或通过指定接口发送到下一跳路由器),否则,若转发表还有下一行,则对下一行进行检查,重新执行(3)
(4)若转发表中有一个默认路由,则按照指明的接口,把分组传送到指明的默认路由器,否则,报告转发分组出错
3.3 IPv6
-
IPv6分组
(1)40B基本首部
4bit版本:IPv6:6
1B通信量类:区分不同IPv6数据报的类别或优先级
20bit流标号
2B有效载荷长度:单位1B,最大值65535
1B下一个首部
1B跳数限制:最大为255
16B(128位)源地址
16B(128位)目的地址
(2)不超过65535B有效载荷
扩展首部1
...
扩展首部N
数据部分 -
IPv4 vs IPv6
IPv6从根本上解决IP地址耗尽问题
IPv4地址长度32位,IPv6地址长度128位
IPv6允许协议继续扩充,IPv4的功能固定不变
IPv6只有源主机才能分片,不允许中间路由器进行进行分片
IPv6首部长度固定40B,IPv4首部长度不固定(但是4B的倍数)
IPv6的扩充首部提供身份鉴别和保密功能 -
IPv6地址
冒号十六进制记法:将地址划分为8组,每组16位(4个十六进制数)
两种缩写规则:省略前导零,双冒号替换连续全零组(只能使用一次)
未指明地址:::/128;仅用于尚未配置IPv6地址的主机作为源地址
环回地址:::1/128
多播地址:FF00::/8
本地链路单播地址:FE80/10
全球单播地址:128位节点地址;n位子网前缀+(128-n)位接口标识符;n位全球路由选择前缀+m位子网标识符+(128-n-m)位接口标识符 -
IPv4 -> IPv6
双协议栈:一台主机上同时安装IPv4和IPv6两个协议栈,通过应用层的域名系统(DNS)获知目的主机使用的地址类型
隧道技术
3.4 路由算法
3.4.1 RIP路由信息协议
-
概述
分布式的基于距离向量的路由选择协议
RIP是应用层协议
基于UDP,端口号520 -
规定
(1)网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
(2)仅和相邻路由器交换本路由器知道的全部信息(自己的路由表:{目的网络N,距离d,下一跳路由器地址X})
(3)每个路由器按固定的时间间隔(30s)交换路由信息,独立计时
问题:坏消息传得慢。例:R3先知晓N不可达的信息并更新在自己的路由表中,如果R2比R3先到更新时间,R2先向R3发送了自己的路由表,R3就会被R2中的”好消息“欺骗。解决方案:触发更新;如果网络拓扑发生变化,路由器会及时向相邻路由器告知拓扑变化 -
路由表的更新
(1)对所有相邻路由器X发来的RIP报文
下一跳改为X,距离字段+1
(2)对修改后的RIP报文中的每个项目
路由表中没有网络N,则将该项目添加到路由表
有目的网络N,且下一条的地址是X,则用收到的项目替换原表中的内容
有目的网络N,且下一条的地址不是X,如果收到的项目中距离d小于路由表中的距离,替换
(3)如果180s(默认超时时间)未收到相邻路由器的更新路由表,则标记为不可达,距离设置为16 -
RIP报文
RIP的报文由UDP用户数据报传送
IP数据报:IP首部+UDP首部+RIP报文
RIP报文:首部+路由部分 -
性能
实现简单
只适合小型网络,收敛慢
3.4.2 OSPF开放最短路径优先
-
概述
分布式的链路状态路由算法
OSPF是网络层协议
IP数据报首部字段为89
OSPF支持变长子网划分和CIDR -
规定
(1)当链路状态发生变化或每隔一段时间(如30分钟),路由器使用洪泛法(区域内)向本自治系统的所有路由器发送信息,而每一个相邻路由器又再次将此信息发往所有的相邻路由器(但不再发给刚才发来信息的路由器),这样,最终整个区域中的路由器都会得到这个信息的一个副本
由于各路由器之间频繁交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的,因此每一个路由器都知道全网有多少个路由器,以及哪些路由器是相连的、代价是多少等等。每一个路由器使用数据库中的数据来构造自己的路由表
(2)发送的信息是与本路由器相邻的所有路由器的链路状态,这只是路由器知道的部分信息
(3)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,即负载均衡 -
层次结构区域划分
OSPF将一个自治系统(AS)划分为若干个更小的区域(Area),将洪泛法交换链路状态信息的范围限制在各区域内,而非整个AS
主干区域包含所有AS内的所有区域边界路由器
主干区域中还需指定一个自治系统边界路由器,专门负责与本AS外的其他AS交换路由信息
跨AS转发分组路径:源区域->本地区域边界路由器->主干区域->目的区域边界路由器->目的地 -
五种分组
(1)问候(Hello)分组:用来发现和维持相邻站的可达性
(2)数据库描述(DD)分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
(3)链路状态请求(LSR)分组:向对方请求发送某些链路状态项目的详细信息
(4)链路状态更新(LSU)分组:用洪泛法对全网更新链路状态,这是最复杂的分组;网络运行过程中,一旦一个路由器链路状态发生变化就要使用链路状态更新分组,洪泛法向全网更新链路状态
(5)链路状态确认(LSAck)分组:对链路更新分组的确认 -
过程
(1)平时:
相邻路由器间每隔10s周期性地交换问候分组,40s内未收到记为不可达
每30min发一次LSU(洪泛)
(2)邻居建立时:
发Hello互相发现
用DD交换信息
缺啥就是LSR请求
对方用LSU回复
每条LSA(链路状态通告)都有LSAck确认
(3)拓扑变化时:
立刻生成新的LSA,洪泛
其他路由器收到,继续洪泛
3.4.3 BGP边界网关协议
-
概述
外部网关协议
BGP是应用层协议
基于TCP
力求找到一条能到达目的网络且不兜圈子的路由,并非是最佳路由
BGP 使用 TCP 作为传输层协议,监听端口 179 -
规定
BGP刚运行时,邻站交换整个BGP路由表,但以后只需要在发生变化时更新有变化的部分 -
路由选择
本地偏好LOCAL-PREF值最高的要首先选择
选择具有AS跳数最少的路由
热土豆路由选择算法
选择路由器BGP标识符数值最小的路由 -
封装
IP数据报:IP首部+TCP报文
TCP报文:TCP首部+BGP报文
BGP报文:BGP首部+BGP报文主体部分 -
四种报文
(1)OPEN打开报文:
用来与BGP连接对等端建立关系
两个路由器之间建立了TCP连接后,接着就必须发送OPEN报文,作用是相互识别对方,协商一些协议参数
收到OPEN报文的路由器发回KEEPALIVE报文表示接受建立BGP连接
(2)UPDATE更新报文:
用来通告某一路由的信息,以及列出要撤销的路由
UPDATE报文是BGP协议的核心,用来撤销它以前曾通知过的路由或宣布增加新的路由,撤销可以一次撤销很多条,但增加每次只能一条
(3)KEEPALIVE保活报文:
用来周期性地证实与对等端的连通性
KEEPALIVE报文只包含BGP报文的通用首部(19字节),因此不会在网络上产生多少开销
每个路由器都有一个保持时间计时器,每收到一个BGP报文,这个计时器就重置一次,如果在保持时间内没有收到对等端发来的任何一种报文,则认为对方不能工作
发送KEEPALIVE报文的时间间隔取保持时间的1/3,但如果保持时间取0,那么就表示永远不发送KEEPALIVE报文表示这条BGP连接总是正常工作
(4)NOTIFICATION通知报文:用来发送检验到的差错 -
BGP会话类型
eBGP(外部BGP):跨AS的BGP会话
iBGP(内部BGP):AS内的BGP会话
3.5 IP多播
-
基本概念
多播/组播:一对多
仅发送一份分组,该分组在遇到分岔节点时被复制并转发
多播数据报的目的地址为D类IP地址,支持2^28个多播组
协议:取决于上层协议;UDP:17;IGMP:2
对多播数据报不产生ICMP差错报文
多播机制仅适用于UDP -
IP->MAC多播地址
以太网多播地址范围:01-00-5E-00-00-00到01-00-5E-7F-FF-FF
D类IP地址共有28位可用于标志多播组,以太网多播地址只有后23位可用作多播,导致32个不同的IP多播地址会映射到同一个MAC多播地址,因此主机在收到多播数据帧后还需在IP层利用数据报中的目的IP地址进行过滤 -
IGMP网际组管理协议
多播路由选择协议
为避免路由环路,构造多播转发树
IGMP进作用在本地子网
IGMP报文封装在IP数据报(协议字段值为2)中传送 -
移动IP
(1)基本概念
归属网络:每个主机默认连接的网络或初始申请接入的网络
永久地址(归属地址):在归属网络中的IP地址在其整个移动通信过程中是始终不变的
归属代理:归属网络中,代表移动主机执行移动管理功能的实体;归属代理通常就是连接在归属网络上的路由器
外地网络(被访网络):移动主机当前漫游所在的网络
外地代理:外地网络中,帮助移动主机执行移动管理功能的实体
转交地址:外地代理会为移动主机提供一个临时使用的属于外地网络的转交地址
(2)三角形路由问题
3.6 路由器
3.6.1 结构
硬件组成:一台专用计算机
功能架构:控制平面与数据平面
3.6.2 SDN软件定义网络
-
概述
采用集中式的控制层面和分布式的数据层面,两个层面相互分离
控制层面利用控制-数据接口对数据层面上的路由器进行集中式控制
网络的控制层面有一个逻辑上的远程控制器,掌握各主机和整个网络的状态,为每个分组计算出最佳路由
openflow协议是控制层面和数据层面之间的接口,并没有取代路由协议
路由器不再相互交换路由信息,而是由远程控制器计算出最佳路由去,路由器的工作变为单纯地收到分组、查找转发表、转发分组 -
openflow交换机 vs 普通路由器
(1)openflow交换机
匹配:能对不同层次(链路层、网络层、传输层)首部中字段匹配
动作:不仅是转发分组,还可以把具有同样目的地址的分组从不同的接口转发出去,还可以重写IP首部(如NAT中的地址转换)或认为阻挡/丢弃一些分组(防火墙)
(2)普通路由器
匹配:查找转发表中网络前缀,进行最长前缀匹配
动作:把分组从指明的接口转发出去 -
流表
(1)首部字段值/匹配字段
入端口
以太网源地址(链路层)
以太网目的地址(链路层)
以太网类型(链路层)
VLANID(链路层)
VLAN优先级(链路层)
IP源地址(网络层)
IP目的地址(网络层)
IP协议(网络层)
IP服务类型(网络层)
TCP/UDP源端口(运输层)
TCP/UDP目的端口(运输层)
(2)计数器
(3)动作
4. 传输层
4.1 端口
-
作用
能让应用层的各种应用进程将其数据通过端口向下交付给传输层,让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程 -
本质
端口是传输层的访问服务点SAP
端口在传输层的作用类似于IP地址在网络层的作用或MAC地址在链路层的作用
传输层使用的是软件端口(应用层的各种协议进程与传输实体进行层交互的一种地址) -
端口号
长度16bit,只具有本地意义,只标识本计算机应用层中的各进程,不同计算机的相同端口没有联系
服务器端使用的端口号:(1)熟知端口号(01023):**FTP:21**;**TELNET:23**;**SMTP:25**;**DNS:53**;**TFTP:69**;**HTTP:80**;**SNMP:161**;**HTTPS:443**;(2)登记端口号(102449151):为没有熟知端口号的应用程序使用,必须在IANA按照规定手续登记,以防止重复
客户端使用的端口号/短暂端口号(49152~65535)
4.2 套接字
-
本质
端口号拼接IP地址
套接字Socket = -
作用
套接字唯一地标识网络中的一台主机和上面的一个进程
4.3 TCP传输控制协议
4.3.1 概述
TCP是面向连接的传输层协议;在使用TCP之前必须建立连接,传送完后释放连接;每一条TCP连接必须是点对点(套接字)的
TCP提供可靠交付的服务;通过TCP连接传送的数据,无差错、不丢失、不重复、且按序到达
TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据
TCP面向字节流;TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流;TCP并不知道所传送的字节流的含义
4.3.2 TCP报文段
IP数据报:IP首部+IP数据部分
IP数据部分(TCP报文段):TCP首部+TCP数据部分
TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数),因此,TCP首部的最小长度是20字节
2B源端口
2B目的端口
4B序号:本报文段所发送的数据的第一个字节的序号
4B确认号:期望收到对方的下一个报文段的第一个数据字节的序号
4bit数据偏移:单位4B;数据偏移最大值60B,也就是TCP首部的最大长度60B,所以选项长度不能超过40B
6bit保留
1bit紧急位URG:URG=1表明紧急指针字段有效,发送方TCP就把紧急数据插到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据
1bit确认位ACK:ACK=1时确认号字段有效;TCP规定,连接建立后所有传送的报文段都必须把ACK置1
1bit推送位PSH:PSH=1,发送方立即创建一个报文段 发送出去;接收方收到会尽快交付接收应用进程,而不再等到整个缓存都填满了再向上交付
1bit复位位RST:RST=1表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接;RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接
1bit同步位SYN:用来同步序号;SYN=1且ACK=0表明这是一个连接请求报文段;SYN=1且ACK=1表明这是一个同意建立连接的响应报文段;SYN=1表明这是一个连接请求或连接接受报文
1bit终止位FIN:用来释放一个连接;FIN=1表明此报文段的发送方的数据已发送完毕,并要求释放运输连接
2B窗口:发送报文段一方的接收窗口;从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量,单位1B
2B校验和:校验的范围包括数据和首部两个部分;伪首部的格式和UDP一样,其中第四个字段的17改为6表示TCP;接收方收到报文段后仍要加上伪首部来计算校验和
2B紧急指针:仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急指针指出了紧急数据末尾在报文段中的位置)
选项(长度可变):最长40B;TCP起初只规定了一种选项,即最大报文长度MSS,MSS时每一个TCP报文段中的数据字段的最大长度
填充:仅为使整个TCP首部长度为4B的整数倍
数据部分
4.3.3 可靠传输
-
序号
TCP连接传送的数据流按照字节编号,TCP首部中序号字段的值就填该报文段所发送数据的第一个字节的编号
TCP通常将不按序到达的数据先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程 -
确认
TCP默认使用累计确认,既不需要对每个序号确认,根据接收方发送的ack可以确定当前正确收到的最大序号字节
TCP首部中的确认号是期望收到对方下一个报文段的数据的第一个字节的序号 -
重传
(1)超时
TCP每发出一个报文段就对其设置一个计时器,到时未收到确认则重传该报文段
(2)冗余ACK
每当比期望序号大的失序报文段到达时,就发送一个冗余ACK;当发送方收到对同一个报文段的3个冗余ACK后,就可以认为跟在这个被确认段之后的报文段已经丢失,发送方进行快重传
4.3.4 连接管理
-
三次握手建立连接
(1)客户机的TCP首先向服务器的TCP发送连接请求报文段(CLOSED->SYN-SENT);SYN=1,seq=x;SYN报文段不能携带数据,但要消耗掉一个序号
(2)服务器的TCP收到连接请求报文段后,若同意,则为该连接分配缓存和变量,并向客户机发送确认(LISTEN->SYN-RCVD);SYN=1,ACK=1,seq=y,ack=x+1;确认报文段不能携带数据,但要消耗掉一个序号
(3)当客户机收到该确认报文后,为该TCP分配缓存和变量,还要向服务器给出确认(SYN-SENT->ESTABLISHED);ACK=1,seq=x+1,ack=y+1;报文段可以携带数据,不携带数据则不消耗序号 -
四次挥手释放连接
(1)客户机发送连接释放报文段(ESTABLISHED->FIN-WAIT-1);FIN=1,seq=u;FIN报文段即使不携带数据也要消耗一个序号;TCP规定FIN可以携带数据,但一般情况不会携带
(2)服务器收到连接释放报文段后即发出确认(ESTABLISHED->CLOSE-WAIT);ACK=1,seq=v,ack=u+1;此时从客户机到服务器方向的连接被释放(FIN-WAIT-1->FIN-WAIT-2),TCP处于半关闭状态,但服务器仍可发送数据
(3)若服务器已经没有要向客户机发送的数据,就通知TCP释放连接(CLOSE-WAIT->LAST-ACK);FIN=1,ACK=1,seq=w,ack=u+1;FIN报文段即使不携带数据也要消耗一个序号;TCP规定FIN可以携带数据,但一般情况不会携带
(4)客户机收到连接释放报文后,必须发出确认(FIN-WAIT-2->TIME-WAIT),此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)(TIME-WAIT->CLOSED);ACK=1,seq=u+1,ack=w+1
4.3.5 流量控制
-
机制
TCP利用滑动窗口机制实现流量控制 -
原理
接收方根据自己的接收缓存大小调整接收窗口rwnd并告知发送方
发送方根据对当前网络拥塞程度的估计而确定拥塞窗口cwnd
发送方最终的发送窗口=min -
零窗口探测
TCP发送方收到接收方的零窗口通知后启动持续计时器,超时后,向接收方发送零窗口探测报文
4.3.6 拥塞控制
-
定义
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载
TCP以字节数作为窗口大小的单位,但为了方便讨论,拥塞算法中都以报文段的个数作为窗口大小的单位 -
慢开始
在TCP刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd=1(1个最大报文段长度MSS)
每收到一个对新报文段的确认后,将cwnd加1,即增加1个MSS(只是宏观上类似翻倍)
cwnd增大到慢开始门限ssthresh后,改用拥塞避免算法 -
拥塞避免
每经过一个RTT就把拥塞窗口cwnd加1,即增加1个MSS -
发生拥塞时
修改ssthresh为拥塞时cwnd的一半,把cwnd设置成1,重新进行慢开始算法 -
快重传
当发送方连续收到3个冗余ACK报文后,直接重传报文段,无须等待计时器倒计时 -
快恢复
当发送方连续收到3个冗余ACK报文时,修改ssthresh为此时cwnd的一半,并将cwnd设置为ssthresh修改后的数值,开始执行拥塞避免
4.4 UDP用户数据报协议
4.4.1 概述
用户数据报协议UDP只在IP的数据报服务之上增加了复用分用以及差错检测的功能
UDP是无连接的,发送数据之前不需要建立连接
UDP使用尽最大努力交付,不保证可靠交付
UDP是面向报文的;发送方的UDP对应用程序交下来的报文,不合并也不拆分,保留报文的边界,在添加首部后就向下交付IP层,应用层给多长的报文,UDP就照样发送
UDP没有拥塞控制,因此网络拥塞不会让源主机发送速率降低
UDP支持一对一、一对多、多对一和多对多的交互通信
UDP的首部开销小,只有8字节
4.4.2 UDP数据报
12B伪首部(不属于UDP数据报):不属于UDP数据报真正的首部,而只是在计算校验和时临时添加在UDP用户数据报前面;伪首部既不向下传递也不向上递交,仅仅是为了计算校验和;UDP同时检验首部和数据
2B源端口:源端口号,在需要对方回信时选用,不需要时可用全0
2B目的端口:目的端口在终点交付报文时必须使用,如果接收方发现目的端口不正确,丢弃该报文
2B长度:UDP用户数据报的长度,其最小值是8(仅有首部)
2B校验和:检测UDP用户数据报在传输过程中是否有错,有错就丢弃
数据部分
4.4.3 复用分用
复用:发送方不同的应用进程都可以使用UDP协议传送数据
分用:接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程
4.4.4 UDP校验
-
发送方
(1)把全0放入校验和字段
(2)若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全0字节(但此字节不发送)
(3)把伪首部以及UDP用户数据报看成一个个16位的字,按二进制反码计算出这些16位字的和
(4)将此和的二进制反码写入校验和字段后,发送这个UDP用户数据报 -
接收方
(1)把收到的UDP用户数据报连同伪首部以及可能的填充全0字节一起,按二进制反码求这些16位字的和(进位回卷,最终结果取反)
(2)当无差错时结果应为全1,否则就表明有差错,接收方丢弃这个UDP用户数据报
5. 应用层
5.1 网络应用模型
5.1.1 C/S模型(客户/服务器模型)
-
概述
一个总是打开的主机称为服务器,它为许多自称为客户机的主机发来的请求提供服务
客户机之间不直接通信
客户程序必须知道服务器程序的地址
服务器上运行的软件专门用来提供某种服务的程序,同时处理多个远程/本地客户的要求,不需要知道客户程序的地址
可扩展性不佳,受到服务器硬件和网络带宽的限制,服务器支持的客户机数有限 -
工作流程
服务器处于接收请求的状态
客户机发出服务请求,并等待接收结果
服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机 -
常见应用
Web、文件传输协议FTP、远程登陆、电子邮件
5.1.2 P2P模型(对等模型)
-
概述
整个网络的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权力和义务是大体对等的
没有固定的客户和服务器划分
多个客户机之间可以直接共享文档
减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,大大提高了系统效率和资源利用率
在获取服务的同时还要给其他结点提供服务,会占用较多内存,影响整机速度 -
常见应用
Bittorrent
5.2 DNS域名系统
-
概述
把便于人们记忆的具有特定含义的域名转换为便于机器处理的IP地址
采用C/S模型
基于UDP
端口号53 -
域名结构
三级域名.二级域名.顶级域名
(1)顶级域名
国家顶级域名:cn、us
通用顶级域名:com、net、org、edu、gov
基础结构域名:用于反向域名解析,即将IP地址转换为对应的域名
(2)二级域名:baidu、google、qq、edu、com
(3)三级域名:mail、www
(4)四级域名:mail、www -
域名服务器
(1)根域名服务器
最高层次的域名服务器
所有的根域名服务器都知道所有的顶级域名服务器的IP地址
根域名服务器用来管辖顶级域,通常它不直接把带查询的域名直接转换成IP地址,而是高速本地域名服务器下一步应当找哪个顶级域名服务区进行查询
因特网上有13个根域名服务器
(2)顶级域名服务器
负责管理在该顶级域名服务器上注册的所有二级域名
收到DNS查询请求时,给出相应的回答,可能是最后的结果,也可能是下一步应当查找的域名服务区的IP地址
(3)权限域名服务器
每台主机必须在权限域名服务器处登记(权限域名服务器保存该区中的所有主机的域名到IP地址的映射)
许多域名服务器同时充当本地域名服务器和权限域名服务器
(4)本地域名服务器
主机发出DNS查询请求时,这个查询请求报文就发给该主机的本地域名服务器 -
域名解析过程
(1)递归查询
(2)迭代查询
5.3 FTP文件传输协议
-
概述
FTP提供交互式的访问,允许客户指明文件的类型和格式,并允许文件具有存取权限
屏蔽了各计算机系统的细节,因而适合在异构网络中的任意计算机之间传送文件
采用C/S模型
基于TCP
端口号21 -
控制连接
端口号21,建立在这个端口上的连接称为控制连接,用来传输控制信息(连接请求、传送请求等),且控制信息都用7位ASCII码传送
服务器监听21号端口,等待客户连接
客户端发出的传送请求通过控制连接发给服务器的控制进程
控制连接在整个会话期间一直保持打开 -
数据连接
控制进程收到文件传输系统请求后,就创建数据传送进程和数据连接,用来连接客户端和服务器端的数据传送进程
数据传送进程实际完成文件的传递,传送完毕后关闭数据连接并结束进程
传输模式:(1)PORT主动模式:服务器连接到客户端端口,客户端连接到服务器的21端口,登陆成功后,客户端随机开放一个端口,并且告知服务器,服务器收到后通过20端口和客户端开发的端口连接传送数据。(2)PASV被动模式:客户端连接到服务器端口,客户端连接到服务器的21端口,登陆成功后,发送PASV命令到服务器,服务器在本地随机开放一个端口并告知客户端,客户端再连接到服务器开发的端口进行数据传输
5.4 电子邮件
5.4.1 工作流程
发信人调用用户代理来撰写和编辑要发送的邮件,用户代理用SMTP把邮件传送给发送端邮件服务器
发送端邮件服务器将邮件放入邮件缓存队列中等待发送
运行在发送端邮件服务器的SMTP客户进程发现邮件中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接
TCP连接建立后,SMTP客户进程就开始向远程SMTP服务器进程发送邮件
当所有邮件发送完后,SMTP关闭所建立的TCP连接
运行在接收端邮件服务器的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取
收信人打算收信时,调用用户代理,使用POP3或IMAP协议将自己的邮件从接收端邮件服务器的用户邮箱中取回
5.4.2 电子邮件信息格式
To:后面填入一个或者多个收件人的电子邮箱地址,电子邮件地址格式:收件人邮箱名@邮箱所在主机的域名
Subject:邮件的主题,反映了邮件的主要内容
Cc:留下一个复写副本,表示应给某人发送一个邮件副本
From,Date:分别表示发件人的电子邮箱和发送日期,一般由邮件系统自动填入
Reply-To:对方回信所用的地址,这个地址可以和发件人发信所用地址不同
5.4.3 SMTP简单邮件传输协议
-
概述
采用TCP,端口号25
采用C/S模型
SMTP只能传送7位ASCII码文本邮件,非英语国家的语言无法传送,也无法传送可执行文件和其他二进制对象 -
工作流程
(1)建立连接
发件人的邮件发送到发送方邮件服务器的邮件缓存后,SMTP客户就每隔一定时间扫描一次自己的缓存,如果发现有邮件没发,就与接收方邮件服务区的SMTP服务器建立TCP连接,连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪),然后SMTP客户向SMTP服务器发送HELO命令,附上发送方主机名,SMTP服务器若能接收邮件,回复250 OK
(2)邮件传送
邮件传送从MAIL命令开始,之后跟着发件人的地址,如MAIL FROM:< Beokayy@gmail.com >;下面跟着一个或多个RCPT命令,取决于是否把同一个邮件发送给多个收件人,如RCPT TO< Alex@gmail.com >
(3)连接释放邮件发送完毕后,SMTP客户端发送QUIT命令,SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接
5.4.4 POP3邮局协议
-
概述
采用TCP,端口号110
采用C/S模型
接收方的用户代理必须运行POP客户程序,接收方的邮件服务器上运行POP服务器程序 -
工作流程
(1)下载并保留
用户从邮件服务器上读取邮件后,用户可再次从服务器上读取该邮件
(2)下载并删除
邮件一旦被读取,就从邮件服务器上删除,用户不可再读取
5.4.5 MIME多用途互联网邮件扩展
-
概述
SMTP只能传送7位ASCII码文本邮件,非英语国家的语言无法传送,也无法传送可执行文件和其他二进制对象,所以提出了MIME
在发送端发送的邮件中包含有非ASCII码数据时用MIME进行转换 -
内容
包含5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送编码和内容类型
定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
5.5 万维网
5.5.1 概述
万维网www是一个分布式、联机式的信息存储空间,在这份空间中,事物称为资源,由URL标识,通过HTTP传送给使用者,后者通过单机链接来获取资源
采用客户/服务器模型
5.5.2 组成
统一资源定位符URL:负责标识万维网上的各种文档,使每个文档在整个万维网内具有唯一标识符URL
超文本传输协议HTTP:一个应用层协议,使用TCP,是万维网客户程序和服务器程序之间交互遵守的协议
超文本标记语言HTML:一种文档结构的标记语言,使用一些约定的标记对页面上的信息和格式进行描述
5.5.3 URL统一资源定位符
<协议>://<主机>:<端口>/<路径>
协议:用什么协议来获取万维网文档,常用的有http、ftp等
主机:指出万维网文档在哪一台主机上,这里的主机指该主机在互联网上的域名
端口和路径有时可省略
5.5.4 HTTP超文本传输协议
-
概述
HTTP定义了浏览器(WWW客户进程)怎样向WWW服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
HTTP是面向事务的应用层协议
HTTP本身无连接,基于TCP连接
HTTP无状态,不会记忆曾为某个用户服务多少次,所以每次访问时间相同
-
工作流程
用户单击鼠标
浏览器分析链接指向页面的URL
浏览器向DNS请求解析URL中域名的IP地址
DNS解析出服务器的IP地址
浏览器与该服务器建立TCP连接(TCP的目的端口号80)
浏览器发出HTTP请求
服务器通过HTTP响应把html文件发送给浏览器
释放TCP连接
浏览器解释html文件,并将Web页显示给用户
-
HTTP/1.1
采用持续连接,即WWW服务器发送响应后仍然保持这条连接
持续连接分为流水线方式和非流水线方式(客户端必须等待前一个响应返回后,才能发送下一个请求)
大图片考虑发送窗口大小
-
HTTP/1.0
采用非持续连接,即每次传送完一个对象都要重新再建立TCP传资源
每请求一个文档或引用对象就要有2RTT的开销
-
HTTP报文结构
开始行:三个字段以空格分割;CR:回车,LF:换行
首部行:用来说明浏览器、服务器或报文主体的信息;每个首部行都有首部字段名和它的值,每一行的结束都有回车换行;整个首部行结束时,用空行和后面分开
实体主体:在请求报文中一般不用,在响应报文中可能没有
-
HTTP请求报文中的方法
GET:请求读取由URL标识的信息
HEAD:请求读取由URL标识的信息首部
POST:给服务器添加信息(如注释)
CONNECT:用于代理服务器
OPTION:请求一些选项的信息
PUT:在指明URL下存储一个文档
DELETE:删除指明的URL所标志的资源
TRACE:用来进行环回测试的请求报文
(Connection:Keep-Alive持续连接,Connection:Close非持续连接)
-
Cookie
HTTP服务器使用Cookies+数据库的方式来跟踪用户的活动
用户浏览某个使用Cookies的网站时,服务器会为用户产生一个唯一的Cookies识别码,在自己的后端数据库中创建一个项目记录用户信息,并在给用户的响应报文中报告”Set-cookies:xxx“
用户收到以后,会在它管理的Cookie文件中添加该服务器的主机名和Cookie识别码,下次访问时会取出识别码,在请求报文中报上自己的Cookies,服务器就根据Cookies从数据库中查到该用户
浙公网安备 33010602011771号