1 minute read

计算机网络

物理媒体

  • 在物理信道中传输的原始信号

物理层

  • 通信的三种方式:
    • 单向通信:单条信道
    • 半双工通信:两条信道
    • 全双工通信:两条信道
  • 数据交换方式:
    • 电路交换:连接建立、数据传输、连接释放
    • 数据报交换:以报文的形式,通过存储转发的方式进行传输
    • 分组交换:将数据块划分成较小的分组packet,通过存储转发的方式进行传输
      • 数据报方式:不同分组由路由表找到自己的路径
      • 虚电路方式:电路交换方式和数据报方式的结合

数据链路层

  • 功能:
    • 为网络层提供服务
    • 链路管理
    • 组帧
    • 流量控制
    • 差错控制
  • 差错控制
    • ARQ
      • 奇偶校验码
      • CRC
    • FEC
      • 海明码
  • 流量控制
    • Stop-and-wait
    • Go-back-N
    • Selective Repeat
  • 介质访问控制MAC
    • 信道划分
      • 分时TDM:可用于数字传输;STDM(动态/统计时分,动态分配时隙)
      • 分频FDM:
      • 分波WDM
      • 分码CDM
    • 随机访问
      • ALOHA
        • 纯ALOHA,不检测直接发送帧,直到收到ACK
        • 时隙ALOHA,在时隙slot内发送帧,直到收到ACK
      • CSMA:在传输前对信道进行侦听
        • l-坚持CSMA:若信道忙,则忙等
        • 非坚持CSMA:若信道忙,则过一段随机时间后再重复
        • p-坚持CSMA:若信道闲,以p的概率传输数据帧,1-p的概率推迟到下一个slot
      • CSMA/CD:先听后发,边听边发,冲突停发,随机重发
      • CSMA/CA:若信道闲,等待DIFS后发送整个数据帧,等待ACK;否则,执行退避算法,选取回退值作为退避计数器初始值,若空闲则开始倒计时
      • CSMA/CD和CSMA/CA的区别:前者用于总线形以太网,只能检测冲突不能避免;后者用于无线局域网,只能避免冲突不能检测
    • 轮询访问(令牌传输协议):令牌作为传输数据的许可证,在总线各节点中传递,使得信道作为独占设备
  • 局域网
    • 以太网
    • 无线局域网
    • VLAN
  • 广域网:因特网的核心部分
    • 不等于互联网,互联网可以连接不同类型的网络(因特网Internet是最大的互联网internet)
    • PPP
    • HDLC
  • 网桥:将多个以太网连接成更大的以太网,使得各网段称为互相隔离的碰撞域(冲突域),工作在MAC子层,具有路径选择的功能
    • 物理层设备(集线器、转发器)不能隔离冲突域、广播域
    • 数据链路层设备(网桥、交换机)可以隔离冲突域,能够互联不同的物理层、数据链路层协议的网段
    • 网络层设备(路由器)可以隔离冲突域、广播域,能够互联不同的物理层、数据链路层、网络层协议的网段
    • 如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在这些层次上使用不同协议的网段
  • 局域网交换机(以太网交换机):多端口的网桥

