menu 牢记自己是菜
计算机网络复习
1734 浏览 | 2020-07-01 | 阅读时间: 约 17 分钟 | 分类: 计算机 | 标签:
请注意,本文编写于 1366 天前,最后修改于 1351 天前,其中某些信息可能已经过时。

0x1 前言

开始复习计算机网络了,计划以物理层,数据链路层,网络层,运输层,应用层五个层次进行复习。主要复习每个层次的作用功能等,了解协议规定等诸多定义。


0x2 物理层

物理层的主要任务:确定与传输媒体的接口的一些特性。

  1. 机械特性:指明接口所用的接线器的形状和尺寸,引线数目和排列,固定和锁定装置等
  2. 电压特性:指明在接口电缆的各条线上出现的电压范围。
  3. 功能特性:指明某条线上出现的某一电平的电压表示何种意义。
  4. 过程特性:指明对于不同功能的各种可能事件的出现顺序。

码元:在使用时域的波形表示数字信号时,代表不同离散数值的基本波形。

比如:码元的离散值为8,则1码元可携带3bit信息(000,001等)

数据传输速率:也称为比特速率S,是指单位时间内传输的二进制位数,单位是(位/秒),记为:bit/s,b/s或bps。
信号传输速率:也称为码元速率,是指单位时间内通过信道传输的码元个数,单位是波特,记为Baud,以B表示。

这个很容易理解,比如我们一个码元携带有三位的数据,那么这个码元就有8个离散的电平值。此时数据传输速率就等于(信号传输速率*3),因为每当有一个码元经过,就有三位数据被传输。

奈氏准则:给出了在理想条件下,为了避免码间串扰,码元的传输速率的上线值。
C=2Wlog2(N) Baud/s(信号传输速率单位,即码元传输速率)
W是理想低通道的带宽,单位(HZ)

信噪比:是信号的平均功率和噪声的平均功率之比。常被记为S/N,并用分贝(dB)作为度量单位。
换成人话就是S/N=10时,信噪比为10db,S/N=1000时,信噪比为30db。换算就是数一下0就好了。
香农公式:在有白噪声干扰的情况下极限的信息传输速率。
C=Wlog2(1+S/N)bit/s(这里算出的是数据传输率,不是码元)
W为信道的带宽(HZ),S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率。

香农公式意义:

为了实现串行传输,我们需要解决同步的问题,以下是几种常见的同步方式:

  1. 位同步:使接收端的每一位都与发送端保持同步,首先保证收发时钟完全一致。那我们如何实现位同步呢?外同步方法:发送端在发送数据之前先发送同步的时钟信号,一边接受方锁定自己的时钟脉冲频率。内同步的方法:接收方利用包含有同步信号的特殊编码(曼切斯特编码)从信号自身提取同步信号。
  2. 字符同步(异步方式):由起始位,停止位和奇偶校验位构成。
  3. 帧同步:起止式同步法和插入特殊同步码组法两种。

数据编码与调制:

  1. 不归零制(NRZ):用高电平(正电压)表示1,用低电平(负电压)表示0。
  2. 逢1变化的NRZ码(DNRZ):上种编码的改进版,逢1发生跳变,0不变。
  3. 曼彻斯特编码:简单的来说就是从高到低为1,从低到高为0
  4. 差分曼切斯特编码:

常用的传输媒体:

复用技术:

  • 时分复用
  • 频分复用
  • 码分复用
  • 空分复用
    码分复用CDM:将每一个比特时间划分为m个短间隔,称为码片(chip),每一个站被指派一个唯一的mbit码片序列,如果发送比特1,则发送自己的mbit码片序列。如发送比特0,则发送该码片序列的二进制反码。每个站分配的码片序列不仅必须各不相同,并且还必须相互正交。并且与自己规格化内积一定为1,与码片反码规格化内积为-1。

0x3 数据链路层

链路层的三个基本功能

  1. 封装成帧:是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界。
  2. 透明传输:为了实现透明传输,我们需要避免中间数据被误认为是帧结尾,导致其余帧被丢弃的可能性。所以我们有了字节填充/字符填充的方法。这种方法的实现去主要是在控制字符数据(非控制符)前加入转义字符。一般我们使用“ESC”,十六进制1B。
  3. 差错控制:在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。差错控制(error control)是指在数据通信过程中能发现或纠正差错,将差错限制在尽可能小的允许范围内。

差错控制的方法主要分为三种:向前纠错(发送能纠错的码,在译码时自动发现并纠正传输中的错误),检错重发(发送端发出能够检错的码,接收端检验出有差错时,发出反馈应答信号,发送端重新传输直到正确接收为止),混合纠错(先进行纠错,实在没办法就要求重传)。

常见的校验

奇偶校验

