计算机网络

计算机网络

此处对《计算机网络——自顶向下方法》的学习做一个小总结。

一、计算机网络模型

TCP/IP模型

  • 应用层
  • 运输层
  • 网络层
  • 数据链路层
  • 物理层

OSI模型

  • 应用层
  • 表示层
  • 会话层
  • 运输层
  • 网络层
  • 数据链路层
  • 物理层

二、网络传输技术详解


三、详解TCP/IP模型

一、概述

协议

协议,即一系列公开的标准,是网络传输的核心。离开协议,不同的计算机间将无法互相理解,即使物理上相连也无法顺利进行通信。

数据单元

数据单元为网络传输过程中的单位数据包,在不同的协议层中,单位数据包不同,故数据单元对应不同的协议层有不同的称呼。

协议栈

用户数据自发送方送往接收方,在发送方经过应用层、运输层、网络层等层层协议,一层一层地封装成不同层次的数据单元,包装成一个层层包裹的数据块,当抵达接收方时,则按照物理层、数据链路层,这一与发送时相反的方向进行解包。其表现形式与栈类似,故将计算机网络中协议的组合,称为协议栈

二、应用层

原始数据

原始数据即为用户操作中直接产生的数据,包括消息、多媒体流等等。此处的原始数据是相对网络数据而言的。当原始数据被应用程序解读时,往往需要符合一定的格式,但是其不涉及网络传输的部分,我们仍旧认为其是原始数据。

应用层协议

应用层协议将用户的应用层数据封装成应用层数据单元,再交付给接下来的网络层协议。联网应用程序的多种多样也催生了多种多样的应用层协议。

  • HTTP协议
  • SMTP协议
  • DNS协议
  • BitTorrent协议

其协议规定的数据单元头部将规定如何还原网络数据为原始数据。再对原始数据进行处理。

应用层数据单元

应用层数据单元由原始数据与应用层头部组成。是应用层协议中数据的最小单位。

应用层作用

应用层向上为应用程序提供网络服务,而向下,则委托运输层完成取决于选定的运输层协议的任务(TCP/UDP)。

三、运输层

运输层数据

对于运输层来说,由应用层交付的整个应用层数据单元(应用层头部与原始数据)被称之为运输层数据。运输层并不关心应用层对数据的处理,仅仅完成自己的任务。

多路复用与多路分解

计算机可以同时与多个对象进行通信,故用不同的端口与不同对象交互,以避免混乱。对应用层,运输层提供套接字,应用层的进程只需要申请一个套接字,便可以该套接字进行网络通信。而在运输层,操作系统则将套接字与端口绑定(可能多个套接字一个端口、可能一对一)。
UDP下:对于网络中传来的报文段,操作系统则依靠源端口号、目的端口号二元组判断应该将该报文段交付给哪一个端口。
TCP下:则依靠源IP、目的IP、源端口号、目的端口号四元组判断应交付给哪一个套接字。
多路复用即将不同套接字的数据处理发出的过程。
多路分解即将收到的报文段分发给适当的套接字的过程。

运输层协议

运输层协议仅包括两者:

  • TCP
  • UDP
1.TCP