网络层

  • 功能
    • 向上提供简单灵活、无连接、最大努力交付的数据报服务,并不保证分组交付的可靠性
    • 异构网络互联
    • 路由与分组转发
    • SDN
    • 拥塞控制
  • 路由算法
    • 路由表:表项为(网络地址/子网掩码,下一跳地址)
    • 静态路由:适用小型网络,开销小,简便;不适应于拓扑结构变化的网络
    • 动态路由:能够动态适应网络,不断寻优;但算法复杂,会增加网络负担,可能引起振荡
      • 距离-向量路由算法:RIP算法,以hop数为距离度量
      • 链路状态路由算法:OSPF算法,通过Dijkstra算法计算
    • 层次路由:将整个互联网划分成许多自治系统,内部所使用的协议为IGP,通常为RIP/OSPF,自治系统之间所使用的协议为EGP,通常为BGP
  • IPv4
    • 数据报
      • 首部:20byte
      • 首部长度、总长度、片偏移的单位分别为4byte、1byte、8byte
      • 首部校验和只校验分组首部
      • 由于数据报需要组帧,因此链路层的最大传输单元MTU限制了数据报的长度,需要对于数据部分进行分片,最后在目的地的网络层被重新组装,中间各个片的路径可能不一样
      • 与分片和组装有关的首部字段:标识(数据报标号)、标志(指明是否可分片、是否为最后一片)、偏移量(所处原数据报的偏移量)
    • IPv4地址
      • 网络号+主机号
        • A类:1-126(1byte网络号)
          • 私有地址:10.0.0.0/8
        • B类:128-191(2byte网络号)
          • 私有地址:172.16.0.0/12
        • C类:192-223(3byte网络号)
          • 私有地址:192.168.0.0/16
        • D类(多播地址):224-239
        • E类(保留地址):240-255
      • 保留地址:
        • 主机号全0:代表本子网
        • 主机号全1:子网内广播(直接广播)
        • 127.xxx.xxx.xxx:环回自检
        • 全0:本网络上的本主机
        • 全1:整个TCP/IP的广播(受限广播)
      • NAT:实现专用地址到共用地址的转换
    • 子网划分:使得二级IP地址变成三级IP地址
      • 为了解决IP地址利用率很低,网络号过多导致路由表很大
      • 减少广播域的大小
      • 属于一个网络内部的事情
    • 子网掩码:通过与IP地址相与得到子网的网络号(未划分则为默认的子网)
    • CIDR无分类编址:不受ABC类网络分类的限制,自由划分IP地址;把小网汇聚成超网
    • 分组转发:针对于网络
      • IP数据报中的目的IP地址是不会变的,路由器只根据IP数据报中的目的IP地址网络前缀在路由表中找到下一跳IP地址,并通过ARP将其转换成MAC地址,放置于MAC帧首部中;
      • 由于在局域网中,MAC帧首部的源地址和目的地址会不断变化,也就意味着无法通过MAC地址跨网络通信,但是在经过网桥时不会改变源地址
    • ARP地址解析协议:IP地址到MAC地址的映射
      • 每台主机都有一个ARP高速缓存表
      • ARP表的构建:如果存在对应的表项,则直接查询,如果没有,则通过广播FF-FF-FF-FF-FF-FF的目的MAC地址的MAC帧,目的机器则会作出响应,ARP表中增加对应的表项
    • DHCP动态主机配置协议:给主机动态分配IP地址
      • 客户机广播,以让DHCP服务器给自己分配IP地址
      • 服务器接收后,广播包含分配的IP地址的数据报
      • 客户机接收后,若接受该地址则发送答应报文
      • 服务器接收后,给客户机分配IP地址
    • ICMP网际控制报文协议:让主机或路由器报告差错和异常情况
      • 报文类型:ICMP差错报文、ICMP询问报文
      • 询问报文中常用的为PING(回送请求和回答报文)、Traceroute(时间超过报文)
  • IPv6
    • 目的:从根本上解决IPv4地址空间不足
    • 与IPv4比较:
      • 16byte地址空间,多级地址(0x的表示方法)
      • 简化了首部,只有8个域(IPv4有12个域)
      • 一般意义上的不可切片
      • 首部的单位长度为8byte(IPv4为4byte)
    • IPv6地址:单播、多播、任播
    • IPv4到IPv6的过渡方法:
      • 双协议栈:同时拥有两个协议栈,同时支持两个协议
      • 隧道:将IPv6数据报封装到IPv4
  • 路由协议:
    • IGP
      • RIP路由信息协议(应用层协议,使用UDP传输数据):使用距离向量算法
        • 仅与相邻路由器交换自己的路由表
        • 按固定的时间间隔交换路由信息
        • 优点:实现简单、开销小、收敛快
        • 缺点:限制网络规模(16被规定为不可达),交换路由表的开销大,“坏消息传递慢”
      • OSPF开放最短路径优先协议(网络层协议,使用IP传输数据):使用链路状态算法
        • 对本AS中所有路由器发送所有相邻路由器的链路状态(洪泛法),只有链路状态发生变化才会洪泛
        • 使用Dijkstra算法计算自己到所有节点的最短路径,然后构建自己的路由表
        • 优点:链路状态只是度量代价的量度(部分信息),比路由表(全部信息)代价小得多;收敛很快,不会出现坏消息传递慢;灵活,负载平衡
    • EGP:通常为BGP边界网关协议(应用层协议,基于TCP)
      • 目的是寻求一个简单的路由,并不是寻找最好的
  • IP组播:单个分组正确抵达若干目标主机
    • 基于UDP
    • 使用IGMP因特网组管理协议
    • 通过将对应的组播地址作为目标地址,即可对该组实现组播
      • 尽最大可能交付,不是可靠交付
      • 组播地址仅为目标地址
      • 不产生ICMP差错报文,因此不能PING
      • 并不是所有的D类IP地址都是组播地址
    • 数据只有在出现分岔时才会复制后继续转发
    • IGMP视为IP的一个组成部分,让组播路由器直到是否有主机出入某个组
  • 移动IP:移动结点以固定的网络IP地址实现跨越不同网段的漫游
  • 冲突域:第1层的概念,指同一介质的不同设备
  • 广播域:第2层的概念,指能够接受同一广播的结点集合
  • 路由器:由交换结构、输入端口、输出端口三部分组成
    • 分组转发:处理数据流(从比特流中抽取,从抽取数据报),执行转发表查询、队列管理、任务调度等
    • 路由计算:与其他路由器交互,完成路由表的计算和更新
    • 面向协议的,需要依靠网络地址协议、路由协议(应用层/网络层协议);而网桥与高层协议无关
    • 路由表得到转发表
      • 路由表(涉及路由计算)是不同路由器之间通过一定的路由协议/路由算法得到的
      • 转发表(涉及分组转发)是把收到的数据报转发到该路由器合适的端口中