通过增加冗余位来使得码字中“1” 的个数保持为奇数(奇校验)或偶数(偶校验)。注意是‘1’

  • 垂直奇偶校验:垂直奇偶校验码把数据分成若干组,一组数据排成一行,再加一行校验码。
  • 水平奇偶校验:与垂直校验码相对,横着校验
  • 水平垂直奇偶校验:顾名思义生成一个校验方阵,先水平在竖直校验。注意单纯的水平垂直奇偶检验只有检验功能,但是水平垂直奇偶校验有一定的纠错能力。

循环冗余检验(重点)

CRC(Cyclic Redundancy Code)主要用于串行传输、网络同步通信及磁表面存储等场合,即给信息码右
边加上几位校验码,以增加整个编码系统的码距和查错纠错能力。
首先要补充的一点是模2运算的规则,其实就是异或,只不过在模二乘除法中很容易使用错误。

这里乘除时,需要用到加减时,记住要使用模2加减的规则(异或)
之后重点就来了,CRC沉余码(生成)的如何计算:


小hit:做模二除法的时候,不要管商几,因为那不重要还有可能会让你算错。把商盖住,只管异或就行了,你就是个无情的异或机器,最后注意的是,余数一定是除数少一位。
CRC检验(校验):
将接收到的数据进行模二除法,如果余数为0则说明没有问题,反之将会把数据丢弃重传。

帧检验序列 FCS

链路层的实现方式

  • 点到点网络
  • 广播网络

点对点协议PPP

协议通信步骤

  • 一结点的数据链路层把网络层交下的IP 数据报添加首部和尾部封装成帧。
  • 将封装的帧发送给目的节点的数据链路层。
  • 若目的结点 的数据链路层收到的帧无差错,则从收到的帧中提取出IP 数据报上交给上面的网络层;否则丢弃这个帧。

PPP协议三个组成部分:

  • 一个将 IP 数据报封装到串行链路的方法。
  • 链路控制协议 LCP (Link Control Protocol)。
  • 网络控制协议 NCP (Network Control Protocol)。

PPP协议的帧格式(不重要)

PPP协议解决异步传输与同步传输时透明传输的问题:

异步传输时采用字符填充法:转义序列包括一个转义字符 7D,后面是原来的值与 0x20 异或的结果,7E 转义为7D 5E。而发送7D 时则转义为 7D 5D。
例如:PPP帧的数据部分 7D 5E FE 27 7D 5D 7D 5D 65 7D 5E
将所有的7D找出来将后面的字符异或0x20即可得到源数据,然后删除7D
因此,真正的数据部分是:7E FE 27 7D 7D 65 7E

同步传输时采用零比特填充的方法: 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

广播方式中的碰撞问题

检测发生碰撞的时间


整个局域网采用最坏情况进行设计,即取总线两端最远的站相互传递信息时间的两倍作为争用期也称碰撞窗口。在经过争用期的时间后,还未检测到发生碰撞,即认为我们所发送的信息没有发生碰撞。
hit:电磁波在1km电缆的传播时延约为5us。以太网规定争用期的长度为51.2us。
最短有效帧长为64个字节,小于64个字节的数据会被直接丢弃。

网桥

网桥使各网段成为隔离开的碰撞域。 网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口。所以网桥起到了在数据链路层扩展局域网。

网桥与集线器的区别

虚拟局域网VLAN技术

VLAN技术可以很好的防止广播风暴的发生。

access和trunk端口(实验使用)

交换式以太网的特点是什么?用它怎么组成虚拟局域网?

  1. 以太网交换机的每个端bai口都直接与主机相连,du并且一般都工作在全zhi双工方式。
  2. 交换机能同时连通许多对dao的端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据。
  3. 用户独占传输媒体的带宽,若一个接口到主机的带宽是10Mbit每秒,那么有10个接口的交换机的总容量是100Mbit每秒。这是交换机的最大优点。

组成虚拟局域网:虚拟局域网建立在物理网络基础上,因此建立VLAN需要相应的支持VLAN技术的网络设备。当网络中的不同VLAN间进行相互通信时,需要路由的支持,这时就需要增加路由设备,要实现路由功能,既可采用路由器,也可采用三层交换机来完成,同时还严格限制了用户数量。

0x4 网络层

IP网络的特点

  1. IP地址标识设备:每一台主机会被分配唯一的32位的标识符。
  2. 路由器互联网络:路由器是 是IP互联网络 互联网络的枢纽、主要节点设备。
  3. 间接交付+直接交付
  4. IP地址+MAC地址:链路层只认识MAC地址,不会分析IP数据报。这样使整个链路层对网络层透明。
  5. 网络层协议是配套的

IP地址

32位构成IP,IP主要分为A,B,C,D,E类地址。

一般不使用的IP地址:

路由表

在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
对于一个IP数据报,只有在最后一个路由器才会直接交付,其余的都为间接交付。

