计算机网络复习
基本概念
- 分布式系统是计算机网络发展的高级阶段
- 计算机网络的组成
- 硬件
- 计算机
- 接口设备
- 传输介质
- 软件
- 通信协议
- 应用软件
- 硬件
- 主要传输技术
- 广播式连接/传播技术
- 点到点连接/传输技术
- 网络分类
- 以网络作用范围分
- 局域网
- 城域网
- 广域网
- 以网络的交换功能分
- 电路交换
- 报文交换
- 分组交换
- 以网络作用范围分
- 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
- 地址解析协议ARP
- 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的四次挥手
- 基本原理图
- 基本原理图
- 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状态,新连接可能会收到旧连接的数据