TCP(Transmission Control Protocol),也称传输控制协议。是两种传输协议的一种。其为应用层提供面向连接的,可靠的数据传输服务。除去基本传输服务外,它也提供差错检验、数据流控制、拥塞控制等服务。此外,还应注意到,TCP协议采用了分组交换策略,因此,TCP协议下的分组由传输层进行,使得报文段大小小于MSS<MTU,这样在IP段便不再需要分组。

  • 面向连接:进行基于TCP的数据交换前,发送方与接收方需要先进行三次握手,以确认连接关系。而结束交换后,则需要进行四次挥手,以彻底断开连接。
  • 可靠:在连接的基础上,TCP依靠TCP头部中的Seq与Ack字段,使得发送方与接收方可以互相确认已成功传输的分组,并依照GBN或SR机制进行重传,以保证数据的成功传输。
  • 差错检验:在TCP头部增设16位的校验和。其值为全部数据进行按16位回卷求和后的反码。在发送前计算与接收后分别计算该值,可以检测数据传输过程中是否发生错误。若发生,则进行修正或丢弃数据包。
  • 数据流控制:接收方通过TCP头部中的剩余窗口字段,告知发送方其剩余容纳能力。发送方则保证其已发送的分组数与即将发出的分组数之和小于该值。控制方式:调整发送窗口的大小。
  • 拥塞控制:基于不断调整自我发送窗口大小的机制,TCP协议得以避免在丢包、超时时不断重传,加重网络拥堵。

    拥塞控制详解:
    TCP的窗口大小的管理模式有三种:

    1. 慢启动
      慢启动模式下,发送窗口大小以每1MSS为起点,成2、4、8、16的指数速度增长。直到1.抵达ssthresh阈值;2.发生超时或丢包。
    2. 拥塞避免
      拥塞避免模式下,发送窗口大小每RTT一MSS的速度线性增长。直到发生超时或丢包。
    3. 快速恢复
      快速恢复模式下,发送方先快速重发引发快速恢复分组。

    转换过程:运输层开始工作后进入慢启动模式,当达到阈值ssthresh则转入拥塞避免模式;若超时,则将ssthresh设为当前窗口大小的一半,重新开始慢启动模式;丢包则执行快速恢复,将ssthresh与窗口都设为当下窗口的一半,再进入拥塞避免模式。

2.UDP

UDP(User Datagram Protocol),用户数据报协议。是一种不面向连接的、不可靠的数据传输服务。其仅提供差错检验功能。UDP不采用分组策略,故UDP的分组在IP中进行。

3.比较

TCP 可靠 为拥塞避免所限制 连接较为繁复 速度较慢 应用:文件传输、邮件传输
UDP 不可靠 不受限制 无连接 速度快 应用:流媒体、DNS

PS:运输层头部不包含IP地址,仅含(源、目的)端口号


4.网络层(概述与数据平面)

网络层分组

网络层分组称为数据报,由运输层报文段加上网络层首部组成。

网络层协议

网络层协议,即IPInternet Protocol(网际互连协议)。向运输层提供尽力而为的传输服务,即不保证可靠、按时,但是努力送达。TCP与UDP都由IP封装而成。相比于TCP、UDP为端到端服务,IP协议则控制数据包在网络中的传递。

IP服务模型

数据平面

路由器根据其内的路由表,将从输入端口传输而来的数据报依照其目的IP地址,将其转发至对应的输出端口,完成数据包的传递,一一接力,最终抵达终点。数据平面完成转发功能。

控制平面

控制平面负责计算路由表,给数据平面的数据交换提供依据。

控制平面-传统方法

在传统方法中,路由选择协议由每台路由器自行执行,以确定与更新路由表。

控制平面-SDN方法

在SDN(Soft Defined Network)中,一定范围的网络内,所有路由器由远程控制服务器统一控制,故可高效快捷地实现路由表计算功能,同时可支持许多其他附加功能(按其余首部匹配转发终点)。

路由器工作原理
分组交换

为实现传输的有效性,IP协议采用了分组交换策略,使得数据报大小大于46,小于1500,称为MTU。

组成

数据平面:(常为硬件组成)

  • 输入端口
  • 输出端口
  • 交换结构

控制平面:(常为软件构成)

  • 路由选择处理器
输入端口

输入端口负责:

  1. 将分组从物理层解包到数据链路层
  2. 将分组经过数据链路层校验后拼凑成网络层数据报
  3. 根据头部数据信息(目的IP地址等),将得到的网络层数据报发往对应的输出端口
交换结构

交换结构负责:

将各个输入端口的数据报分发给正确的输出端口

输出端口

输出端口执行输入端口相反的工作:

  1. 接收来自交换结构的数据报
  2. 将数据报添加数据链路层头部
  3. 转换成物理信号发出
路由选择处理器

执行控制平面功能,在传统模式下,为数据平面提供路由表;而在SDN模式下,则负责与远程控制器通信,更新维护转发表项。

IP

IPv4

要点:

  1. IPv4采用32位地址进行编址。
  2. 其首部长为20字节。
  3. 分片:由于数据报大小受链路层限制,故必要时需对网络层数据包进行分片。
编址
基本概念

IP地址与接口一一关联(具有多个接口的路由器具有多个IP地址)。IPv4地址为32位,4个字节,常采用点分十制记法进行书写,即以10进制数字表示每个字节,其间由点分开。