1.特定主机路由和默认路由

特定主机路由:此路由是网络管理人员指定的专用路由,方便于控制和测试网络。
默认路由:简单来说就是查完路由表,没找到合适的,直接就投递到默认路由地址。

2.路由器转发算法

  1. 从数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址为 N。
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
  3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
  6. 报告转发分组出错。

3.ARP协议

协议主要作用就是获取目的IP的MAC地址。主要过程就是一个主机的网络层说我要把这个消息发送到IPA,但是链路层不认识这个IP,他只认识MAC地址,于是他就在整个网上喊,谁是IPA啊,的MAC地址是。。。(广播),然后经过链路的广播转发。如果收到消息的主机发现不是找他的,他将不理会这条消息。如果是,将会产生一个单播的回应,告诉发送方自己的MAC地址。
ARP高速缓存:每一个主机都设有一个 ARP 高速缓存 (ARPcache),里面存放最近获得的所在局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,以减少 ARP 广播的数量。

4.ARP协议的典型四种情况

  1. 主机主机
  2. 主机路由
  3. 路由主机
  4. 路由路由

IP数据报


老师明确说IP数据报是不用背的,但是要明确各个字段的含义。

  • 版本:占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
  • 首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 60 字节。
  • 区分服务:占 8 位,用来获得更好的服务在旧标准中叫做服务类型,但实际上一直未被使用过。1998
    年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
  • 总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。实际上这样长的数据报极少遇到。总长度必须不超过最大传送单元 MTU。以太网规定其MTU值是1500字节, 如果超过,就必须进行分片处理。IP报长可以提高效率,IP数据报短转发速度快。
  • 标识(identification) 占 16 位,它是一个计数器,用来产生数据报的标识。
    标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。

