计算机网络
计算机网络
此处对《计算机网络——自顶向下方法》的学习做一个小总结。
一、计算机网络模型
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的窗口大小的管理模式有三种:- 慢启动
慢启动模式下,发送窗口大小以每1MSS为起点,成2、4、8、16的指数速度增长。直到1.抵达ssthresh阈值;2.发生超时或丢包。 - 拥塞避免
拥塞避免模式下,发送窗口大小每RTT一MSS的速度线性增长。直到发生超时或丢包。 - 快速恢复
快速恢复模式下,发送方先快速重发引发快速恢复分组。
转换过程:运输层开始工作后进入慢启动模式,当达到阈值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。
组成
数据平面:(常为硬件组成)
- 输入端口
- 输出端口
- 交换结构
控制平面:(常为软件构成)
- 路由选择处理器
输入端口
输入端口负责:
- 将分组从物理层解包到数据链路层
- 将分组经过数据链路层校验后拼凑成网络层数据报
- 根据头部数据信息(目的IP地址等),将得到的网络层数据报发往对应的输出端口
交换结构
交换结构负责:
将各个输入端口的数据报分发给正确的输出端口
输出端口
输出端口执行输入端口相反的工作:
- 接收来自交换结构的数据报
- 将数据报添加数据链路层头部
- 转换成物理信号发出
路由选择处理器
执行控制平面功能,在传统模式下,为数据平面提供路由表;而在SDN模式下,则负责与远程控制器通信,更新维护转发表项。
IP
IPv4
要点:
- IPv4采用32位地址进行编址。
- 其首部长为20字节。
- 分片:由于数据报大小受链路层限制,故必要时需对网络层数据包进行分片。
编址
基本概念
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的部分表示主机号。
前缀细则
- 分类编址:网络前缀仅采用8、16或24bit。这使得分配合适IP地址数量变得困难。
- 无类别域间路由选择(Classless Interdomain Routing,CIDR),自由选择前缀长度。
获取IP地址
组织获取IP地址块
组织获得IP地址的方法:
- 向ISP申请
- 向管理局直接申请
成员获取IP地址-DHCP
动态主机配置协议
- 主机发送DHCP发现报文
- DHCP服务器发送DHCP提供报文
- 主机发送DHCP请求
- 服务器返回DHCP ACK报文
NAT
网络地址转换(NAT)
NAT路由器通过改写本地设备分组的IP地址与端口(NAT转换表),使得外界看起来像是与一台公网设备进行交互一般。
其余技术: NAT穿越;通用即插即用协议。
IPv6
要点:
- 40字节首部
- 取消路由器分片
隧道
为使得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. 网络层(控制平面)
控制平面分类
- 每路由器控制
每路由控制模式下,路由器间互相通信取得网络连接数据信息,每台路由器独立运行路由选择算法,确认路由表。
- 逻辑集中式控制
逻辑集中控制模式下,路由器间不互相通信,而仅与远程控制器交换数据,并执行下发的指令和路由表。
路由选择算法
分类
集中or分散
- 集中式路由选择算法(链路状态算法,LS):需要知晓全局网络连接数据
- 分散式路由选择算法(距离向量算法,DV):通过临近结点间交互,逐级迭代
静态or动态
- 静态路由选择算法:人工更新数据
- 动态路由选择算法:协议自动更新
负载敏感or迟钝
- 负载敏感:根据拥塞与否决定线路
- 负载迟钝:不在意负载
LS算法详解
通过链路状态广播,所有路由器都将获得整个网络的完整视图。其后,每台路由器依照Dijkstra算法,计算出合适的路由表,并以此为依据转发数据报。
DV算法详解
特点:迭代、异步和分布式算法。
分布式:路由器从邻居接收信息进行计算,将计算结果再次发出。
迭代:更新过程将持续到无信息交换。
异步:不要求同时进行。
依照Bellman-Ford算法,每台路由器互相发送计算结果,并在接收消息后更新自己的数据,在多轮迭代后,其路由表将收束到最小开销。
英特网网络结构
英特网全网被划分为多个自洽系统(AS)(ISP自由划分),这样有助于:
- ISP自我管理而无需对外公开
- 控制规模。
在AS内,采用自洽系统内路由选择协议
在AS间,则采用边界网关协议
开放最短路优先(OSPF)
OSPF算法是一种LS算法。特点:
- 周期性(30分钟或遇到变化)广播。
- 仅与信任的AS路由器交换信息
- 支持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)的结构传递可达路线信息。在决定路由时:
- 依照管理员设定的本地偏好
- 选取AS-PATH最短路由
- 热土豆
- BGP标识符
PS:BGP还用于IP任播
因特网控制报文协议 ICMP
ICMP用于交换网络层的相关信息,例如遇到无法转发的数据报时,则丢弃并回发目的网络不可达。
简单网络管理协议 SNMP
SDN体系中,远程控制器与路由硬件设备间的通信,就建立在SNMP上。
6. 链路层
链路层同网络层关系
网络层规定了数据报如何从一个网络传输到另一个网络;而链路层则规定了链路层帧在设备到设备中的传输。
链路层概述
在主机和路由器中,被称为网络适配器的硬件芯片实现了链路层的功能:
- 成帧:将数据报封装成链路层帧
- 链路接入:由媒体访问控制协议协调帧的传输
- 可靠交付:依靠重传实现可靠的帧传递
- 差错检测和纠正:依靠校验位检验帧中的错误以及进行可能的纠正(奇偶校验、校验和、循环冗余检测)
多路访问链路和协议
网络链路分为点对点链路和广播链路。
在广播链路中会出现多路访问问题(碰撞)。
解决方案:
1.信道划分协议
时分多路复用
频分多路复用
码多分址
2.随机接入协议()
载波侦听多路访问(CSMA)
碰撞检测的载波侦听多路访问(CSMA/CD)
3.轮流协议
MAC
MAC地址
每台主机以及路由器的每一个接口都配备有唯一的6字节的MAC地址。
- 不同于IP地址,MAC地址为扁平结构,不具备层次性
- 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路由器
交换机较路由器易于配置,但是缺乏安全性,也不适用于大规模网络。故在生产实践过程中,应按需求决定使用。
交换机的其余用途
- 交换机接口分组,构建虚拟局域网
- 构建大型数据中心网络
- 利用其思想,链路虚拟化,如多协议标签交换。
总和
- 接入网设备,利用DHCP协议,生产UDP报文段,经IP与以太网获得IP地址。
- 设备利用DNS的UDP报文获取目的域名的IP地址。
- 多级路由器通过期间链路传递报文,抵达服务器。
- 服务器做出回应。。。。。。(TCP与应用层协议)
7.无线网络和移动网络
无线网络概述
硬件实现
无线网络中的设备往往通过基站接入到互联网中,称之为基础设施模式;此外,还存在不接入互联网的小型网络,称之为自组织网络。
无线网络特性
相较于传统有线网络,无线网络在传输数据过程中:
- 有较大的损耗
- 容易出现碰撞(碰撞检测延迟、隐藏终端问题)
对于问题二,常用码分多址,CDMA来解决。
CMDA
CMDA协议下,从同一个信号(碰撞信号的混合信号)中,可以由不同的解码方式,将各个型号恢复出来。
无线LAN-WiFi:802.11
基站:接入点(AP)
MAC协议:CSMA/CA
信道划分:11给个信道
个人域网络:蓝牙 ZigBee
蜂窝移动网络
- 2G:使用无线电话的设施建设
- 3G:仍旧使用无线电话设施,但上层将电话信号和数据信号分开处理
- 4G,LTE:构建基于IP的全新蜂窝网络,电话信号也由IP设施进行传输
移动网络概述
移动性分类
- 在相同无线接入网中移动,程度:低
- 在不同接入网间移动,移动时关闭,程度:中
- 在不同间移动且保持通信,程度:高。
移动处理原理
设备存在一个永久居所,称为归属网络。归属网络中的管理器,为归属代理。而现接入网络,称之为外部网络,其管理器称之为外部代理。
间接路由选择:设备的外部网络时刻告知其归属网络设备的位置,外部通信时,设备发出数据直接交付,接收数据先法治归属网络,再转发至设备所在的外部网络。值得一提,其过程是透明的。
直接路由选择:外部通信过程中不在需要转发,而是通过询问,使得通信方得到设备的外部网络,再直接通信。
例子:移动IP;GSM蜂窝网(锚MSC)
8.计算机网络安全
安全通信的要求:
- 机密性:仅通信双方能理解报文内容,要求加密
- 报文完整性:报文不被篡改,需要校验
- 端点鉴别:通信双方能鉴别对方身份
- 运行安全性:不受蠕虫、病毒影响
密码学知识概述(机密性的探讨)
原文:明文。
加密方式:加密算法。
结果:密文。
体系:对称密匙系统と公开密匙系统
对称密匙系统
对称密匙系统中,通信双方使用相同的密匙对通信内容进行加密解密。
古有:凯撒密码
现在通用体系:3DES算法和AES算法
公开密匙体系
每一方持有私匙和公匙,将公匙公开,他人用公匙加密报文后,仅有收件方使用私匙才能正确解密,得到原文。
现在通用体系:RSA
PS:公开密匙体系较为耗费算力,常用RSA加密对称钥匙后转用堆成密匙系统通信。
报文完整性
解决方案:在报文后附加MD5对正文的散列计算结果。在发送与接收时分别计算,若吻合,则传输无误。
数字签名
借由公开密匙系统,发送方可用私匙加密其原文(可能由某些算法进行加密后的密文)依照某些散列函数提取的片段,附加在报文上。当接收方用公匙解开片段,并再次用散列函数计算片段后,便可依照吻合与否判断报文来源。
ps:报文鉴别码:MAC
公匙认证
为使得接收者可以获得正确的公匙,设立专门机构,管理公匙。并颁发公匙证书。接收者可由公匙证书在机构处查询公匙。
端点鉴别(略)
…