传输层

  • 功能
    • 面向通信部分的最高层,面向用户的最底层,向高层用户屏蔽下面三层通信子网的细节,向上三层资源子网提供可靠的传输服务
    • 提供了不同主机进程间的逻辑通信,即端到端的通信(网络层提供主机之间的逻辑通信,不可靠)
    • 复用和分用
    • 差错控制(网络层仅检查数据报首部)
    • 提供两种协议(网络层无法同时实现两种协议)
  • 端口(软件端口)
    • 16bit
    • 应用进程将数据通过端口向下交付到传输层,而传输层可以通过端口向上交付给对应的进程
    • 应用层各种协议进程传输层的交互地址
    • MAC、IP地址标识主机,而端口标识主机的应用进程
  • 套接字=IP地址:端口号
    • 标识某一主机某一进程
  • UDP
    • 特点:无连接、面向报文、不可靠交付
    • 服务:仅提供复用和分用、差错检测
    • 优点:开销小(首部仅8byte)、简单、速度快、实时性好;适用于一次性传输较少数据(DNS/SNMP)、对时延敏感的多媒体应用
    • UDP报文:
      • 首部:8byte
      • 源、目标端口号、UDP长度、UDP校验和
      • 接收方收到IP数据报后,直接抽取UDP报文通过端口向上交付给对应进程,若端口号不正确,则丢弃报文,发送ICMP差错报文
      • UDP校验:发送方加入伪首部,对整个报文16bit单位段进行二进制反码求和,对结果取反作为校验和字段;接收方应得到全1的校验结果(IP数据报仅对报文首部进行校验)
  • TCP
    • 特点:面向端到端的连接、可靠/有序/无丢失/不重复、全双工、面向字节流
    • TCP报文:
      • 首部:20byte,首部长度必须为4byte的整数倍
      • 字节流中每一个字节都按顺序编号,序号字段中为报文数据的第一个字节序号
      • 窗口字段指明接收方现存的数据缓存空间
      • TCP校验同UDP校验几乎相同,都是对整个报文进行校验
      • ACK用于累计确认
      • SYN用于建立连接(SYN=1,ACK=0为建立连接报文,SYN=1,ACK=1为建立连接的答应报文)
      • FIN用于释放连接(说明发送方单方面释放连接,但可以接收数据)
    • 连接管理:
      • TCP连接的端口为套接字
      • 建立连接:三次握手
      • 释放连接:四次握手(先释放客户端到服务器端的单向连接,等待服务器把剩余数据传输完毕后,再释放另一单向连接)
    • 可靠传输:
      • 使用序号标记字节流;确认号表明已经接收到之前的结果,其值为所期望下一个报文段的数据的第一个字节的序号;累计确认的方式以确保有序
      • 超时和冗余ACK(接收到三个相同的ACK后,进行快速重传,同时可以用作拥塞控制)
    • 流量控制:
      • 和数据链路层一样,使用滑动窗口实现(区别:传输层的是端到端的流量控制,且窗口大小可以动态变化,而数据链路层是点到点的,不可动态变化)
      • 根据报文段中接收方的rwnd的大小,发送方修改发送窗口大小
    • 拥塞控制:
      • 与流量控制的区别:拥塞控制为全局性的,让当前网络能够承受现有的负荷,而流量控制是端到端的
      • 借助rwnd、cwnd(发送放估算当前网络的拥塞程度),发送窗口大小为两者的最小值
      • 维护cwnd的方法(前提是rwnd足够大,发送窗口=cwnd):
        • 慢开始和拥塞避免:低于ssthresh阈值,慢开始(从cwnd=1开始,线性增加),超过ssthresh阈值,拥塞避免(不断自增1);一旦出现超时导致的拥塞,ssthresh减半,cwnd=1,进行慢开始
        • 快重传(与可靠传输相同,遇到三个相同的ACK,快速重传)和快恢复(遇到三个相同的ACK导致的拥塞,ssthresh减半,cwnd=ssthresh,直接进行拥塞避免)
        • 超时意味着真正严重的拥塞,而冗余ACK还不至于严重的拥塞