MF=1 表示后面“还有分片”。MF  0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF=0 时才允许分片。
片偏移(13 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

  • 生存时间(8 位)记为 TTL (Time To Live)路由器处理数据报所需时间不断缩小,一般都远远
    小于1秒,所以功能改为“跳数限制”,最大255。数据报在网络中可通过的路由器数的最大值。
  • 协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程。
  • 首部检验和(16 位)字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

注意32位加法,最后将高16位的数值加到低16位上。最后取反,得到校验和。

子网划分

注意子网会使主机号减少,并且子网在网外不可见。

主机数与子网数相同,也需要减2.

基本做法,将IP与子网掩码and在与目的网络地址比较,相同则转发。

CIDR

CIDR 消除了分类地址以及划分子网的概念,对原来的有类别路由选择进程进行了重新构建,因而可以更加有效地分配 IPv4 的地址空间。

CIDR划分子网时,子网数不用减2,但是主机数依然要减2(留出广播地址与地址快表示)。

CIDR划分方法是采用逐级分配的方式。
CIDR在路由转发中,采取最长匹配原则。

基于距离向量的RIP协议

这里会有路由表更新的题目

基于链路状态的OSPF协议

OSPF (Open Shortest Path First)协议的基本特点:

  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
  • OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
  • OSPF是分布式的链路状态协议。

IPV6

1.IPV6零压缩

零压缩(zero compression),即一连串连续的零可以为一对冒号所取代。例如:FF05:0:0:0:0:0:0:B3 可以写成:FF05::B3 注意:在任一地址中只能使用一次零压缩

2.IPV4向IPV6过度的方法

双协议栈:双协议栈(dual stack)是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个IPv4和一个IPv6。
隧道技术:在 IPv6 数据报要进入IPv4网络时,把 IPv6数据报封装成为 IPv4 数据报,整个的 IPv6数据报变成了 IPv4 数据报的数据部分。

0x5 运输层

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用
进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。

端口

端口用一个 16 位端口号进行标志,而且只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

1.端口的分类

运输层协议

运输层需要有两种不同的运输协议,即面向连接的传输控制协议TCP(TransmissionControl Protocol)和无连接的用户数据报协议UDP(UserDatagram Protocol)。

1.UDP协议与TCP协议的区别

UDP在传输之前不需要建立相应的连接,接收方也不需要回复确认。
TCP在传输之前需要建立可靠的信道,是一种可靠的全双工信道。

2.运输层协议与IP协议的区别

3.UDP协议格式

  • 源端口:在需要对方回信时选用,不需要时可用全0。
  • 目的端口:在终点交付报文时必须使用。
  • 长度:UDP用户数据报的长度,其最小值是8(仅有首部),最大为2 16 -1=65535字节。
  • 检验和:检测UDP数据报在传输中是否有错。有错就丢弃。伪首部是用来生成校验和的,在形成IP数据报时将其丢弃。UDP的校验不同于IP校验,他会校验数据。

校验方法与IP数据报校验方法基本一致,使用16位的数进行相加得到一个32位的数据,然后将高16位的数据加至低16位。最后取反即可。

4.TCP协议确认重传

  • 停止等待协议:每一组都要得到确认,在超时计时器清零时,假若没有得到回应,则进行重传。
  • 滑动窗口协议+累计确认(重点):


累计确认可以有效防止确认在传输中丢失的问题,当接收方收到4号确认,意味着0,1,2,3都已经成功送达。

  • 选择确认SACK

5.TCP报文段

  • 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都 要通过端口才能实现。
  • 序号字段——占 4 字节 。TCP 连接中传送的数据流中的每一个字节都编上一个序号,序号范围是[0, 2^32-1],到达最大值后,下一个序号就又回到0。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号字段——占 4 字节 ,是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。TCP是一个双工的连接
  • 数据偏移(即首部长度)——占 4 位, 它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32位字( 4 字节),最大值是15*4=60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。
  • 保留字段——占 6 位,保留为今后使用,但目前应置为 0。
  • 窗口 —— 占 2 字节,窗口大小是[0, 2 16-1]字节,作为接收方让发送方设置其发送窗口的依据。窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。如果需要窗口值超过2^16 -1,可以定义窗口扩大选项来解决。
  • 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12字节的伪首部。若使用IPv6,则相应的伪首部也要改变。
  • 确认 ACK —— 只有当 ACK=1 时确认号字段才有效。当ACK = 0 时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
  • 同步 SYN (SYNchronization) —— 在连接建立时用来同步序号。同步 SYN = 1表示这是一个连接请求或连接接受报文。
  • 终止 FIN (FINis) —— 用来释放一个连接。FIN= 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 推送 PSH (PuSH) —— 发送方把PSH置1时,就立即创建 一个报文段发送出去,而接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了 后再向上交付。但推送操作很少使用。
  • 复位 RST (ReSeT) —— 当 RST=1 时,表明 TCP 连接 中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非 法的报文段或拒绝打开一个连接。
    紧急 URG —— 当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
  • 紧急指针字段 —— 占 16 位。紧急数据放在本报文段 数据的最前面,而紧急指针指出了紧急数据的末尾在报文段中的位置。这样就可以得出在本报文段中共有多少字节 的紧急数据。

6.TCP三次握手,四次挥手


流量控制和拥塞控制

流量控制是指控制发送窗口的大小,从而控制发送流量。

拥塞控制的四种算法:慢开始,拥塞避免,快重传,快恢复。
这里一般会说那种算法,Reno TCP拥塞控制方法需要四步即慢开始,拥塞避免,快重传,快恢复。如果没说则直接慢开始,拥塞避免。

0x6 应用层

DNS服务

本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

两种DNS查询方法

  • 迭代查询:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“我这里没有你需要的IP,你需要去哪台域名服务器进行查询”。
  • 递归查询:如果主机所查询的本地服务器不知道被查出来的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他的根域名服务器继续发出查询请求,而不是主机自己进行下一步查询。

文件传输协议FTP

FTP 只提供文件传送的一些基本的服务,它使用TCP 可靠的运输服务。

简单文件传送协议 TFTP

TFTP 使用客户服务器方式和使用 UDP 数据报(端口69),因此 TFTP 需要有自己的差错改正措施。TFTP 只支持文件传输而不支持交互。

HTTP协议

HTTP 协议本身是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
一个请求网页的时间大约为:解析IP地址的时间(DNS服务器)+ 建立TCP连接和请求Web文档的时间(两个往返的时延)+ 其余请求时间(每个请求时间两个往返时延--》注意是并行请求还是串行请求还是流水线请求)
PS:流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。

HTTPS协议

HTTPS数据都是在SSL/TLS协议封装之上传输的。

邮件协议SMTP POP3 IMAP

SMTP 通信的三个阶段

  • 连接建立:连接是在发送主机的 SMTP 客户和 接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器。
  • 邮件传送
  • 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

动态主机配置协议 DHCP

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol) 提供了即插即用连网(plug-and-play networking)的机制。

DHCP中继代理:为了减少DHCP服务器,工作方式与DHCP服务器类似,先由PC机向服务器进行广播,DHCP代理服务器在向DHCP服务器单播询问。

自动专用IP寻址(APIPA)

当DHCP服务器出故障时, APIPA在169.254.0.1到169.254.255.254的私有空间内分配地址,所有设备使用默认的网络掩码255.255.0.0。

简单网络管理协议 SNMP

发表评论

email
web

全部评论 (共 2 条评论)

    2020-07-02 13:04
    突然发现你更了好几篇博客,感觉你好勤恳,仔细一看都是复习资料,哈哈哈哈。
    正好看你博客复习计网 |´・ω・)ノ
      2020-07-02 16:44
      @iyzyi我水博客还是有一手的 ∠( ᐛ 」∠)_