计算机网络基础
第一章 计算机网络和因特网
1.协议的三要素:
- 语法
- 语义
- 同步
2.网络结构
- 网络边缘
- 接入网络、物理介质
- 网络核心
3.端系统模型
- 客户/服务器模型
- 端对端模型
- bt下载 迅雷
- 区块链
4.接入网络
4.1带宽
1.带宽表示单位时间内(一般以”秒”为单位)传输数据容量的大小,表示吞吐数据的能力。所以我们一般也将”带宽”成为”数据传输率”
2.单位
(1)以字节为单位:Bps,KBps,MBps等
(2)以比特为单位:bps,Kbps,Mbps等
换算:
1B/s = 8b/s(bps)
1KB/s = 8Kb/s
1MB/s = 8Mb/s
平时用bps比较多。
4.2 数字用户线路(DSL)
1.用已有的电话线路
(1)DSL承载的数据进入Internet
(2)DSL承载的语音进入电话交换网
2.速率
(1)上行速率<2.5Mbp
(2)下行速率<24 Mbp
3.ADSL:非对称数字用户线路
主要是下载,对上传的需求不高。
4.3 电缆接入网络
1.使用有线电视网接入Internet
2.HFC:混合光纤同轴电缆
4.4 光纤到户
1.把光纤直接拉到家里
2.ONT:光纤网络端接器(家庭端)
OLT:光纤网络端接器(电信公司端)
4.5 接入网络
- 家庭网络(家庭路由器)
- 企业接入网络(LAN)
- WI-FI无线接入网络
- 广域无线接入网络(3G、4G、5G)
4.6 物理介质
1.物理链路:传播位(bit)信号
2.分类:
- 导引型媒体
- 双绞线
- 同轴电缆
- 光纤线缆:
- 单模光纤
- 多模光纤
- 非导引型媒体(无限电磁波)
- 地面微波
- 局域无限通道(WI-FI)
- 广域无限通道(cellular,也就是3G、4G)
- 卫星通信
5.网络核心
5.1 基本原理
1.电路交换
2.分组交换
5.2 电路交换
1.网络资源(如带宽)被分片,称为多路复用
2.分片方式
- 频分 FDM
- 时分 TDM
5.3 分组交换
1.统计复用
2.特点
- 资源竞争
- 拥塞
- 存储转发:分组每次转发1站
3.分类
- 数据报网络
- 虚电路网络
5.4 ISP的结构组成
1.互联网服务提供商:ISP
(1)第一层ISP
(2)第二层ISP
(3)本地ISP
6.分组交换网络中的延迟、丢失和吞吐量
####6.1 分组延迟的四种类型
1.处理时延
检查错误位
选择输出链路
2.排队时延
等待时间
拥塞程度
3.传输时延
R = 链路带宽(管子直径)
L = 分组长度
发送分组比特流的时间 = L/R
4.传播时延
d = 物理链路的长度
s = 介质的信号传播速度(管子直径造成的水流速度)
传播时延 = d/s
6.2 总的节点时延
d(nodal)= d(proc)+ d(queue)+ d(trans)+ d(prop)
6.3 排队时延的进一步解释
R = 链路带宽
L = 分组长度
a = 平局分组到达率
流量强度 traffic intensity = La/R
La/R ~ 0
平均排队时延极小接近于0
La/R -> 1
排队时延大幅增大
La/R > 1
排队时延趋于无穷大
6.4 概念
1.分组丢失->丢包率
2.吞吐量:单位时间内整个网络传输数据的速率或分组数(bps)
瞬时吞吐量
平均吞吐量
min{Rs,Rc}
7.协议层及其服务模型
7.1 ISO/OSI七层参考模型
| 层号 | 层的名称 | | —- | ———- | | 7 | 应用层 | | 6 | 表示层 | | 5 | 会话层 | | 4 | 传输层 | | 3 | 网络层 | | 2 | 数据链路层 | | 1 | 物理层 |
7.2 TCP/IP参考模型
| TCP/IP参考模型1 | TCP/IP参考模型2 | | ————— | ————— | | 应用层 | 应用层 | | 传输层 | 传输层 | | 网络层 | 网络层 | | 网络接口层 | 数据链路层 | | | 物理层 |
7.3 协议分层与数据
1.各层发方从上层到下层,收方 从下层到上层传递数据。
2.发方添加头部信息创建新的数据单元,收方去掉头部。
3.传递新的数据单元到上层/下层
4.各层传送不同的协议数据单元PDU
8. 网络安全概述
8.1 攻击威胁下的网络
1.网络安全问题产生的原因
- 网络的开放性
- 软硬件/协议设计者的局限
- 时代和技术的发展
2.攻击方式
- 被动攻击
- 主动攻击
8.2 网络安全的重要属性
1.机密性
2.真实性
3.完整性
4.可用性
5.不可否认性
第二章 应用层
1.网络应用程序体系结构
1.1 客户机/服务器体系结构
- 服务器
- 总是打开的
- 具有固定的、众所周知的IP地址
- 客户机
- 可以拥有动态IP地址
- 客户机相互之间不直接通信
1.2 P2P体系结构
- 没有总是打开的服务器
- 任意一对主机直接相互通信
- 对等方间歇连接并且可以改变IP地址
- 优缺点
- 优点:自扩展性
- 缺点:难以管理
1.3 客户机/服务器和P2P混合的体系结构
举例:
- Napster
- 即时讯息(QQ、Wechat)
2.进程通信
2.1 通信方式
(1)同一主机上的两个进程通过内部进程通信机制进行通信
(2)不同主机上的进程通过交换报文相互通信
2.2 命名
(1)客户进程:发起通信的进程
(2)服务器进程:等待联系的进程
注意:具有P2P体系结构的应用程序既有客户进程又有服务器进程。
2.3 进程与计算机网络的接口-套接字
(1)套接字又叫做应用程序编程接口API
(2)应用层的进程相关的工作由开发者控制,而套接字以下的工作是由操作系统来完成的。
2.4 进程寻址
(1)主机有唯一的32位IP地址
(2)主机上的进程标识包括IP地址和端口号(因为一台主机上有很多个进程
(3)常用应用程序的端口号
- Web服务:80
- 邮件服务:25
2.5 应用层协议
(1)组成
- 报文类型
- 报文类型的语法
- 字段的语义
- 进程何时、如何发送报文及对报文进行响应
(2)分类
- 公共领域协议
- 专用协议
2.6 应用需要的服务
1.数据丢失率
2.带宽和吞吐量
3.安全
4.定时
2.7 因特网传输协议提供的服务
1.TCP服务
- 面向连接的服务(发送方和接收方都已经准备好了才开始通信)
- 可靠的传输服务
- 流量控制
- 拥塞控制
- 没有提供时延保证和最小带宽保证
2.UDP服务
- 无连接的服务(发送方在开始通信前不去询问接收方是否已经准备好)
- 不可靠数据传输
2.8 安全TCP
1.SSL(Sucurity Socket Layer)
- 提供加密的TCP连接
- 保证数据完整性
- 端点认证
- SSL提供套接字API
3.HTTP概况
3.1 概述
(1)HTTP:超文本传输协议
(2)Web的应用层协议
(3)C/S模式
3.2 Web和HTTP
(1)网页由许多对象组成
(2)对象就是文件
(3)多数网页由单个基本HTML文件和若干个所引用的对象构成
(4)URL:协议+主机名+路径名
(5)HTTP是无状态协议
- HTTP服务器不维护客户先前的状态信息
- 维护状态的协议非常复杂
4.非持久连接和持久连接
4.1 非持久HTTP连接
(1)每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接
(2)HTTP/1.0使用非持久HTTP连接
4.2 持久HTTP连接
(1)一个TCP连接上可以传送多个对象
(2)HTTP/1.1默认使用持久HTTP连接
(3)分类
- 不带流水线的持久HTTP连接
- 客户先前响应消息收到,才发出新的消息请求
- 每个引用对象经历一个RTT
- 带流水线的持久HTTP连接
- HTTP/1.1默认使用
- 客户遇到1一个引用对象就发送请求对象
- 所有引用对象只经历一个RTT
4.3 响应时间模型
(1)定义往返时间RTT
- 一个小分组从客户主机到服务器再到客户主机所花费的时间
- 一个RTT用于建立TCP连接
- 一个RTT用于HTTP请求/响应消息的交互
- HTML文件传输时间:total = 2RTT + transmit time
5.HTTP报文格式
5.1 请求报文
(1)都是ASCII文本
(2)
请求行
头部行
回车换行(指示结束)
(3)
请求行 :方法 sp URI sp 版本 cr lf
首部行: 首部字段名 sp 值 cr lf
首部字段名 sp 值 cr lf
首部字段名 sp 值 cr lf
空行:cr lf
实体主体
(4)请求方法类型
- HTTP/1.0
- GET
- POST
- HEAD
- HTTP/1.1
- GET,POST,HEAD
- PUT
- DELETE
(5)上载表单(各字段)输入值
- POST方法
- 网页时常包含表单输入
- 输入值在请求报文的实体主体中被上载到服务器
- URL方法
- 使用GET方法
- 表单(各字段)输入值被上载,以URL请求行的字段
5.2 响应报文
(1)同样是ASCII码
(2)
状态行
首部行
回车换行
数据
(3)HTTP响应的状态码
- 200 OK
- 301 Moved Permanenly
- 400 Bad Request
- 404 Not Found
- 500 Internal Server Error
6.用户与服务器交互:Cookies
6.1 目的
提高用户和服务器的交互性
6.2 跟踪用户
(1)李四的栗子
(2)cookies的4个重要方面
- Cookie头部行在HTTP响应消息中
- Cookie头部行在HTTP请求消息中
- Cookie文件保存在用户主机中并被用户浏览器管理
- Cookie也保存在Web站点的后端数据库
(3)好处
- 身份认证
- 虚拟购物车
- 推荐广告
- 用户会话状态
(4)Cookies和隐私
- cookies允许网站更加了解你
- 你可以提供名字和E-mail给网站
- 广告公司通过网站获得信息
- cookie不适合游动用户
7. Web缓存(代理服务器)
7.1原理
(1)流程
(2)缓存器既是服务器又是客户机
7.2 好处
- 减少客户机请求的响应时间
- 减少内部网络与接入链路上的通信量
- 能从整体上大大降低因特网上的Web流量
7.3 缓存器举例
- 增加接入链路的带宽(成本高昂)
- 安装缓存服务器
7.4 条件GET方法
- 目的:证实缓存器中的对象是否为最新
- 验证
- 缓存器:在请求报文中包含对象最后修改时间
- 服务器:如果对象是最新的,则响应报文中不包含对象
- 图示
8. 文件传输协议 FTP
(1)client/server模式
(2)
控制连接端口号是21
数据连接端口号是20
(3)流程
(4)带外(HTTP是带内)
(5)无状态(HTTP是有状态)
(6)常见命令
(7)常见应答
(8)数据连接建立模式
- 主动模式(服务器去找客户端)
- 被动模式(客户端去找服务器)
(9)数据传输的模式
- ASCII模式
- 二进制模式
9. SMTP协议
用于电子邮件
####9.1 三个主要组成部分
- 用户代理
- 邮件协议
- 邮件服务器
9.2 用户代理
- 允许用户阅读、回复、转发、保存、编辑邮件消息
- 发送/接收邮件消息到/从服务器
- 运行邮件协议
9.3 邮件服务器
- 用邮箱存放用户接收的邮件消息
- 外出报文队列
- 运行邮件协议
9.4 邮件协议
- 邮件发送协议SMTP
- 服务器端口号:25
- 直接传送:发送服务器直接到接收服务器
- 握手->传输邮件消息->结束
- 命令和应答都是ASCII码
- 邮件消息必须是7-bit ASCII
- 邮件接收协议
- 与HTTP的比较
- HTTP是拉协议,SMTP是推协议
- 都有ASCII命令/应答交互,状态码
10.邮件报文格式和MIME
10.1 邮件消息的格式
- 信头-头部行
- TO
- FROM
- Subject
- 空行
- 信体
10.2 多媒体扩展MIME
(1)多用途因特网邮件扩展
(2)还可以发音频、文件等
(3)通过添加额外的头部行来实现
- mine版本
- 同来编码数据的方法
- 类型名,子类型名,参数声明
10.3 示例:使用SMTP发送带头部的电子邮件
11.邮件访问协议
- POP协议
- IMAP
- HTTP
11.1POP3协议
11.2 POP3和IMAP
POP3:
- POP3的会话是无状态的
- “Download and keep”
IMAP:
- 保存所有邮件消息在一个位置:服务器
- 允许用户在服务器的各文件夹中管理邮件消息
- IMAP维护用户会话的状态信息
12.DNS体系介绍
DNS:域名系统
IP地址:数字
主机名:用于人记忆方便
要在IP地址与主机名之间进行转换
12.1 DNS服务器的功能
- 主机名到IP地址的转换
- 主机别名
- 邮件服务器别名
- 负载分配
12.2 DNS特点
- 分布式数据库
- 应用层协议
12.3 体系结构
- 根域名服务器
- 顶级域名服务器
- com, org,net,edu
- uk,fr,jp,cn
- 权威域名服务器
- 本地DNS服务器(严格来说不属于体系结构中的)
13.DNS工作机理
- 递归查询
- 根域名服务器负担较重
- 迭代查询
13.1 DNS缓存和权威DNS记录更新
- 一旦名字服务器获得DNS映射,它将缓存该映射到局部内存
- TTL后才丢弃
- 缓存的条目可能已经过期
13.2 DNS记录
DNS:存储资源记录(RR,Resource Records)的分布式数据库
RR格式:(name,value,type,TTL)
- Type = A
- name = 主机名
- value = IP地址
- Type = CNAME
- name = 主机别名
- value = 真实的规范主机名
- Type = NS(name server)
- name = 域名
- value = 该域权威名字服务器的主机名
- Type = MX(mail exchange)
- name = 邮件服务器的主机别名
- value = 邮件服务器的真实规范主机名
13.3 DNS协议,消息
- DNS协议的报文格式(发送协议和接收协议格式一样)
- 格式
13.4 在DNS数据库中插入记录
- NS
- A(网站)
13.5 DNS安全问题
- DDos
- DNS amplification attacks
- 个人用户安全问题
14. P2P应用(了解即可)
14.1 分类
- 纯P2P架构
- 集中式目录架构
14.2 P2P技术
- 查询洪泛
- KaZaA
- P2P文件分发-BitTorrent
- 追踪器tracker
- 请求文件块
- 发送文件块:tit-for-tat(一报还一报)
- DHT:一个分布式的P2P数据库
- 键值对
- 一个对等方利用key来查询DHT,返回匹配的value
- 对等方还可以插入(key,value)对
- 如何分配键值对给对等方?
- 把每个key转化成一个整数
- 把每个对等方分配一个整数标识符
- 把键值对分配给离key最近的那个对等方
- 标识符由n比特构成
- 需要每个key也在同样的范围内
- key = hash(”Led Zeppelin IV”)
- 直接后继
- 查询复杂度是O(n)
- 带捷径的环形DHT
- 查询复杂度是O(log N)
15. TCP和UDP套接字编程
- socket API
- TCP编程
- UDP编程
第三章 运输层
1. 传输层服务
在两个不同的主机上运行的应用程序之间提供逻辑通信
####1.1传输层协议运行在端系统
- 发送方:将应用程序报文分成数据段传递给网络层
- 接收方:将数据段重新组装成报文传递给应用层
1.2 Internet传输层协议
- TCP
- UDP
1.3 传输层和网络层
- 网络层:两个主机之间的逻辑通信
- 传输层:两个进程之间的逻辑通信
2. 多路复用和多路分解
(2)
- 在接收主机多路分解
- 在发送主机多路复用
2.1 无连接多路分解
- 用端口号创建套接字
- UDP 套接字由两个因素指定:目的IP地址, 目的端口号
- 当主机收到UDP数据段
- 检查数据段中的目的端口号
- 用端口号指示UDP数据段属于哪个套接字
- 具有不同的源IP地址且/或源端口号,但具有相同的目的IP地址和目的端口号的IP数据报指向同样的套接字
2.2 面向连接的多路分解
(1)TCP套接字由4部分指定
- 源IP地址
- 源端口号
- 目的IP地址
- 目的端口号
接收主机使用所有四个值将数据段定位到合适的套接字
(2)非持久HTTP将对每个请求有一个不同的套接字
3. 无连接传输:UDP
3.1 特点
- 无修饰
- 不加渲染
- 尽最大努力
- 无连接(没有握手)
3.2 优点
无连接:发送数据之前不需要建立连接
尽最大努力:不保证可靠交付,也不使用拥塞控制(很符合多媒体通信的要求)
支持一对一、一对多、多对一、多对多的交互通信
首部开销小,只有8个字节
面向报文
- 发送发UDP对应用程序交下来的报文,在添加首部后就向下交付IP层
- UDP对应用层发下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
- 应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
- 接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
3.3 用户数据报UDP的格式
(1)用户数据报
- 数据字段
- 首部字段
(2)首部字段
源端口 目的端口 长度 检验和
(2bit)(2bit)(2bit)(2bit)
3.4 校验和
(1)在计算校验和时,临时把伪首部和UDP用户数据报连接在一起。伪首部仅仅是为了计算校验和。
![屏幕快照 2019-06-18 下午3.26.03](/Users/chenxiaoyu/Desktop/计网复习/PPT里的图片/屏幕快照 2019-06-18 下午3.26.03.png)
(2)差错检测流程图
(3)算法
- 发送方
- 将数据段看成16bit的整数序列,校验和:数据段内容相加(1的补码和),发送者将校验值放入UDP的校验和域
- 接收方
- 计算接收到数据段的校验和,检查计算的校验和是否等于校验和域中的值
- 但是可能是错误的
(4)例子![屏幕快照 2019-06-18 下午3.28.36](/Users/chenxiaoyu/Desktop/计网复习/PPT里的图片/屏幕快照 2019-06-18 下午3.28.36.png)
求和->回卷->变反->得到校验和
通过校验和来检测差错
4. 可靠数据传输原理
- 首部字段Rdt1.0
- 在完美可靠的信道上
- 发送方、接收方分离的FSMs
- Rdt2.0
- 具有bit错误的信道
- ACKs
- NAKs
- 新机制
- 差错检测
- 接收方反馈
- 停-等协议
- 致命缺陷——发送方并不知道接收方发生了什么
- 发送方给每个分组加一个序号
- 在ACK/NAK混淆时发送方重发当前分组
- 接收方丢弃重复的分组(并不向上传递)
- 具有bit错误的信道
- Rdt2.1
- 加入序列号
- 状态加倍
- Rdt2.2
- 不要NAK
- 发送方收到重复ACK将导致和NAK一样的处理
- Rdt3.0
- 具有出错和丢失
- 加入定时器
- 能工作但是性能很差(因为停等协议)
- 流水线技术
- 发送方允许发送多个”在路上的”,还没有确认的报文
- 序号数目的范围必须增加
- 在发送方/接收方必须有缓冲区
- 增加了利用率
- 两个通用模式
- go-Back-N
- 选择重传
5. 面向连接传输:TCP
6. 拥塞控制原理
7. TCP拥塞控制
第四章 网络层
4.1 引言
1.网络层提供的功能
- 发送方主机传输报文段到接收方主机
- 发送方主机封装报文段为数据报
- 接收方主机递交报文段给传输层
- 在每个主机、路由器上都需要运行网络层协议
- 路由器会检查通过它的所有IP数据报的头部字段,然后根据目的IP地址对数据报进行转发
2.主要功能
- 转发:将分组从路由器的输入端口转移到正确的路由器输出端口
- 路由:确定分组从发送方传输到接收方(目的主机)所经过的路径(或路由)
路由是全局概念,转发是局部的。
3.连接建立
4.网络层的服务模型
(1)网络层可能提供的服务
- 确保交付:确保分组到达目的地。
- 具有时延上界的确保交付:主机到主机的时延。
- 有序分组交付:按发送顺序到达。
- 确保最小带宽:当发送主机以低于特定比特率的速率发送比特,分组不会丢失,在一定时延到达。
- 确保最大时延抖动:发送方发送两个连续分组的时间间隔与接收到的间隔相同。
(2)因特网的网络层提供的服务
- 单一服务,即尽力而为服务(best-effort service) 。
- 分组间的定时不能被保证;
- 分组的接收顺序与发送顺序不一定相同;
- 传送的分组不能保证最终交付,即网络可能未向目的地交付分组。
4.2 虚电路和数据报网络
1.概述
- 数据报——无连接服务
- 虚电路——连接服务
只提供两种服务之一,不会同时提供。
- 传输层:面向连接服务在网络边缘的端系统中实现
- 网络层:面向连接服务在端系统及网络核心的路由器中实现
2.虚电路
- 源主机-目的主机路径的行为类似于电话网络的行为
- 一条虚电路包括:
- 一条从发送方到接收方的路径
- VC号,沿路径的每条链路都有一个VC号
- 沿路径的每个路由器上都有转发表条目
- 虚电路的信令协议
- 建立
- 维护
- 拆除
4. 数据报网络(现在用)
(1)特点
- 在网络层无呼叫的过程
- 路由器:不需要维护端到端连接的状态
- 没有网络等级的”连接”的概念
- 使用目的主机的地址进行分组转发
(2)数据报转发表
(3)最长前缀匹配
对于给定的目的地址,使用最长地址前缀匹配来完成输出端口的查找。
(4)路由器查表方法
用目的地址前缀与转发表的前缀匹配
- 存在匹配:向对应链路转发
- 不存在匹配:选择”其他”项对应的链路转发
- 存在多个匹配:”最长前缀匹配规则”
(5)特点
- 虚电路:
- 网络功能复杂
- 端系统设备简单
- e.g.ATM
- 数据报:
- 网络层服务模型简单
- 端系统功能复杂
- 提供的服务保证最少
- e.g.因特网
4.3 路由器的工作原理
1.路由器的核心功能
- 运行路由算法/协议
- 将分组从路由器的输入链路传送到正确的输出链路
2.路由器的体系结构
- 输入端口
- 线性端接模块
- 数据链路处理模块
- 查找与转发模块
- 输出端口
- 交换结构
- 选路处理器