Computer Network Review

"Hello World, Hello Blog"

Posted by Leonard Yuan on May 1, 2019

计算机网络复习

基本概念

  • 分布式系统是计算机网络发展的高级阶段
  • 计算机网络的组成
    • 硬件
      • 计算机
      • 接口设备
      • 传输介质
    • 软件
      • 通信协议
      • 应用软件
  • 主要传输技术
    • 广播式连接/传播技术
    • 点到点连接/传输技术
  • 网络分类
    • 以网络作用范围分
      • 局域网
      • 城域网
      • 广域网
    • 以网络的交换功能分
      • 电路交换
      • 报文交换
      • 分组交换
  • LAN和WAN各自的侧重点
    • WAN: 侧重于路由算法,意在找到一条最佳路径
    • LAN:冲突算法,意在处理在网络中可能出现的冲突
  • 五层协议的体系结构
    • 应用层
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  • 网卡实现了数据链路层物理层的功能
  • 在五层协议中是如何工作的
  • 在计算机网络中,协议是水平的,控制对等实体之间的通信。服务是垂直的,即下层为上层提供接口
  • 服务访问节点:同一系统相邻两层的实体进行交互的地方,称为服务访问点SAP
  • 服务分为两种:
    • 面向连接服务
    • 无连接服务

OSI参考模型和TCP/IP模型

  • OSI模型
  • OSI各层的功能
    • 物理层:利用传输介质建立物理连接,为数据链路层提供服务,传输单位是比特
    • 数据链路层:在通信实体间建立数据链路连接,传输以“帧”为单位,在里面使用差错控制和流量控制
    • 网络层:使用路由算法实现选择最佳路由,为数据在结点之间传输创建逻辑链路,实现拥塞控制和网络互联
    • 传输层:实现端到端传输,处理数据包错误和数据包次序
    • 会话层:负责维护两个结点之间的传输链接
    • 表示层:用于处理在两个通信系统中交换信息的表⽰⽅方式,数据解压缩,数据解加密,数据格式转换
    • 应用层:为应用程序提供网络服务

  • TCP/IP协议栈
    • 网络接口层:参考模型的最低层,负责通过网络发送和接收IP数据报,允许主机接入多种网络协议
    • 网络层(互联网层):相当OSI参考模型网络层无连接网络服务,处理网络路由,流控和拥塞问题,该层的IP协议是无连接的、“经历而为”的服务
    • 传输层:实现端到端连接,其中TCP是⼀一种可靠的⾯面向连接协议,⽤用户数据报协议UDP是⼀一种不可靠的⽆无连接协议
    • 应用层:文件传输协议FTP,域名系统DNS,超文本传输协议HTTP

物理层-数据通信技术

  • 时延:数据块从一端传输到另外一端的时间
  • 通信方式
    • 串行通信
    • 并行通信
  • 调制解调技术:数据进行模拟化和恢复的过程
  • 复用技术
    • 频分复用
    • 时分复用
    • 波分复用
  • 分组交换原理:先把较长的报文划分成较短的、固定长度的数据段,编号之后再发送

数据链路层

  • 数据链路层的目的:在不可靠的物理链路上实现无差错、高质量的数据传输
  • 端到端:源节点到目的节点
  • 数据链路层的功能
    • 链路管理
    • 帧同步
    • 差错控制
    • 流量控制
    • 透明传输
  • 能为网络层提供的服务
    • 无确定,无连接的服务
    • 有确定,无连接的服务
    • 有确定,有连接的服务
  • 数据链路层主要是涉及到同步问题(位同步,字符同步,帧同步)
  • 帧同步就是将原有的比特流分成若干个帧进行传输
  • 数据链路层中的差错控制的方式
    • 反馈纠错,能发现错误,不知道错的位置
    • 前向纠错
    • 混合纠错
  • 使用编码方式来实现纠错检错,海明码,奇偶校验码,循环冗余编码
  • 数据链路层协议(用于检错纠错和流量控制)
    • 停等协议
      • 简单停等协议
      • 实用的停等协议(确定帧ACK,否定帧NAK,同时设置超时计时器)
    • 滑动窗口协议(可进行双向传输)
    • 使用回退N帧技术的协议(只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动)
    • 选择重传协议
  • HDLC协议,主要有三种帧:信息帧、监控帧、无序号帧
  • 因特网的点对点协议(PPP),最常用的

