计算机网络
- 考一下研
计算机网络
Cp0 简介
- 计算机网络组成:硬件、软件、协议
1.1 分类
- 广域网(WAN)、城域网(MAN)、局域网(LAN)、个域网(PAN)
- MAN和LAN是以太网技术
1.2 性能指标
- 速率:即数据率/数据传输率/比特率
- 连接在计算机网络上的主机在数字信道上传输数据位数的速率
- 带宽:表示网络中单位时间从网络某一点到另一点所能通过的“最高数据率”单位和速率一样
吞吐量:单位时间通过某个网络的数据量
时延:指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需的时间。
- 发送时延:数据长度/信道带宽
- 传播时延:取决于电磁波传播速度和链路长度
- 排队时延
- 处理时延
时延带宽积:传播时延 * 带宽
往返RTT:从发送方发送数据开始,到发送方收到接收方的确认总共经历的时延
- RTT越大,在收到确认前,可以发送的数据越多
利用率:信道利用率和网络利用率
1.3 分层结构
实体、接口(上层使用下层服务的入口)、服务(下层对上层)、协议(对等实体数据交换建立的规则)
7层ISO/OSI分层参考模型
应用层:FTP、SMTP、HTTP
表示层:数据格式变换、加密等
会话层:向表示层实体/用户进程提供建立连接并在连接上有序地传输数据,建立同步(SYN)
传输层:负责两个进程的通信,端到端。传输单位是报文段/用户数据报 TCP、UDP
- 可靠传输、不可靠传输、
- 差错控制
- 流量控制
- 复用分用
网络层:把分组从源端传到目的端,传输单位是数据报
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制
数据链路层:将网络层传下来的数据报组装成帧,传输单位是帧
- 成帧
- 差错控制
- 流量控制
- 访问(接入)控制
物理层:在物理媒体上实现比特流的透明传输:100010101…转为电磁波信号
- 定义接口特性
- 定义传输模式(单工、半双工、双工)
- 定义传输速率
- 比特同步
4层TCP/IP参考模型
- 应用层:HTTP、FTP、DNS
- 传输层:TCP、UDP
- 网际层:IP
- 网络接口层:
5层参考模型
- 应用层:支持各种网络应用、
- FTP、SMTP、HTTP
- 传输层:进程-进程的数据传输
- TCP、UDP
- 网络层:源主机到目的主机的数据分组路由与转发
- IP、ICMP、OSPF
- 数据链路层:将网络层传下来的数据报组装成帧
- Ethernet、PPP
- 物理层:比特传输
- 应用层:支持各种网络应用、
TCP/IP 协议栈
Cp1 物理层
1.1 概述
- 解决如何在连接各种计算机的传输媒体上传输数据比特流
- 主要任务:确定传输媒体接口相关特性(定义标准)
- 数据通信三个问题
- 单工/半双工/全双工:信道的数量不同
- 串行传输/并行传输:表示一个字符的8位二进制用一条信道发送还是多条信道
- 串行适合远距离
- 同步/异步传输
- 同步以数据区块位单位传输,需要一个SYN同步字符
- 异步传输要加字符起始位和字符终止位
- 码元:指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,1码元可以携带多个比特的信号量
- 二进制1码元携带1个比特,4进制携带2个,16进制携带4个
- 速率:指数据传输速率
- 码元传输速率
- 信息传输速率
1.2 编码与调制
信道:信号的传输媒介,用来表示向某个方向传送信息的介质(发送信道/接收信道)
信道上传送的信号
- 基带信号
- 宽带信号
编码:数据 ==> 数字信号
- 非归零编码、反向不归零编码、曼彻斯特编码、差分曼彻斯特编码
- 调制:数据 ==> 模型信号
1.3 数据交换方式
电路交换:适合低频次、大量的传输
优点:
- 传输时延小,实时性强
- 全双工
缺点:
- 建立/释放需要时间
- 线路被通信双方独占,利用率低
- 线路分配灵活性差
- 不能检查数据
报文交换:由发送方、接收方及数据组成,称为报文,传输过程采用存储转发方式
- 优点:
- 通信前无需建立连接
- 数据以报文为单位被交换节点存储转发,通信线路可灵活分配
- 用户无需独占一条线路,线路利用率高
- 交换节点支持差错控制
- 缺点
- 报文不定长,不方便存储转发
- 长报文存储转发时间开销大,存储开销大
- 长报文容易出错,重传代价高
- 优点:
分组交换:将一个长报文切开分成多份(packet),并添加头信息(源、目的地址 )及分组号
- 分组交换机:路由器
- 缺点:相对于初始报文,控制信息占比增加
- 虚电路交换技术:结合了数据包和电路交换方式
1.3 传输介质/设备
传输介质:导向传输介质/非导向传输介质
导向传输介质
- 双绞线
- 同轴电缆
- 光纤:很多光纤捆一起 ==> 光缆
- 非导向传输介质
- 无线电波:信号向所有方向传播
- 微波:信号固定方向传播
- 地面微波接力通信
- 卫星通信
- 红外线、激光:固定方向
- 物理层设备:中继器/集线器
- 中继器:对信号进行再生和还原,对衰减信号放大(点对点)
- 集线器:对信号进行再生方法转发,对衰减信号放大(广播)
Cp2 数据链路层
1 | graph LR |
2.0 概述
- 定义与作用:在物理层上提供服务的基础上向网络层提供服务,主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路
功能
- 为网络层提供服务:无确认无连接服务、有确认无连接服务、有确认有连接服务
- 链路管理
- 组帧
- 流量控制
- 差错控制(帧错、位错)
结点:主机、路由器
- 链路:网络中两个结点之间的物理通道
- 数据链路:两个结点之间的逻辑通道
- 帧:链路层的协议数据单元,封装网络层数据报
2.1 封装成帧和透明传输
- 封装成帧:在一段数据的前后部分添加首部和尾部,构成一个帧
帧同步:接收方从接收到的二进制比特流中区分处帧的起始和终止
透明传输:指不管所传数据是什么样的比特组合,都应该能在链路上传输
组帧的方法
字符计数法:帧首部使用一个计数字段表明帧长度
字符填充法:为了防止数据开始和结束字符被错误的判断
零比特填充法
- 在发送端,只要连续5个1就立即填充1个0
- 接收的时候发现连续5个1就删除1个0
- 违规编码法
2.2 差错控制
- 产生原因:
- 全局性:本身的电气特性,信道固有的,随机存在的。解决:提高信噪比
- 局部性:外界特定的短暂原因所造成的冲击噪声。解决:利用编码技术
- 分类:
- 位错:1变成0,0变成1
- 帧错:发送 #[1]#[2]#[3]
- 丢失:收到 #[1]#[3]
- 重复:收到 #[1]#[2]#[2]#[3]
- 失序:收到 #[3]#[1]#[2]
- 奇偶校验码:前n-1位1的个数是奇数还是偶数个
CRC循环冗余码:除以一个数,看余数是否相同
- 将数据分组
- 每个组的后面都加上冗余码
纠错编码:海明码
- 确定校验码位数r
- 确定校验码和数据的位置
- 求出校验码的值
- 检查并纠错
2.3 流量控制、可靠传输
流量控制方法:
停止-等待协议(发送窗口大小 = 接收窗口大小 = 1)
发送数据后等待接收方的ACK包后再继续发送
滑动窗口协议
- 后退N帧协议(发送窗口大小 > 1 接收窗口大小 = 1)GBN协议
- 选择重传协议(发送窗口大小 > 1 接收窗口大小 > 1)SR协议
GBN协议
- 发送窗口组成:发完被确认、已经发送待确认、还能发送、还不能发送
- 发送方响应的三件事
- 上层调用:上层要发送数据,发送方先检查发送窗口是否满,满了的话就返回数据给上层,暗示窗口已满,上层会等一会再发送
- 确认方式:对n好帧的确认采用累计确认,表明接收方收到n号帧及之前的全部帧
- 超时事件
- 接收方要做的事:
- 正确收到了n号帧,并且按序,则为n帧发送一个ACK,表示前n号帧都接收完毕
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送一个ACK,表明下一个需要接收的帧
- 收到245号帧,则ACK响应2,并丢第45号帧
选择重传协议:
发送方窗口:发完确认、发完等待确认、还能发送、还不能发送
接收方窗口:希望收到但未收到、收到确认的、等待接收
发送方:
- 上层调用:类似GBN
- 收到了一个ACK后:加入帧序号在窗口中,则SR发送方标记那个帧未已接收,如果是窗口的下界,则移动窗口到当前最小未被确认的地方,然后发送新的窗口未确认的帧
- 超时事件:超时后重传一个帧
接收方:
- 不按序,失序的帧被缓存,并发送给发送方一个确认帧,知道所有帧被接收,将这一批帧返回给上层,然后移动窗口
发送窗口最好等于接收窗口
2.4 两种链路/信道
点对点链路:PPP协议,常用于广域网
广播式链路:早期的总线以太网、无线局域网,常用于局域网
介质访问控制:采取一定的措施,使得两队节点之间的通信不会发生互相干扰的情况
静态划分信道:信道划分介质访问控制
- 频分多路复用 FDM:一个用户占一个频段
- 时分多路复用 TDM:交替使用
- 波分多路复用 WDM
- 码分多路复用 CDM
动态划分信道
- 轮询访问介质访问控制:令牌传递协议
- 令牌:一个特殊格式的MAC控制帧,不含任何信息
- 问题:
- 令牌开销
- 等待延迟
- 单点故障
- 随机访问介质访问控制
- ALOHA协议:(不听就说)
- 纯ALOHA协议:不监听信道,不按时间槽发送,随机发送(吞吐量低,效率更低)
- 时隙ALOHA协议:时间分为时间片,只能在时间片开始的时候发送
- CSMA协议:(先听再说)在发送数据之前先检测一些总线上是否有其他计算机在发送数据,信道空闲就发送,信道忙就推迟发送
- CS:载波监听
- MA:多点接入
- CSMA/CD协议:用于总线以太网(有线)
- CD:冲突检测(边发送边监听)
- CSMA/CA协议:用于无线局域网
- CA:碰撞避免
- ALOHA协议:(不听就说)
- 轮询访问介质访问控制:令牌传递协议
2.5 局域网 LAN
决定局域网的要素:
- 网络拓扑:星型、总线型、环形、树型
- 传输介质:有线(双绞线、同轴电缆、光纤),无线(电磁波)
- 介质访问控制方法:CSMA/CD、令牌总线、令牌环
分类
- 以太网:最广泛,使用CSMA/CD
- 令牌环网:明日黄花
- FDDI网:
- ATM网
- 无线局域网(WLAN)
以太网:是多个公司联合开发的基带总线局域网规范
速率(10Mb/s~10Gb/s)、便宜、简单
无连接:无握手过程
- 不可靠:不可对发送方的数据帧编号,接收方不想发送方确认,差错帧直接丢弃,纠错由高层负责
传输介质发展:粗同轴电缆、细同轴电缆、双绞线+集线器
适配器与MAC地址:48位二进制地址,前24未由IEEE规定(代表厂家)、后24位由厂家指定
- 以太网MAC帧:目前最常用是以太网V2格式
无线局域网
- IEEE 802.11是无线局域网通用的标准(WIFI)
VLAN
- 传统局域网局限
- 缺乏流量隔离
- 管理用户不便
- 路由器成本高
- VLAN:虚拟局域网,将局域网内的设备划分成与物理位置无关的逻辑组的技术,每个VLAN是一个单独的广播域/不同的子网
- VLAN实现:路由器和三层交换机
- VLAN表(绑定端口或者MAC地址)
- 传统局域网局限
2.6 广域网 WAN
- 通信子网主要使用分组交换技术,如Internet
- PPP协议
- 简单:对于链路层的帧,无需纠错,无需序号,无需流量控制
- 封装成帧:帧定界符
- 透明传输
- 多种网络层学医
- 多种类型链路
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
2.7 链路层设备
网桥&交换机
网桥根据MAC帧的目的地址对帧进行过滤、转发。(收到一个帧时,不向所有的接口转发此帧,而是先检查此帧的目的MAC地址,再转发到对应接口)
分类
- 透明网桥:”透明“指以太网上的站点并不知道所发送的帧将经过哪几个网桥(动态更新一个转发表,记录MAC地址和网桥接口的对应关系)
- 源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧首部,
Cp3 网络层
1 | graph LR |
功能
- 路由选择与分组转发
异构网络互联
拥塞控制
3.1 路由算法
- 路由表/转发表:目的网络IP地址、子网掩码、下一IP地址、接口
- 分类
- 静态:手动配置
- 动态:
3.2 IP数据报
组成
- 首部:分为固定部分(20字节或160位)和可变部分
- 数据部分(TCP/UDP段)
首部
版本(4bit):IPv4或者IPv6
首部长度(4bit):至少是20Byte(固定部分就20B),所以是0101-1111
区分服务(8bit):期望获得哪种类型服务
总长度(16bit):首部+数据大小,因为有16bit,所以上限是2^16-1=26635Byte,实际不会这么大,会分片
标识(16bit):同一个数据报分片使用同一标识
标志(3bit):只有2bit有意义
- 中间位DF=1 禁止分片;DF=0 允许分片
- 最低位MF=1 后面还有分片 MF=0 最后一片
片偏移(13bit):改分片在原来数据报的位置
生存时间TTL(8bit):每经过一个路由器就减1,变0就丢弃
协议(4bit):数据部分使用的协议
首部检验和(8bit):只检验首部
- 源地址、目的地址(32bit):IPv4/IPv6地址
- 填充字段:大小不固定,全是0,让首部大小为4整数倍
3.3 IPv4地址
- 32位/4字节,标识路由器主机的接口
网络号+主机号
分类的IP地址
IPv6
- CIDR NAT治标不治本
- 十六进制
3.4 网络地址转换NAT
- 在专用网连接到英特网上的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址
3.5 子网划分
- 子网掩码:网络号全为1,主机号全为0
- eg:IP地址是141.14.72.24 子网掩码是255.255.192.0,则网络地址是:141.14.64.0
- 192对应11000000,72对应01001000,所以网络地址第三部分是01000000,也就是64
3.5 无分类编制CIDR
- IP地址后加上
/
,然后写上网络前缀(任意长度)。如128.14.32.0/20(前20位是网络位)
3.6 协议
ARP协议:由IP地址获取MAC地址
- ARP高速缓存:IP地址和MAC地址的映射
- 过程:
- 检查ARP高速缓存,有则写入MAC帧
- 没有则用目的MAC地址位FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求
- 同一局域网所有主机收到请求,目的主机会给源主机单播一个ARP响应分组
- 源主机收到后写入ARP高速缓
ARP协议四种典型情况
- 主机A ==> 本网络上主机B:用ARP找到主机B的MAC地址
- 主机A ==> 另一网络上主机B:用ARP找到本网络上一个路由器(网关)的MAC地址
- 路由器 ==> 本网络上主机A:用ARP找到主机A的MAC地址
- 路由器 ==> 另一个网络上的主机B:用ARP找到本网络上一个路由器(网关)的MAC地址
例子:主机A发送IP数据报给主机B,经过了5个路由器,这个过程使用了6次ARP协议
DHCP协议:解决主机获取IP地址的问题
- dhcp协议是应用层协议,基于UDP
- 主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用
- 过程
- 主机广播DHCP发现报文(有没有DHCP服务器)
- DHCP服务器广播DHCP提供报文(有)
- 主机广播DHCP请求报文(我用了你给我的IP地址了)
- DHCP服务器广播DHCP确认报文(好的)
ICMP协议:差错报告
- ICMP报文:在IP数据报的数据部分
- ICMP报文类型
- ICMP差错报文:终点不可达、源点抑制、时间超过、参数问题、改变路由
- 例子
- PING
- Traceroute:跟踪一个分组从源点到终点
路由选择协议
- 内部网关协议:RIP、OSPF
- 外部网关协议:BGP
3.7 IP组播
- 单播:点对点
- 广播:点对多
组播:给特定组的用户发送数据,也是点对多
IP组播地址:让源设备能够发送给一组设备(一群共同需求主机的相同标识)
- 224.0.0.0~239.255.255.255(D类地址)
- 特点
- 用的UDP
- 对组播数据包不产生ICMP差错报文
- 并非所有D类地址都可以作为组播地址
- 硬件组播:MAC地址
- IGMP协议和组播路由选择协议
3.8 网络层设备
路由器:具有多个输入输出端口的专用计算机,任务是分组转发
- 路由选择:根据所顶的路由选择协议构造路由表,并动态更新维护
- 分组转发:根据转发表对分组进行转发
- 路由器输入端口处理
输出端口处理
三层设备区别
- 路由器:可以互联不同网络层的网段
- 网桥:可以互联物理层和数据链路层的不同网段
- 集线器:不能互联物理层的不同网段
Cp4 传输层
1 | graph LR |
4.1 概述
只有主机才有的层次,为应用层提供服务,使用网络层的服务
功能
- 提供进程和进程之间的逻辑通信
- 复用和分用
复用:应用层所有的应用进程都可以通过传输层再传输到网络层
分用:传输层从网络层收到数据后交付指明的应用进程
端口号:长度为16bit,范围0~65536
服务端使用
熟知端口号,给TCP/IP最重要的一些应用程序,让所有用户都知道。0~1023
登记端口号,1024~49151
客户端使用:49152~65536
套接字:主机号+端口
两个协议:UDP和TCP
4.2 UDP
在IP数据服务上增加了复用分用和差错检测的功能
特点
无连接
连接不可靠
面向报文,适合一次性传输少量数据的网络应用(应用层给多长的报文,UDP就照样发送)
UDP无拥塞控制,适合实时应用
首部开销小,8Byte
UDP首部:共8Byte
- 16bit源端口号 + 16bit源目的号 + 16bitUDP长度 + 16bit校验和
4.3 TCP
特点
面向连接
点对点
连接可靠
提供全双工通信(发送缓存、接收缓存)
面向字节流
TCP首部:20Byte
- 序号(sequence number):标识本报文段所发送数据的第一个字节的序号
- 确认号(acknowledgement number):期望收到对方下一个报文段的第一个数据字节序号,只有ACK为1的时候才生效
- 数据偏移:TCP报文段数据起始举例TCP报文段起始有多远
- 6个控制位
- URG:紧急位,=1时可以插队
- ACK:确认位,连接后置为1
- PSH:推送位,=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付
- RST:复位,=1时,表明TCP连接中出现严重差错,必须释放连接再重新建立连接
- SYN:同步位,=1时表明是一个连接请求/连接接收报文
- FIN:终止位,=1时候表明此报文发送方数据已发送完,要求释放连接
- 窗口:发送方发送窗口的大小,用来给接收方来调整接收窗口大小
TCP连接管理
- 建立连接
- 客户端发送连接请求报文段,无应用层数据
- SYN=1,seq=x,seq是序号
- 服务端为改TCP连接分配缓存和变量,并给客户端返回确认报文,无应用层数据
- SYN=1,ACK=1,seq=y,ack=x+1,ack是确认号
- 客户端为该TCP连接分配缓存和变量,并给客户端发送确认,可以携带数据
- SYN=0,ACK=1,seq=x+1,ack=y+1
- 客户端发送连接请求报文段,无应用层数据
- 数据传送
- 连接释放
- 客户端发送连接释放报文段
- FIN=1,seq=u
- 服务器回送一个确认报文段,客户端==>服务器方向连接释放,半关闭状态
- ACK=1,seq=v,ack=u+1
- 服务器发送完数据,发出连接释放报文段
- FIN=1,ACK=1,seq=w,ack=u+1
- 客户端回送一个确认报文段,再等待时间计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭
- ACK=1,seq=u+1,ack=w+1
- 客户端发送连接释放报文段
- 建立连接
SYN洪泛攻击
TCP可靠传输
- 校验:与UDP一样,增加伪首部
- 序号:一个报文段第一个字节的序号
- 确认:累计确认机制
- 重传:超时重传
- TCP流量控制
- 滑动窗口,通过设置报文段中的窗口字段来实现动态控制
- TCP拥塞控制
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
Cp5 网络层
1 | graph LR |
- 应用层:对应用程序的通信提供服务
- 应用程序交换的报文类型:请求or响应
- 报文的用法,如报文中各个字段的详细描述
- 字段的语义
- 进程何时及如何发送报文,以及如何响应报文
- 功能
- 文件传输、访问和管理:FTP
- 电子邮件:SMTP、POP3
- 虚拟终端 :HTTP
- 查询服务和远程作业登录:DNS
5.1 网络应用模型
C/S模型
- 服务器:提供服务
- 永久提供服务
- 永久性的访问地址/域名
- 客户端:请求计算服务的主机
- 与服务器通信
- 间歇性接入网络
- 可能是动态IP地址
- 不与其他客户机直接通信
- 服务器:提供服务
P2P模型:没有服务器
每个主机既可以提供服务,也可以请求服务
节点可能动态IP
- 网络健壮性好
5.2 DNS系统
- 域名到IP地址的转换
- 域名:n级别域名.n-1级域名….二级域名.顶级域名
- 顶级域名:com cn org gov等
- 二级域名:com edu gov等
- 域名解析过程
- 递归查询:一步一步向上查询(A查B,B查不到然后B去查C)
- 迭代查询:A查B,B查不到返回一个上层服务器地址C,A再去查C
- 高速缓存
5.3 文件传输协议
- FTP:提供不同类型的主机之间的文件传输,基于C/S的协议
- FTP工作原理
- 使用TCP实现可靠传输
- 控制连接,数据连接
5.4 电子邮件
- 信封
- 内容
- 组成结构
- 用户代理:电子邮件客户端软件(与邮件服务器SMTP,TCP连接)
- 邮件服务器:发送方邮件服务器(与邮件服务器SMTP,TCP连接)
- 邮件服务器:接收方邮件服务器(与邮件服务器POP3,TCP连接)
- 用户代理:收件人用户代理
- 协议:
- 发送使用SMTP
- 接收使用POP3
- SMTP协议
- 规定了两个相互通信的SMTP进程之间如何交换信息
- 基于TCP连接,端口号25
- MIME协议:对SMTP的扩充,使之可以满足音频、图像、视频等传输
- POP3协议
- 基于TCP连接,端口号110
- IMAP协议
- 比POP协议复杂
5.5 万维网和HTTP
URL一般形式:
协议://主机:端口/路径
HTTP
- 建立TCP连接
- HTTP请求报文
- HTTP响应报文
- 释放TCP连接
- 用户输入URL过程
- 浏览器分析URL
- 浏览器向DNS请求解析IP地址
- DNS解析处IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发出取文件命令
- 服务器响应
- 释放TCP连接
- 浏览器显示
HTTP特点
- 无状态
- 无连接(TCP是传输层的连接)
HTTP报文结构:因为是面向文本的,所以报文中每个字段都是一些ASCII码串