计算机网络¶
学习的是湖科大-网络微课堂 开始:4/23 完成:5/13 看完回头再看看体系结构,看看是不是会有更深的理解?
0.0 基础概念¶
三种交换方式:
- 报文交换
- 分组交换
-
电路交换
-
数据传播速率(比特率):单位b/s-kb/s-Mb/s 。换算率是:1000
这个Mb/s 就是生活中说的 多少兆 的网速
需要和数据量单位区分,KB=2**10B
,而速率是kb/s=10**3 b/s
。这个 1B=8b
- 带宽:
- 模拟信号中:信号频率的范围,单位Hz
- 网络中:通信线路传输数据的能力,单位是b/s-kb/s-Mb/s。
比如我家出口带宽为200兆比特每秒(200Mb/s)
-
时延:
- 发送时延=分组长度(b)/发送速率(b/s)
- 传播时延=信道长度/电磁波传播速率(光纤、铜线、自由空间)
- 处理时延
-
时延带宽积
- =发送时延 * 带宽
0.1 计算机网络体系结构¶
法律标准:OSI (7 应用层-6 表示层-5 会话层-4 运输层-3 网络层-2 数据链路层-1 物理层)
ISO/OSI参考模型:
- 7 应用层:为应用程序提供访问网络的功能
- 6 表示层:数据表示
- 5 会话层:主机间会话管理
- 4 传输层:端到端数据传输(段)
- 3 网络层:定址和寻址(分组)
- 2 数据链路层:介质访问(帧)
- 1 物理层:比特传输(比特)
- (糟糕的时间、糟糕的技术、糟糕的实现、糟糕的策略)
国际标准:TCP/IP (4应用层-3运输层-2网际层-1网络接口层)
TCP/IP参考模型:
- 应用层(Application Layer)
- 提供各种Internet管理和应用服务
- 传输层(Transport Layer)
- 提供端到端的数据传输服务
- 网际层/IP层(Internet Layer)
- 控制通信子网提供源点到目的点的分组传送
- 主机至网络层(Host-to-Network/Network Interface)
- 物理层(Physical Layer)
- 数据链路层(Data Link Layer)
- TCP/IP协议没有进行明确规定
综合OSI和TCP/IP体系结构形成 **原理体系结构5层:
- 1 物理层:解决使用何种信号来传输比特的问题
- 2 数据链路层:解决分组在一个网络上传输的问题
- 3 网络层:解决分组在多个网络上传输的问题
- 4 运输层:解决进程之间基于网络的通信问题,端到端
- 5 应用层:解决应用进程的交互来实现特定网络应用的问题
- 实体:任何接收或发送消息的硬件或者软件进程
- 协议:控制两个对等实体进行逻辑通信的 规则 的集合(水平的)
- 服务:两个对等实体使本层能够向上一层提供 服务(垂直的)
TCP/IP 各层所包含的典型协议
1 物理层¶
需要的解决问题:
解决在各种传输媒体上传输比特0、1的问题,进而给数据链路层提供 服务。
物理层的工作流:
数据通过物理层将数字信号 通过调制 转换成模拟电信号来进行传输。数字信号调制通常使用正交振幅调制(QAM)或相移键控(PSK)技术,这些技术可以将数字信号转换成可传输的模拟信号。
传输媒体:
- 导引型
- 同轴电缆、双绞线、光纤、电力线
- 非导引型
- 无线电波、微波、红外线、可见光(
2*10**8 m/s
)
- 无线电波、微波、红外线、可见光(
码元:一段基本波形表示0、1
编码和调制:
- 数字/模拟信号 可以通过 编码 后在数字信道中传输
- 通过 调制 可以在模拟信道中传输
传输媒体和信道:一个传输媒体可以包含一个或者多个 发送信道/传输信道
为什么本来就是数字信号了,还要编码?
解决传输过程中出现的失真等问题
常用编码:
- 不归零编码NRZ(存在同步问题)
- 归零编码RZ(自带同步,但效率低)
- 曼彻斯特编码
- 一个码元的中间时刻的跳变,既表示时钟,又表示数据
- 差分曼彻斯特编码(比曼彻斯特 效率更高)
基本调制方法:
- 调幅AM
- 调频FM
- 调相PM
码元传输速率: 又称波特率,单位是 码元/秒
波特率( 码元/秒)和比特率(b/s)之间的关系:
数据传播速率 又称 比特率
- 当1个码元只携带1比特的信息量,则波特率和比特率在数值是相同的
- 当1个码元携带n比特的信息量,则波特率 转换成比特率的时候要 乘n
信道的极限容量: (提高 信号传播速率 的影响因素)
- 奈氏准则
- 码元传输速度
- 各种调制技术,多元制,即让每一个码元携带更多个比特
- 香农公式
- 信道带宽(Hz)
- 信噪比
2 数据链路层¶
前置:在物理层的基础上,各设备已经达成了互连。在学习数据链路层时候可以想象成,数据包在数据链路层 沿水平方向从左向右 传输。
链路、数据链路、帧:
- 链路:一个结点到另外一个结点的一段 物理线路
- 数据链路:把实现通讯协议的硬件和软件加到链路上,就构成了数据链路
- 帧:是数据链路 传输和处理数据的 单位
三个重要问题:封装成帧、差错检测、可靠传输
主机具有5个层次,而路由器只需具有3个层次
封装成帧:将上层交付的协议数据单元(PDU)添加帧头、帧尾,进行帧定界
透明传输:数据链路层对上层传输的数据没有任何要求。而是通过自己的方法,避免数据中被误读 帧定界 标志
- 面向字节 的物理链路使用字节填充(插入转移字符)方式
- 面向比特 的物理链路使用比特填充(零比特填充法)方式
比特差错:在传输过程中,1可能变成0,0变成1
差错检测技术:循环冗余校验CRC:
- 构造被除数
- 构造除数
- 做 “除法”异或计算
- 检查余数(余数位数和多项式最高次数相同,不够则在前面补0凑足位数)
- 最后将余数添加到待发送数的后面,就是最后发送的信息
CRC判断误码:
- 接收到的信息就是被除数
- 构造除数
- 做 “除法”异或计算
- 检查余数
- 余数为0,则无误码
- 余数不为0,则误码
检错码的缺点:不能定位错误,从而不能纠错
可靠传输:发送端发送什么,接收端就收到什么
传输差错:分组丢失、分组失序、分组重复
信道利用率=数据帧发送时延/(数据帧发送时延+端到端往返时延RTT)
可靠传输的实现机制:
- 停止-等待协议SW(Stop-and-Wait):信道利用率低
- 回退N帧协议GBN:发送窗口-接收窗口的滑动
- 选择重传SR(select Request):GBN的优化
点对点协议PPP的三部分:
- 封装成帧
- 链路控制协议LCP(对物理层,建立配置测试数据链路连接)
- 一套网络控制协议NCPs(对网络层,每一个协议支持不同的网络层协议
帧的格式如下图:
媒体接入控制MAC:Medium Access Control
静态划分信道(信道复用):
- 频分 复用FDM
- 时分 复用TDM
- 波分 复用WDM
- 码分 复用CDM:更常用的是码分 多址CDMA
- 码片
- m bit 码片序列(chip Sequence)
- 规格化内积--- 0/1
动态接入控制-总线局域网-CSMA/CD协议(载波监听多址接入/碰撞检测)
- 概述:先听后说,边听边说;一旦冲突,立即停说;等待时机,重新再说
- 争用期:大小为端到端的往返时延,意思为如果超过了这个时期,并且没有检测到碰撞,就可以肯定这次不会发生碰撞
- 最小帧长:意思为确保在发送完成这个帧之前,就检测到了是否发生碰撞,是,则停止发送剩余部分。大小: 争用期 X 信道带宽
动态接入控制-无线局域网-CSMA/CA协议
MAC地址
- 数据链路层的
- 48位二进制数(12个十六进制数):24位厂商随意分配,24位由注册管理机构分配
IP地址:网络编号+主机编号
数据包转发过程中MAC地址和IP地址的变化:
- 源IP地址和目的IP地址保持不变
- 源MAC地址和目的MAC地址随着逐个链路(网络)改变
地址解析协议ARP
- 只能在一段网络中使用
- 发送ARP请求报文-发送ARP响应报文
- 通过网络地址来定位MAC地址
集线器HUB:
- 早期的以太网互连设备
- 用集线器互连起来额度所有主机共享总线宽带,属于同一个碰撞域和广播域
交换机:
- 使用最广泛的互联设备
- 交换机可以根据MAC地址过滤帧,隔离碰撞域
- 交换机的每一个接口是一个独立的碰撞域
交换机自学习和转发帧的过程:
- 自学习算法建立帧交换表
- 帧交换表中有 目的MAC地址对应接口号
- 明确转发-盲目转发-明确丢弃
分割广播域的方法:虚拟局域网技术VLAN(Virtual Local ara net):
- 802.1Q帧(插入了4字节VLAN标记)|且是由交换机来处理的,不是由用户主机来处理的
- 交换机收到802.1Q帧,会 去标签;收到普通以太网帧,会 打标签
- 交换机端口类型:Access-Trunk-Hybrid
3 网络层¶
网络层互联设备 路由器: 将各个网络相连
TCP/IP中的网际层提供的是简单无连接的数据报服务
IPv4:每一台主机(或路由器每一个接口)在 因特网上分配一个 唯一的32比特的标识符
IPv4=网络地址+主机地址
IPv4的表示方法:点分十进制表示方法 、32位二进制表示方法
32位二进制表示方法 转 点分十进制
每8位二进制 转成 一位十进制。
凑值法-(熟知8位二进制数各位的权值128-64-32-16-8-4-2-1)
分类编址的IPV4地址: 网络号+主机号
- A类:(8+24)0 |1-126
- B类:(16+16)10|128.0-191.255
- C类:(24+8)110 |192.0.0-223.255.255
- D类:多播地址 1110
- E类:保留今后使用 1111
TIPS:
- 只有ABC类可以分配给网络中的主机或者路由器接口
- 主机号全为0的是网络地址,不能分配给主机和路由器各接口
- 主机号全为1的是广播地址,也不能分配给主机和路由器各接口
- 每个网络中的最大主机数要 -2
- 网络是127的,主机号非全0、全1,是一类特殊的IP地址,用于本地软件环回测试的。
划分子网的IPv4地址:从原有主机号中借用一部分比特作为子网号
32比特的子网掩码可以表明分类IP地址的主机号被借用了几个比特作为子网号:
- 子网掩码使用连续的比特1来对应网络号和子网号
- 使用连续的比特0来对应主机号
- 用IPv4地址与其对应的子网掩码进行逻辑与运算,可以得到 所在子网的网络地址
给定一个分类的IP地址和对应的子网掩码,可以知道子网划分的细节
- 划分子网的数量
- 每个子网可以分配的IP地址数量
- 每个子网的网络地址和广播地址
- 每个子网可以分配的最小和最大的地址
默认子网掩码:未划分子网的情况下使用的子网掩码
- A:255.0.0.0
- B:255.255.0.0
- C:255.255.255.0
无分类编址的IPv4地址
CIDR斜线记法,在IPv4地址后加上"/" ,在斜线后面写上网络前缀所占的比特数量。比如:35.230.32.0/21
CIDR地址块:将网络前缀都相同的连续的IP地址组成一个CIDR地址块
只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的全部细节。
- 地址块的地址数量
- 地址掩码
- 地址块的网络地址和广播地址
- 地址块可以分配的最小和最大的地址
路由聚合:为了简化合并路由表中的路由数量。方法:找共同前缀。
IP数据报的发送过程:判断是否在同一个网络中
- 如果在同一个网络中,直接交付
- 如果不在同一个网络中,就间接交付,传输给主机所在网络的默认网关(即路由器接口的IP地址),由默认网关帮忙转发
路由器转发IP数据报:
- 检查IP数据报首部有无出错
- 出错,直接丢弃,并通知源主机
- 没有,则转发
- 根据IP数据报的目的地址在路由表中查找匹配 目的网络地址
- 找到,则转发给条目中指示的下一跳
判断源主机与目的主机是否在同一个网络:目的IP地址与主机子网掩码相与得到网络地址,网络地址相同,则在同一个网络中
静态路由选择:人工配置的路由表
静态路由出现 路由环路 的原因:配置错误-聚合了不存在的网络-网络故障
特殊的静态路条目:默认路由|特定主机路由|黑洞路由
路由器结构:路由选择部分+分组转发部分
路由表:包含从目的网络到下一跳的映射。
内部网关协议(例如RIP、OSPF)&外部网关协议(BGP)
一个自治系统内:衡量的代价相同(比如:带宽、距离)
路由信息协议RIP(内部网关协议)
相关名词:
- 跳数:衡量到目的网络的距离。(为16时,表示不可到达)
- 基本工作过程:
- 相邻路由器之间发送封装有路由信息的RIP更新报文
- 相邻路由器之间更新自己的路由信息
- 更新规则:……
开放最短路径OSPF协议(内部网关协议):基于链路状态
基本工作过程:
- 相邻路由器之间发送分组(问候分组-数据库描述分组-链路状态请求分组-链路状态更新分组-链路状态确定分组)
- 基于Dijkstra算法
边际网关协议BGP(外部网关协议)
基本工作过程:
- 每个自治系统AS至少选择一个路由器作为 BGP发言人
- BGP发言人之间首先建立TCP连接
- 在TCP连接上交换BGP报文以建立BGP会话
- 利用会话交换路由信息
IPv4数据报的首部格式:
IP数据报(全称IPv4数据报)从 网际层 到 数据链路层的工作流程:
- 网络际层封装的IPv4数据报,到数据链路层被封装成帧。
- 数据链路层规定 帧的数据载荷的大小 (即长度受限于最大传输单元MTU)
- 当IPv4数据报长度超过MTU,无法封装,需要进行分片
网际层控制报文协议ICMP(Internet Control Message Protocol):
- 被封装在IP数据报中发送
- 分类:ICMP差错报文|ICMP询问报文
虚拟专用网VPN:利用公用的因特网作为机构各专用网之间的通信载体。
内部专用地址: 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255
各机构之间至少需要一个路由器具有合法的全球IP地址,这样各自的专用网才能通过公用的因特网进行通信。
网络地址转换NAT:
- 原因:解决IPv4地址用尽的问题
- 做法:大量使用内部专用地址的用户共享少量外部全球地址 来访问因特网上的主机和资源
4 运输层¶
通信的真正实体是位于通信两端主机中的 进程
目的:为运行在不同主机上的应用进程提供直接的通信服务
两种不同的通讯协议:有连接的TCP、无连接的UDP
为什么要引入端口号:不同操作系统的应用进程有不同格式的进程标识符,为了让不同操作系统计算机的应用进程之间可以进行网络通信,必须统一的方法对TCP/IP体系的应用进程进行标识。
端口号:标识应用层不同进程
端口号,只具有本地意义,不同计算机中的相同端口号没有联系
应用层常用协议 所使用的 运输层协议 所熟知端口号:
UDP和TCP对比:
- 用户数据报协议UDP(User Datagram Protocol)
- 无连接的
- 支持单播、多播、广播
- 面向应用报文的
- 向上提供无连接不可靠传输服务
- 适用于视频会议等实时应用
- 传输控制协议TCP(Transmiss Control Protocol)
- 仅支持单播
- 面向字节流的
- 向上提供面向连接可靠的传输服务
- 适用于 文件传输 等要求可靠传输的应用
TCP流量控制
原因:发送方发送数据过快,接收方就可能来不及接受,这可能造成数据的丢失
流量控制:让发送方的发送速率不要这么快,接收方来得及接受
基本实现流程:
- 滑动窗口机制
- 接受窗口大小来限制发送窗口大小
- 零窗口确定报文、持续计时器、零窗口探测报文
- 发送缓存、接收缓存
TCP拥塞控制
相关名词:
- 慢开始门限值ssthresh
- 拥塞窗口值cwnd
4种控制:
- 慢开始 : 拥塞窗口cwnd指数增长 ,2的指数
- 拥塞避免:拥塞窗口线性增长,直到重传计时器超时,更新慢开始门限值ssthresh,初始化设置拥塞窗口值为1
- 快重传:发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传
- 快恢复:发送方一旦收到3个连续的重复确认,将慢开始门限值、拥塞窗口值 设置成原来的一半。
TCP超时重传时间RTO的选择:
- 加权平均往返时间RTTs
- 偏差加权平均RTTD
TCP可靠传输的实现:以字节为单位的滑动窗口来实现
TCP的通信是全双工通信,即通信每一方都在发送和接收报文段,每一方都有自己的发送窗口和接收窗口。
TCP运输连接有三个阶段:
- 建立TCP连接(“三报文握手”)
- 数据传送
- 释放TCP连接(“四报文挥手”)
! 为什么三报文,而不是两报文握手?
这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,导致错误。
先关闭TCP客户端->TCP服务器的连接(请求+相应),再关闭TCP服务器->TCP客户端的连接(请求+相应)。来回总共4次。
TCP保活计时器:防止TCP客户出现故障,导致不能关闭连接,而资源浪费
在TCP发送数据时,是从发送缓存中取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
TCP报文段:首部+数据载荷
TCP报文段的首部格式:
- 确认标志位ACK:取值为1时确实号字段才有效;0无效
- 同步标志位SYN
- 终止标志位FIN
- 复位标志位RST
- 推送标志位PSH
- 紧急标志位URG
5 应用层¶
对等方式P2P:
- 没有固定的服务提供者和请求者,每个对等方既是服务提供者也是请求者
- 服务是分散型的,位于大量个人计算机上
- BT 下载和磁力下载,在本质都是 P2P 下载
- 可扩展性,每增加一个对等方就,增加了服务提供者和请求者,因此系统性能不会因为规模的扩大而下降
客户/服务器(C/S)方式:
- 客户是服务请求方,服务器是服务提供方
- 服务器总是处于运行状态,并等待客户的服务请求
- 服务是集中型的,服务器计算机比客户计算机少的多。
- 传统的、成熟的。比如万维网www、电子邮件、文件传输FTP
动态主机配置协议DHCP:
- 为加入网络的计算机,自动分配IP地址等网络配置信息
- DHCP服务器端口67,DHCP客户端口68
每一个网络都配置DHCP服务器会让DHCP服务器太多,所以有了DHCP中继代理(路由器),它配置了DHCP服务器的IP地址,作为各网络中计算机和DHCP服务器的桥梁。
文件传输协议FTP:FTP客户和服务器之间要建立以下两个并行的TCP连接:
- 控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令
- 数据连接,用于文件传输,在每次文件传输时才建立,传输结束就滚啊哔
- 默认下,FTP使用TCP21端口来控制连接,20端口来数据连接。但是,是否使用20端口建立数据连接和传输模式有关,主动方式使用TCP20端口,被动方式由服务器和客户端自行协商决定。
域名系统DNS(Domain Name System):
- 因特网采用层次树状结构的域名结构:
.三级域名.二级域名.顶级域名
- 域名服务器:保存域名和IP地址的映射关系
- 域名服务器的分类:根域名服务器、顶级(.com)、权限(xyz.com)、本地
- 域名解析的两种过程方式:递归、迭代
- 主机自带由高速缓存,存放一些已知域名对应的IP地址
本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中去。
电子邮件(C/S模式):
- 三个组成:用户代理+邮件服务器+协议
- 用户代理是用户和电子邮件系统的接口,又称为电子邮箱客户端软件
- 协议:发送SMTP、接收POP3
- 为了解决SMTP传送非ASCII码文本的问题,提出了 多用途因特网邮件扩展MIME
- 基于万维网的电子邮件:用户浏览器和邮件服务器网站之间使用的是HTTP协议,而邮件服务器之间仍然是SMTP协议
万维网WWW
不同浏览器最重要的部分就是 渲染引擎(浏览器内核),负责对网页内容进行解析和显示。
万维网使用 统一资源定位符URL 来指名资源的位置
URL格式:<协议>://<主机>:<端口>/<路径>
超文本传输协议HTTP:
- http1.0 非持续连接 | http2.0 持续连接
HTTP请求报文格式
HTTP响应报文格式
Cookie:
- 在服务器上记录用户信息
- 浏览器的Cookie文件中,有网站和Cookie识别码对应
Web缓存:
- 位于客户机,或中间系统(在中间系统上的,叫代理服务器)
- 暂存了因特网资源,大大减少了时延