介质访问控制子层MAC

  • 是解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题,属于数据链路层中的一个子层
  • 多路随机访问协议
    • ALOHA协议(纯ALOHA和时隙/分槽ALOHA)
    • 载波监听多路访问协议(监听信道中的载波)
    • 无冲突协议
      • 基本位图协议
      • 二进制下数法
  • 以太网技术(一种局域网技术)
  • CSMA/CD载波监听多路访问/冲突检测方法 CSMA/CA载波监听多路访问/冲突避免
  • 以太网MAC层协议
  • 在局域⽹中,硬件地址⼜又称为物理地址, 或MAC地址,48bit,以太网规定了最短有效帧长为64字节
  • 数据链路层交换(互联)
    • 网桥工作在数据链路层,网桥根据MAC帧的目的地址对收到的帧进行转发,确定是从哪个端口转发
  • 虚拟局域网能够使地理位置超越物理结构

网络层

  • 网络层目的:将分组从源端沿着网络路径送到目标端
  • 网络层解决的问题
    • 路由选择
    • 拥塞控制
    • 网络互联
  • 网络层既可以提供无连接服务(数据报),也可以提供面向连接服务(虚电路)
  • 路由算法,分为非自适应算法和自适应算法
    • 最短路径路由算法,静态路由算法,Dijkstra
    • 扩散算法
    • 动态路由算法
      • 距离⽮矢量路由算法:通过相邻节点的距离信息,间接算出自己的路由表信息。 路由信息向全网发送
      • 链路状态路由算法:仅在邻居节点之间交换。收敛时间不定
  • 网络拥塞控制
    • 拥塞控制
      • 向源端反馈信息
        • 警告位
        • 抑制分组
        • 逐级跳抑制分组(对经过的每一级路由器都产生作用)
      • 负载丢弃
      • 抖动控制
    • 流量控制
  • 网络互联:对等层不同协议的网络互联
  • 分段:在不同网络中进行传输的时候,因为不同网络最大分组长度不同,需要重新分段并传输,分为透明分段和不透明分段
  • 网络层和数据链路层的区别
    • 网络层是将源端发出的分组通过各种途径最终送到目的端
    • 数据链路层是将数据帧从介质的一端送到另外一端
    • 网络层是处理端到端数据传输的最低层

Internet上的网络层

  • IP协议中几种重要的协议
    • 地址解析协议ARP
      • 每个电脑中都有ARP高速缓存,里面有主机和路由器地址到硬件地址的映射表
      • 当主机A欲向本局域网上的某个主机B发送IP数 据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址, 再将此硬件地址写入 MAC 帧,然后通过局域网将该MAC帧发往此硬件地址(实际上就是映射MAC地址)
      • 如果在缓存中没有,那就进行全网广播,收到数据报之后就知道MAC地址是多少了,然后就可以构建MAC帧了
    • 因特网控制报文协议ICMP
    • 因特网组管理协议IGMP
  • IP地址:Internet中网络层使用的地址,是基于位置的地址,与MAC地址的基于设备特性不同,IP地址即可以标记设备,也可以标记网络
  • IP地址可以分为两级:网络号+主机号
  • 特殊IP地址:
    • 全0地址:本主机地址
    • 全1地址:全网所有路由器广播
    • 主机部分全0:网络地址
    • 主机部分全1:本网全路由器广播
    • 127开头:环回地址
  • 地址解析协议ARP:主机中进行IP地址映射的
  • 划分子网:使用子网掩码(subnet mask)可以很方便地找出IP地址中的子网部分
    • 就是映射表中含有目的网络地址和子网掩码,通过与操作来判断是否是这个网络地址下的
  • CIDR地址划分的方法,使用最长前缀匹配来获取网络信息
  • 一个IP数据分组由首部和数据两部分组成,首部是20字节
  • 因特网控制报文协议ICMP,用于报告差错和控制异常
  • PING使用了ICMP回送请求与回送回答报文,是应用层直接使用网络层ICMP的例子,它没有通过运输层的 TCP或UDP
  • OSPF:属于内部网关路由协议
  • BGP是不同自治系统的路由器之间交换路由信息的协议
  • IPV6首部长度40字节,地址128位,使用扩展首部来实现IPV4中的部分功能
  • 动态分配IP协议:DHCP协议,相当于如果一个主机接入到网络中发现自己没有IP地址,那么就需要以某端口为基准,用广播的形式来传输信息以发现可用的IP地址。DHCP服务器收到消息以后,会以广播的形式将ip地址回复给主机,然后主机可以选择来自不同 DHCP服务器的某一个IP,然后做确认处理
  • DHCP协议的运行过程:DHCP协议的运行过程
  • 拥塞控制策略