PS:特殊地址:

  • 0.0.0.0/8 在本地网络中代表自己,仅允许被用作源,用作目的地时,网络包将会被
  • 255.255.255.255/32 表示受限的广播(局域网广播)
  • 127.0.0.0/8 用于回环(访问自身)
子网

IP地址的分配遵循子网原则,即与一个端口关联的主机IP地址,具有一定长度相同的前缀。分配网络地址时,一个组织往往分配具有一定长度相同前缀的IP地址。在路由器中,又额外添加子网掩码这一项来指出子网前缀在IP地址中的长度,这样一来,对于路由表而言,地址匹配工作将大大降低。另一方面,为保证路由器的灵活性,设定最长前缀匹配原则,使得一台路由器可以处理不在其相关联子网中的某一IP地址。而具有相同前缀的多个子网连接在同一较大(前缀较短)子网下,又可以进一步合并子网,称之为路由聚合,使得网络结构更加层次化。

PS:子网掩码,诸如111111110000000~0之类的,前1后零组成的序列,1的部分对应的IP地址的位置表示子网号,而0的部分表示主机号。

前缀细则
  1. 分类编址:网络前缀仅采用8、16或24bit。这使得分配合适IP地址数量变得困难。
  2. 无类别域间路由选择(Classless Interdomain Routing,CIDR),自由选择前缀长度。
获取IP地址
组织获取IP地址块

组织获得IP地址的方法:

  1. 向ISP申请
  2. 向管理局直接申请
成员获取IP地址-DHCP

动态主机配置协议

  1. 主机发送DHCP发现报文
  2. DHCP服务器发送DHCP提供报文
  3. 主机发送DHCP请求
  4. 服务器返回DHCP ACK报文
NAT

网络地址转换(NAT)

NAT路由器通过改写本地设备分组的IP地址与端口(NAT转换表),使得外界看起来像是与一台公网设备进行交互一般。

其余技术: NAT穿越;通用即插即用协议。

IPv6

要点:

  1. 40字节首部
  2. 取消路由器分片
隧道

为使得IPv6融入IPv4网络,采用隧道法。即在IPv4间,将IPv6数据报装入IPv4数据报进行运输。而在IPv6设备看来,IPv4则仿佛不存在一般。

SDN

SDN结构体系
  • SDN网络应用
  • SDN控制器
  • SDN数据平面
SDN网络应用

借由SDN控制器提供的API编写的网路控制应用,不需要考虑底层的硬件。网络管理员依靠网络应用可以较为轻松地设置网络。

SDN控制器

SDN控制器,向下,统筹SDN数据平面的硬件设备,负责与路由器交换数据,下达指令;向上,为网络应用提供网络相关信息,接收指令。

数据平面

数据平面由众多路由器构成,接收来自控制器的匹配加动作转发表,并以此为依据进行数据报的转发工作。

SDN功能
  • 简单转发:依照IP地址进行转发,行为同传统结构一致
  • 防火墙:对特定IP进行隔离
  • 负载均衡:将数据报均衡地分配给多个同IP地址的服务器,均衡各个服务器的负载。
常见SDN协议
  • OpenFlow

5. 网络层(控制平面)

控制平面分类

  1. 每路由器控制

每路由控制模式下,路由器间互相通信取得网络连接数据信息,每台路由器独立运行路由选择算法,确认路由表。

  1. 逻辑集中式控制

逻辑集中控制模式下,路由器间不互相通信,而仅与远程控制器交换数据,并执行下发的指令和路由表。

路由选择算法

分类
集中or分散
  1. 集中式路由选择算法(链路状态算法,LS):需要知晓全局网络连接数据
  2. 分散式路由选择算法(距离向量算法,DV):通过临近结点间交互,逐级迭代
静态or动态
  1. 静态路由选择算法:人工更新数据
  2. 动态路由选择算法:协议自动更新
负载敏感or迟钝
  1. 负载敏感:根据拥塞与否决定线路
  2. 负载迟钝:不在意负载
LS算法详解

通过链路状态广播,所有路由器都将获得整个网络的完整视图。其后,每台路由器依照Dijkstra算法,计算出合适的路由表,并以此为依据转发数据报。

DV算法详解

