6227 字
31 分钟
Computer Networking-A Top-Down Approach 学习笔记

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

一、计算机网络模型#

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

公匙认证#

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

端点鉴别(略)#

Computer Networking-A Top-Down Approach 学习笔记
https://blog.logres.icu/posts/computer-networking-a-top-down-approach-学习笔记/
作者
Logres
发布于
2021-05-12
许可协议
CC BY-NC-SA 4.0