传输层(主要是TCP/UDP)

  • 传输层:实现端到端之间的数据传输
  • 传输层与网络层的区别:传输层提供应用进程间的逻辑通信
  • 端口:用于区别应用层的不同进程,16bit
  • 在网络中,每个应用程序是端到端通信连接的端点,使用socket,或套接字、套接口标识,套接字就是socket
  • TCP/IP协议中提供两种传输层协议
    • 用户数据报协议UDP–无连接服务
    • 传输控制协议TCP–面向连接的服务
  • 套接字中,传输用户(应用程序)通过传输服务原语访问传输服务 在套接字中,server和client采用面向连接的方式完成数据访问

TCP协议

  • TCP的服务
    • 面向连接的服务
    • 完全可靠(无丢失,无重复,无乱序)
    • 可靠的连接建立和连接释放
  • TCP的握手和挥手过程
  • TCP报头中,同时含有发送序号和确认号(为提高效率可以使用捎带确认和累积确认的技术)
  • 每一个TCP报头中是有一个数据偏移的,可以用于确认报文的位置
  • TCP的三次握手
    • 基本原理图(左图是正常的三次握手的过程,右图是出现了呼叫冲突的情况)
    • 三次握手方案解决了由于网络层会丢失、存储和重复包带来的问题
  • TCP的四次挥手
    • 基本原理图
  • TCP的拥塞控制
    • 缓冲区管理:由于IP协议是无连接的,所以不可靠。传输层实体必须缓存发出的信息,以方便在错误的情况下重传
    • 在TCP协议中,可采用可变滑动窗口协议来实现流量控制
  • TCP的传输策略
    • 基于确认和可变窗口大小
    • 窗口大小为0时,正常情况下,发送方不 能再发送TCP段
  • 拥塞一般发生在路由器上,网络层感知拥塞,但是控制介入的唯一方式却是传输层放缓发送速度
  • 流量控制和拥塞控制的差别
    • 拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能承受现有的网络负荷
    • 流量控制往往指的是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接受
  • TCP的拥塞控制机制。进行拥塞控制的四种算法,即慢开始(Slow-start),拥塞避免(Congestion Avoidance)快重传(Fast Restrangsmit)和快恢复(Fast Recovery)
    • 慢启动算法,就是不断试探窗口的最佳阈值,是一种拥塞避免算法(试探知道出现丢包的情况)
    • 快重传与快恢复
      • 在执行过程中,如果出现了次序不对的情况,则表示发生了拥塞和丢包,那就通过连续发送相同ACK的方式。发送端只要收到三个相同ACK,则表示该数据报丢失了,立即重传数据报,不必等待超时重传
  • 相关链接: 拥塞控制的相关讲解
  • TCP的三次握手的解读
  • TIME_WAIT状态的讲解
  • TIME_WAIT的讲解
  • TIME_WAIT存在的原因
    • 可靠的终止TCP连接
    • 保证让迟来的TCP报文段有足够的时间被识别并丢弃
  • TIME_WAIT存在的意义
    • 可靠的终止TCP连接,若处于TIME_WAIT的client发送给server确认报文段丢失的话,server将在此又一次发送FIN报文段,那么client必须处于一个可接收的状态就是TIME_WAIT而不是close状态
    • 保证迟来的TCP报文段有足够的时间被识别并丢弃,linux中一个TCPport不能打开两次或两次以上。当client处于TIME_WAIT状态时我们将无法使用此port建立新连接,假设不存在TIME__WAIT状态,新连接可能会收到旧连接的数据