特点:迭代、异步和分布式算法
分布式:路由器从邻居接收信息进行计算,将计算结果再次发出。
迭代:更新过程将持续到无信息交换。
异步:不要求同时进行。

依照Bellman-Ford算法,每台路由器互相发送计算结果,并在接收消息后更新自己的数据,在多轮迭代后,其路由表将收束到最小开销。

英特网网络结构

英特网全网被划分为多个自洽系统(AS)(ISP自由划分),这样有助于:

  1. ISP自我管理而无需对外公开
  2. 控制规模。

在AS内,采用自洽系统内路由选择协议
在AS间,则采用边界网关协议

开放最短路优先(OSPF)

OSPF算法是一种LS算法。特点:

  1. 周期性(30分钟或遇到变化)广播。
  2. 仅与信任的AS路由器交换信息
  3. 支持AS内部的层次结构(即多个子AS)
编辑网关协议(BGP)

BGP负责跨越AS的网络连接选择路径,但是其目的不在于给定最终主机的路由路线,而只是将数据报引导至对应的AS。为实现这一点,其使得路由器可以:

1. 从邻居AS获得前缀可达信息。

BGP协议下,每台路由器都将广播自己的前缀可达信息。
AS间,依靠外部BGP(eBGP连接),网关路由器向邻居AS的网关路由器发送,
AS内,依靠内部BGP(iBGP连接),内部路由器向全体广播。

2. 确定到达给定前缀的最好路由。

BGP中传递的信息将包含AS-PATH,这一属性类似A-B-X(A、B、X为AS)的结构传递可达路线信息。在决定路由时:

  1. 依照管理员设定的本地偏好
  2. 选取AS-PATH最短路由
  3. 热土豆
  4. BGP标识符
PS:BGP还用于IP任播

因特网控制报文协议 ICMP

ICMP用于交换网络层的相关信息,例如遇到无法转发的数据报时,则丢弃并回发目的网络不可达

简单网络管理协议 SNMP

SDN体系中,远程控制器与路由硬件设备间的通信,就建立在SNMP上。


6. 链路层

链路层同网络层关系

网络层规定了数据报如何从一个网络传输到另一个网络;而链路层则规定了链路层帧在设备到设备中的传输。

链路层概述

在主机和路由器中,被称为网络适配器的硬件芯片实现了链路层的功能:

  1. 成帧:将数据报封装成链路层帧
  2. 链路接入:由媒体访问控制协议协调帧的传输
  3. 可靠交付:依靠重传实现可靠的帧传递
  4. 差错检测和纠正:依靠校验位检验帧中的错误以及进行可能的纠正(奇偶校验、校验和、循环冗余检测)

多路访问链路和协议

网络链路分为点对点链路广播链路
在广播链路中会出现多路访问问题(碰撞)。
解决方案:

1.信道划分协议
时分多路复用
频分多路复用
码多分址
2.随机接入协议()
载波侦听多路访问(CSMA)
碰撞检测的载波侦听多路访问(CSMA/CD)
3.轮流协议

MAC

MAC地址

每台主机以及路由器的每一个接口都配备有唯一的6字节的MAC地址。

  1. 不同于IP地址,MAC地址为扁平结构,不具备层次性
  2. MAC地址与设备绑定,不随接入网位置变化
地址解析协议(ARP)

地址解析协议(ARP)负责将IP地址转换为MAC地址,使得主机与路由器可以由网络层的IP地址得知接下来要传输的设备的MAC地址。

ARP的原理为:
发起方构造ARP分组,包含源IP、MAC与目的IP,广播到子网全部设备上。符合目的IP地址条件的设备便会进行回复,这样,发起方便获得了所求的MAC地址。
设备中存有ARP表,记录了IP与MAC的对应关系,并定期更新。

以太网

以太网是时下最为流行的局域有线网技术,是链路层网络,仅设计MAC地址。
与其同一等级的包括环令牌、FDDI、ATM。

交换机工作原理

交换机的工作不涉及网络层,故交换机无IP地址。
此外,交换机虽具备网络适配器,却无MAC地址。
故,交换机对于网络中的路由器和主机而言,是透明的。

同时,交换机采用星型拓扑结构,不存在碰撞,故无需使用MAC协议。

交换机内部存有交换机表,储存了交换机接口和MAC地址的对应关系。
在工作过程中,交换机会自行学习,记录收到的帧的MAC地址,并将其和接口关联。
同时,按交换机表转发帧,如若没有,则对接收端口外的所有端口进行广播。

交换机VS路由器

交换机较路由器易于配置,但是缺乏安全性,也不适用于大规模网络。故在生产实践过程中,应按需求决定使用。

交换机的其余用途
  1. 交换机接口分组,构建虚拟局域网
  2. 构建大型数据中心网络
  3. 利用其思想,链路虚拟化,如多协议标签交换

总和

  1. 接入网设备,利用DHCP协议,生产UDP报文段,经IP与以太网获得IP地址。
  2. 设备利用DNS的UDP报文获取目的域名的IP地址。
  3. 多级路由器通过期间链路传递报文,抵达服务器。
  4. 服务器做出回应。。。。。。(TCP与应用层协议)

7.无线网络和移动网络

无线网络概述

硬件实现

无线网络中的设备往往通过基站接入到互联网中,称之为基础设施模式;此外,还存在不接入互联网的小型网络,称之为自组织网络

无线网络特性

相较于传统有线网络,无线网络在传输数据过程中:

  1. 有较大的损耗
  2. 容易出现碰撞(碰撞检测延迟、隐藏终端问题)

对于问题二,常用码分多址,CDMA来解决。

CMDA

CMDA协议下,从同一个信号(碰撞信号的混合信号)中,可以由不同的解码方式,将各个型号恢复出来。

无线LAN-WiFi:802.11

基站:接入点(AP)
MAC协议:CSMA/CA
信道划分:11给个信道

个人域网络:蓝牙 ZigBee
蜂窝移动网络
  • 2G:使用无线电话的设施建设
  • 3G:仍旧使用无线电话设施,但上层将电话信号和数据信号分开处理
  • 4G,LTE:构建基于IP的全新蜂窝网络,电话信号也由IP设施进行传输

移动网络概述

移动性分类
  • 在相同无线接入网中移动,程度:低
  • 在不同接入网间移动,移动时关闭,程度:中
  • 在不同间移动且保持通信,程度:高。
移动处理原理

设备存在一个永久居所,称为归属网络。归属网络中的管理器,为归属代理。而现接入网络,称之为外部网络,其管理器称之为外部代理

  1. 间接路由选择:设备的外部网络时刻告知其归属网络设备的位置,外部通信时,设备发出数据直接交付,接收数据先法治归属网络,再转发至设备所在的外部网络。值得一提,其过程是透明的。

  2. 直接路由选择:外部通信过程中不在需要转发,而是通过询问,使得通信方得到设备的外部网络,再直接通信。

例子:移动IP;GSM蜂窝网(锚MSC)


8.计算机网络安全

安全通信的要求:

  • 机密性:仅通信双方能理解报文内容,要求加密
  • 报文完整性:报文不被篡改,需要校验
  • 端点鉴别:通信双方能鉴别对方身份
  • 运行安全性:不受蠕虫、病毒影响

密码学知识概述(机密性的探讨)

原文:明文。
加密方式:加密算法。
结果:密文。

体系:对称密匙系统と公开密匙系统

对称密匙系统

对称密匙系统中,通信双方使用相同的密匙对通信内容进行加密解密。

古有:凯撒密码

现在通用体系:3DES算法和AES算法

公开密匙体系

每一方持有私匙和公匙,将公匙公开,他人用公匙加密报文后,仅有收件方使用私匙才能正确解密,得到原文。

现在通用体系:RSA

PS:公开密匙体系较为耗费算力,常用RSA加密对称钥匙后转用堆成密匙系统通信。

报文完整性

解决方案:在报文后附加MD5对正文的散列计算结果。在发送与接收时分别计算,若吻合,则传输无误。

数字签名

借由公开密匙系统,发送方可用私匙加密其原文(可能由某些算法进行加密后的密文)依照某些散列函数提取的片段,附加在报文上。当接收方用公匙解开片段,并再次用散列函数计算片段后,便可依照吻合与否判断报文来源。

ps:报文鉴别码:MAC

公匙认证

为使得接收者可以获得正确的公匙,设立专门机构,管理公匙。并颁发公匙证书。接收者可由公匙证书在机构处查询公匙。

端点鉴别(略)