数据库(三)

数据库安全性

1.数据库的不安全因素

  • 非授权用户对数据库的恶意存取和破坏
  • 数据库中重要的数据被泄露
  • 安全环境的脆弱性

2.授权:授予与收回

2.1.GRANT

grant <权限>,···
on <对象类型><对象名>,···
to <用户>···
[with check option]   //表示 被授权的用户可以在授予其他用户这些权限(继续传递)

/* 把查询student表的权限授予U1 */
grant select             //还可以是  ALL PRIVILEGES 全部权限,UPDATE(Sno) 更新某列
on Table student
to U1

  • 将对指定操作对象的指定操作权限授予指定的用户

2.2.REVOKE

revoke <权限>,···
on <对象类型><对象名>,···
from <用户>···[cascade|restrict]   //默认:cascade 收回衍生权限

数据库完整性

  • 数据的正确性和相容性

1.实体完整性

  • 列级约束条件
  • 表级约束条件
  • 单属性构成时,都可
  • 多属性构成时,只能表级约束
create table stu
(
    sno CHAR(9) PRIMARY KEY          //列级约束定义
    sname CHAR(20)
)

create table stu
(
    sno CHAR(9)
    sname CHAR(20)
    PRIMARY KEY(sno)                //表级约束条件
)

create table stu
(
    sno CHAR(9)
    sname CHAR(20)
    PRIMARY KEY(sno,sname)          //多值时表级约束,,!!表明 主码是(sno,sname),不是两个分开
)

1.1.实体完整性检查和违约处理

  • 检查主码值是否唯一,不唯一则拒绝
  • 检查主码的各个属性是否为空,有空就拒绝

2.参照完整性

2.1.定义参照完整性

  • 针对于外键所描述
//主码(sno,cno),sno为stu主码,cno为course主码
create table sc
(
    sno int not null,
    cno int not null,
    grade int,
    PRIMARY KEY(sno,cno),
    FOREIGN KEY(sno) references stu(sno),
    FOREIGN KEY(cno) references coruse(cno),
)

3.用户定义的完整性

3.1.属性列上的约束条件

  • 列值非空 not null
  • 列值唯一 unique
  • 列值是否满足一个条件表达式 check
create table stu
(   sno int not null,unique                   //not null.unique
    ssex char(2) check(ssex in ('男','女'))    //check
    grade int check(grade > 0)                //check
)

4.触发器

  • 事件-条件-动作 规则
create trigger <触发器名>                   //触发事件发生时,触发器激活
{before|after} <触发事件> on <表名>         //指明触发器激活的时间,是在触发事件前 或 后
REFERENCING NEW | OLD ROW AS<变量>         //REFERENCING指出引用的变量
FOR EACH{ROW|STATEMENT}                   //定义触发器类型,知名动作体制性的频率
[when<触发条件>]<触发动作>                  //仅当触发条件为真时,触发动作体

关系数据理论

1.问题的提出

  • 1NF:每一个分量是不可分的数据项
  • 数据依赖:关系内部属性与属性之间的一种约束关系。最重要的是 函数依赖FD 多值依赖MVD
  • 关系模型常常会有四种问题
    • 数据冗余
    • 更新异常
    • 插入异常
    • 删除异常
  • 一个好的模式应当不会发生插入异常、删除异常、更新异常。数据冗余尽可能小

2.规范化

2.1.函数依赖

  • 平凡函数依赖:X->Y,Y属于X(不讨论)
  • 非平凡函数依赖:X->Y,Y不属于X(以下均均为非平凡函数依赖)
  • 决定因素:自变量,X
  • 完全函数依赖:在某一关系模式下,X->Y,对于X的任一真子集,都无法推导出Y
  • 部分函数依赖:在某一关系模式下,X->Y,存在至少一个X的真子集,可以推导出Y
  • 传递函数依赖:在某一关系模式下,X->Y,Y推不出X,Y->Z,则X->Z

2.2.码

  • 候选码:某一关系模式下,某个属性或属性组合,被完全函数依赖。即可称为该关系的候选码
  • 超码:某一关系模式下,某个属性或属性组合,被部分函数依赖。即可称为该关系的超码
  • 候选码是一类特殊的超码
  • 主属性:包含在任何一个候选码中的属性
  • 非主属性:不包含在任何一个候选码中的属性
  • 全码:整个属性组是码
  • 外码:某个属性不是本关系的码,是其他关系模型的码。

2.3.范式

  • 规范化:一个低一级的范式关系模式通过模式分解转换成高级范式关系模型的集合的过程

2.4.2NF

  • R属于1NF,且每个非主属性完全依赖于任何一个候选码,则R属于2NF
  • 2NF消除的是非主属性对码的部分函数依赖

2.4.3NF

  • R属于2NF,若R中不存在这样的 码X,属性组Y,非主属性Z(Z不属于Y)。使得X->Y,Y->Z成立。则符合3NF
  • 3NF消除非主属性对码的传递依赖

2.4.BCNF

  • BCNF消除主属性对码的部份依赖和传递依赖

2.5.多值依赖

  • 多值依赖:BCNF解决的问题都是函数范畴内,但仍然存在数据冗余以及增删改的不方便问题。
  • 特性:
    • 对称性
    • 传递性
    • 函数依赖可以看作多值依赖的特殊情况
  • 多值依赖的解决要靠4NF

3.数据依赖的公理系统(Armstrong)

  • Armstrong公理系统的推理规则:
    • 自反律
    • 增广律
    • 传递律
  • 根据以上规则,可以继续推出:
    • 合并规则:由X->Y,X->Y,有X->YZ
    • 伪传递规则:由X->Y,WY->Z,有XW->Z
    • 分解规则:由X->Y,Z属于Y,有X->Z
  • Armstrong公理系统是有效的,完备的
    • 有效:由F触发根据公里推导出来的每一个函数依赖一定在F+中
    • 完备:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来
  • 闭包问题

零碎:

1.存储过程

  • 优点:
    • 存储过程不像sql语句那样再提出请求时才语法分析和优化,所以高效率
    • 存储过程降低了客户机和服务器的通信量
    • 方便实施企业规则
create or replace procedure <过程名>(参数)
AS
<过程化sql块>

2.事务

  • 事务:用户定义的一个数据库操作序列,这些操作要么全做,要么全部做
  • commit:提交事务
  • rollback:回滚,撤销到事务开始阶段
  • 事务的特性:ACID
    • 原子性
    • 一致性
    • 隔离性
    • 持续性
  • 事务故障类型:
    • 事务内部故障:大多是非预期的,不可由应用程序处理
    • 系统故障:指造成系统停止运转的任何事件,需要重新启动
    • 介质故障
    • 计算机病毒
  • 各类故障对数据库的影响有两种可能性
    • 数据库本身被破坏
    • 数据异常
  • 恢复的原理也很简单:冗余

3.日志

  • 记录事务对数据库的更新操作文件,包括:
    • 开始标记
    • 结束标记
    • 更新操作
  • 登记日志文件,原则:
    • 登记的次序严格按照并发事务执行的时间次序
    • 必须先写日志文件,后写数据库

4.并发控制

  • 交叉并发方式:在单处理机系统中,事物的并发执行实际上是这些并行事务的并行操作轮流交叉运行(实际还是串行)
  • 同时并发方式:在多处理机系统中,可以实现多个事务真正的并行运行
  • 事务是并发控制的基本单位
  • 并发操作带来的数据不一致保活:
    • 丢师修改
    • 不可重复读
    • 读脏数据(读到不正确的数据)
    • 以上错误的原因:并发操作破坏了事务的隔离性
  • 控制并发的主要技术:
    • 封锁
    • 时间戳
    • 乐观控制
    • 多版本并发控制

封锁

  • 基本的封锁类型:
    • 排他锁X锁(写锁)
    • 共享锁S锁(读锁)
  • 只存在多事务 同时用S锁对数据上锁,是可以同时进行,其他的组合方式都会被拒绝。
  • 封锁协议:在对数据对象加锁时,还需要规则,例如:
    • 何时申请锁
    • 持锁时间
    • 何时释放
  • 封锁协议的类型
    • 一级封锁协议
    • 事务T在修改数据R之前必须对其加X锁,直至事务结束才能释放
    • 一级封锁协议可防止丢失修改,保证事务T是可恢复的
    • 在一级封锁协议中,读数据是不需要加锁的,所以她不能保证可重复读,不读脏数据
    • 二级封锁协议
    • 在一级封锁的基础上增加事务T在读取数据R之前必须加S锁,读完后释放S锁
    • 防止读脏
    • 三级封锁协议
    • 在一级封锁协议的基础上增加事务T在读取数据之前R必须先对其加S,事务结束再释放
    • 做到了防止重复读
    • 该三级协议的主要区别在于 什么时候申请封锁,什么时候释放锁

活锁

  • 封锁是可能导致产生操作系统中的异常状态的
  • 活锁:某个事务的请求永远得不到处理,资源被抢占
  • 解决方法:采用FIFO

死锁

  • 死锁:互相等待的状况
  • 死锁预防:
    • 一次封锁法:要求每个事务必须一次将所有要用的数据全部加锁
    • 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁
    • 成本太高
  • 死锁的诊断与解除
    • 超时法:设定时长,解锁
    • 短了可能误判,长了可能没用
    • 等待图法:不可产生回路,即可解决

数据库 (二)

关系数据库

1.关系数据结构以及形式化定义

1.1.关系

  • 域:一组具有相同数据类型的值的集合
  • 笛卡尔积:域的一种集合运算(相乘)
  • 候选码:某一属性组的值能唯一的标识一个元组(其子集不同)
  • 主码:选一个候选码
  • 主属性:候选码中的每一个属性
  • 全码:关系模式的所有属性是这个关系模式的候选码(无非主属性)

1.2.关系模式

  • R(U,D,DOM,F)
  • R:关系名,U:组成该关系的属性名集合,DOM:属性向域的影响集合,F:函数依赖

2.关系操作

  • 基本操作:选择、投影、并、差、笛卡尔积

3.关系的完整性

3.1.实体完整性

  • 以主码为唯一标识符
  • 主码属性不为空

3.2.参照完整性

  • 外码与主码间的引用规则

3.3.用户定义的完整性

4.关系代数

  • 选择 投影Π 连接 除运算
  • 自然连接:会去掉重复的属性列,特殊的等值连接

关系数据库标准语言SQL

1.SQL特点

  • 综合统一
  • 高度非过程化
  • 面向集合的操作方式
  • 一种语法结构提供多种使用法师
  • 支持数据库三级模式结构(通过视图模式实现)

2.数据定义

操作对象 创建 删除 修改
模式 create schema drop schema
create table drop table alter table
视图 create view drop view
索引 create index drop index alter index

2.1.模式定义与删除

create schema <模式名>authorization<用户名>[<表定义子句>|<试图定义子句>|<授权定义子句>]
  • 不指定模式名的话,隐含为用户名
drop schema <模式名><cascade|restrict>
  • cascade:级联 restict:限制

2.2.表的各种操作

2.2.1.创建基本表

create table<表名>(<列名><数据类型>[列级完整性约束条件]
                        ······
                [,<表级完整性约束条件>])

2.2.2.修改基本表

Alter Table <表名>                                    //列级操作
[add [column]<新列名><数据类型>[完整性约束]]            //增
[add <表级完整性约束>]                                 //增
[drop [column]<列名>[cascade|restrict] ]              //删
[drop constraint<完整性约束名>[cascade|restrict]]      //删
[alter column<列名><数据类型>]                         //改

2.2.3.删除基本表

drop table <表名>

2.3.索引操作

2.3.1.建立索引

create [unique][cluster] index<索引名>
on<表名>(<列名>[<次序>],······)

2.3.2.修改 删除索引

alter index<旧索引表> rename to <新索引明>
drop index <索引名>

3.数据类型(Mysql)

3.1.Text 类型:

CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。 注释:如果值的长度大于 255,则被转换为 TEXT 类型。
TINYTEXT 存放最大长度为 255 个字符的字符串。
TEXT 存放最大长度为 65,535 个字符的字符串。
BLOB 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值:ENUM(‘X’,’Y’,’Z’)
SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

3.2.Number 类型:

数据类型 描述
TINYINT(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
SMALLINT(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。

* 这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。

3.3.Date 类型:

数据类型 描述
DATE() 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC
TIME() 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR() 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

4.数据查询

select [all | distinct] <目标列表达式>···
from <表名或视图>,··· as <别名>
where <条件表达式>
group by <列名1>[having<表达式> ]
order by <列明2>[desc|asc]
where条件 谓词
确定范围 between and,not between and
确定集合 in,not in
字符匹配 like,not like %aa%注意百分号的使用 ‘_’表示数量
空值 is null,is not null

4.1.聚集函数

  • 只能作用于select子句和group by 中的having子句
  • 聚集函数遇到空值时,除了count(*)外,都跳过nulls
count(*)                        //统计行数
count([distinct|all] <列名>)    
sum([distinct|all] <列名>)       //值求和
avg([distinct|all] <列名>)       //值求平均
max([distinct|all] <列名>)       //最大
min([distinct|all] <列名>)       //最小

4.2.连接查询

  • where连接

4.2.1.自身连接

  • 要为自身连接的表取两个别名
select a.cno,b.cno
from course a,course b
where a.cpno=b.cno
  • 外连接
    • 左外保留左边的所有,右置null
select *
from a left outer join b on(a.a=b.a)
  • 多表连接

4.3.嵌套查询

  • 查询块:select-from-where
  • 将查询块作为一个查询中的where中,为嵌套查询
  • 注意 IN(多值) 和 = 的使用
  • 子查询中不可用 order by,必须放在最终查询中
select * 
from a 
where a IN (
    select a
    from b
)
  • 有些嵌套查询可以用连接运算代替(不相关子查询)
  • 相关子查询/不相关子查询,取决于子查询是否受父查询影响
  • 子查询结果为单值时,可用 > any <any !=any IN ;

4.3.1.带有EXISTS谓词的子查询

  • exists 的子查询不返回数据,返回true,false
  • 存在 not exists的用法
select *
from a 
where EXISTS (
    select *
    from b
)

5.数据更新

5.1.插入数据

5.1.1.插入元组

insert into <tableName> [<属性列1>,<属性列2>,···]
values (<常量1>,<常量2>,···)
  • 如果只给出表名,不给出属性列,意味着新元组要在所有属性列上赋值,并且次序一一对应

5.2.2.插入子查询结果

insert into <tableName> [<属性列1>,<属性列2>,···]
子查询
  • 属性列和子查询中 【select 属性列1,属性列2】要一一对应

5.2.修改数据

update <tableName>
set <列名> = <表达式>,···
[where <条件>]
  • 如果不指定 where 则表示要修改表中的所有元组

5.3.删除数据

delete from <tablename>
[where <条件>]
  • 省略where则表示删除表中所有元素,但保留表
  • delete 是对表内部的操作,不对表级单位操作

5.4.空值的判断

  • is null 和is not null 来判断
  • =null 来赋值空值

6.视图

  • 视图是从一个表或多个表切分出来的表,是一张虚表
  • 数据库中只存放视图的定义,不存放视图的数据,数据还是在原表中。
  • 可以理解为 观察角度 的不同

6.1.定义视图

create view <视图名>[<列名>,···]
as <子查询>
[with check option]  

create view stu1
as
select sno,sname
from stu
where sedpt='is'
with check option    //加入此句,表示在插入修改删除时,会自动加上sdept='is'的条件
  • 视图名后面的列名,要么全部写出,要么全部忽略,默认select中的属性。不存在列出部分列名情况
  • 行列子集视图:如果一个视图是从一个基本表中导出的,并去掉了某些行列,但保留了主码。
  • 分组视图:带有聚集函数和group by子句的子句的查询来定义视图

6.2.删除视图

Drop view <视图名> [cascade]
  • cascade表示删除由该视图衍生出的子视图
  • 删除基本表后,由该产生的视图无法使用,但需要调用该语句,才能删除视图定义

6.3.更新/查询视图

  • 视图消解:从数据字典取出视图定义,处理视图,转换成对基本表的查询,再执行修正了的查询
  • 因为视图是不存储数据的虚表,所以对视图的各种操作,都要转为对基本表的操作,即视图消解

6.4.视图的作用

  • 简化用户操作
  • 使用户多角度看待同一数据
  • 为重构数据库提供了一定程度的逻辑独立性
  • 可以提供安全保护
  • 可以更清楚的表达查询

计算机网络 应用层

1.域名系统DNS

1.1.域名系统概述

  • DNS:命名系统,给IP起名字
  • 级别最低的域名写左边,级别最高的域名写右边
  • 域名只是一个逻辑概念

2.文件传送协议

2.1.FTP

  • 文件传送协议FTP:最广泛的文件传送协议
  • FTP使用C/S模式

2.2.TFTP

  • 简单文件传送协议TFTP:属于TCP/IP协议簇
  • 很小且易于实现
  • 支持文件传输,不支持交互

3.远程终端协议TELNET

  • 终端仿真协议
  • 即远程控制

4.万维网WWW

  • 主动地按需获取丰富的信息
  • 是一个信息储藏所
  • C/S模式
  • 为了方便找到所需的信息,提出了URL
    • 统一资源定位符,唯一标识符
    • 协议://主机:端口/路径
  • 为了保证客户与服务器之间的交互规则,提出了HTTP
    • 超文本传送协议HTTP
    • 无状态协议,不记录cs之间的信息
    • 有两种报文:请求报文,响应报文
      • 开始行
      • 首部行
      • 实体主体
    • 超文本标记语言HTML

5.电子邮件

  • 两个标准:
    • SMTP简单邮件传送协议
    • 互联网文本报文格式
  • 电子邮件组成:
    • 用户代理UA
    • 用户和电子邮件系统的接口
    • 邮件服务器
    • 发送协议SMTP,读取协议POP3
    • POP3是邮局协议

计算机网络 运输层

1.运输层协议概述

1.1.进程之间的通信

  • 运输层向它上面的应用层提供通信服务,属于面向通信部份的最高层
  • IP数据报能指明 通信的两端是主机,但真正通信的实体是在主机中的进程。
  • 端对端的通信实质上是进程间的通信
  • 运输层一个很重要的功能
    • 复用:不同的应用进程都可以使用同一个运输层协议传输数据
    • 分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的进程
  • 网络层与运输层的区别
    • 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端对端的逻辑通信
    • 网络层只对首部差错检验,运输层要对报文进行差错检测
  • 运输层需要面向连接的TCP协议,无连接的UDP协议
  • 运输层为高层用户屏蔽了下面的网络核心细节
  • 采用TCP时,尽管下面的网络不可靠,但逻辑通信相当于一条全双工的可靠信道。
  • 采用UDP时,逻辑通信仍是不可靠的

1.2.运输层的两个主要协议

  • 用户数据报协议UDP
    • 不需要先建立连接
    • 虽然不提供可靠交付,但很有效
  • 传输控制协议TCP
    • 面向连接的服务
    • 可靠交付
    • 开销大

1.3.运输层端口

  • 在协议栈层间的抽象的协议端口是软件端口
  • 软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址
  • TCP/IP使用16位的端口号
  • 端口号只具有本地意义,标志的是本机中的进程。
  • 不同主机相同进程号是没有关联的
  • 端口号分类
    • 服务端使用的端口号
    • 熟知端口号(系统端口号):0-1023
      • 21:FTP
      • 23:TELNET
      • 25:SMTP
      • 53:DNS
      • 69:TFTP
      • 80:HTTP
      • 161:SNMP
      • 162:SNMP(TRAP)
      • 443:HTTPS
    • 登记端口号:1024-49151
    • 客户端使用的端口号:49152-65535
    • 短暂端口号,通信结束后就注销,供给其他进程使用

2.用户数据报协议UDP

2.1.概述

  • 无连接的:所以不需要使用套接字建立连接,TCP需要两个套接字
  • 不保证可靠交付
  • 面向报文:保留边界(不分片,IP处理)
  • 没有拥塞控制
  • 支持一对一,一对多,多对一,多对多
  • 首部开销小,8字节

2.2.首部格式

  • 总共8个字节,4个字段,一个2字节
  • 源端口:需要对方回信时选用,不用则0
  • 目的端口
  • 长度:用户数据报长度,最小8字节(只有首部)
  • 检验和:全检验,首部——数据

3.传输控制协议TCP

3.1.主要特点

  • 面向连接
  • 每条TCP连接只能有两个端点:点对点
  • 可靠交付
  • 全双工
  • 面向字节流
  • TCP可以划分片,再传给IP

3.2.TCP连接

  • TCP把连接作为最基本的抽象

  • TCP所谓的点对点叫做:套接字socket:(IP地址:端口号)

  • 每一条TCP连接唯一的被通信两端点确定

3.3.可靠传输工作原理

  • 理想的传输条件的特点:
    • 传输信道不产生差错
    • 不管发送方的速度多少,接收方总能处理

3.3.1.停止等待协议

  • 即发送完一个分组就停止,等待对方确认
  • 出现差错时:
    • 超时重传:发送方过了一段时间未收到确认信息,就认为信息丢失,重传。超时计时器
    • 发送方在发送完一个分组后,必须暂时保留已发送的副本
    • 分组和确认分组都要编号
    • 超时计时器的时间应该比数据在分组传输的品军防范时间更长一些
  • 确认丢失和确认迟到
    • 假设接收方在发送 确认信号后 ,再次收到了相同编号的数据报,要采取两个动作
    • 丢弃这个重复分组
    • 向A发送确认
  • 通过以上这些,就可以在不可靠的传输网络实现可靠的通信,称之为自动重传请求ARQ
  • 信道利用率:发送时长/(发送市场+往返市场+接收方发送确认信号的时长)

3.4.连续ARQ协议

  • 即 流水线传输
  • 发送窗口(多个)
  • 接收方采用累计确认
  • 实现容易,但不能向发送方反映出接收方已经正确收到的所有分组的信息(中间出错,中间后面的需要全部重传)

3.5.TCP报文段的首部格式

  • 固定20字节
  • 源端口和目的端口 : 各占2字节
  • 序号:4字节,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号
  • 确认号:期望收到对方下一个报文段的第一个数据字节的序号
    • 若确认号为N,则表示N-1为止的所有数据都以正确接收
  • 数据偏移:4位,指出TCP报文段的首部长度。
    • 数据偏移的单位是32位字,即4字节,4位能表示的最大数为15,则首部最大长度为60字节
  • 保留:6位。今后使用
  • ———–下面为6个控制位———-
  • 紧急URG:1有效,表明优先级高,优先传输。要配合首部中的紧急指针使用
  • 确认ACK:1有效,TCP规定,连接后,所有传送报文段都必须置1
  • 推送PSH:当发送方需要立即回复时,可以PSH置1
  • 复位RST:1表示TCP连接中出现严重差错,必须释放连接,重置
  • 同步SYN:SYN为1,ACK为0时表示这是一个连接请求报文,若对方同意,则在响应的报文段中使得两个都为1,表示这是一个连续请求报文
  • 终止FIN:1表示发送完毕,并释放连接
  • ———控制位结束———————-
  • 窗口:占2字节,接收窗口(而不是发送窗口)。窗口值作为接收方让发送方设置其发送窗口的依据(动态变化)
  • 校验和:2字节,全校验
  • 紧急指针:2字节,仅在URG置1时有意义,指出了紧急数据的位置
    • 即使窗口为0,也可以发送紧急数据
  • 选项:长度可变,40字节(扩展首部)
    • 最大报文段长度MSS:每一个TCP报文段中的数据字段(不包括首部)的最大长度、
    • ······

3.6.TCP可靠传输的实现

3.6.1.以字节为单位的滑动窗口

3.6.2.超时重传时间RTO的选择

  • RTT:报文段的往返时间
  • RTTS:加权平均往返
  • RTO略大于RTTs
  • 如果报文重传的,就不采用其往返时间作为样本(防止影响RTTs)

3.6.3.选择确认SACK

3.7.TCP流量控制

3.7.1.利用滑动窗口实现流量控制

  • 流量控制:让发送方的发送速率不要太快,接收方要来得及接收
  • 发送方决定接收方窗口
  • TCP窗口单位是字节,不是报文段
  • 会产生死锁,解决:
    • TCP会为每一个连接设有一个持续计时器
    • 会发送零窗口探测报文段

3.8.TCP的拥塞控制

  • 需求>可用
  • 拥塞控制:防止过多的数据注入到网络中,防止过载。
    • 这是一个全局性的过程
  • 流量控制往往是点对点通信量的控制,端对端的问题

3.8.1.TCP拥塞控制方法

  • 方法:
    • 慢开始
    • 拥塞避免
    • 快重传
    • 快恢复
  • 慢开始和拥塞避免
    • 基于窗口的控制,拥塞窗口
    • 原则:只要网络没有出现拥塞,拥塞窗口就可以在增大一些。但只要出现拥塞或者可能出现拥塞,就要减小
    • 判断拥塞的依据:是否超时
    • 慢开始:每经过一个传输轮次,拥塞窗口cwnd就翻倍。2的指数增长
    • 为防止 慢开始 的过度增长,设置一个 慢开始门限ssthresh,达到ssthresh后就执行拥塞避免
    • 拥塞避免:每经过一个传输轮次,拥塞窗口cwnd就+1
    • 当随着窗口增多,出现超时(严重),将ssthresh设置为原来的一半,窗口数从1开始,慢开始增长
  • 快重传和快恢复
    • 当随着窗口增多,出现三次ACK确认未回复( 信息丢失,可能不是拥塞,不严重),执行快重传和快恢复
    • 快重传:收到三个相同的重复确认,立刻重传该报文。并进行快恢复
    • 快恢复:将ssthresh减半,拥塞避免增长,(+1增长)

3.9.TCP的运输连接管理

  • 运输连接有三个阶段:连接建立,数据传输,连接释放

  • TCP连接建立过程中要解决三个问题:

    • 每一方能明确知道对方的存在
    • 允许双方协商参数
    • 资源分配
  • TCP建立的访问方式:C/S

3.9.1.TCP的连接建立

  • 握手:TCP建立连接的过程。要交换三个TCP报文段。
  • !三报文握手表示:一次握手。不是三次握手!
  • 一次握手(三报文握手)的过程:
    • A—>B
    • A创建传输控制模块TCB,向B发送请求,SYN=1,初始序号seq=x。
    • TCP规定,该报文段不可携带数据,但要消耗一个序号
    • B收到后,同意连接,向A发送确认,SYN=1,ACK=1,ack=x+1,也为自己选择一个初始序号seq=y
    • TCP规定,该报文段不可携带数据,但要消耗一个序号
    • 这时TCP进程进入SYN-RCVD(同步收到)状态
    • A收到确认后,还要再给B发出确认。ACK=1,ack=y+1,seq=x+1
    • TCP规定,该报文段可以携带数据,如果不携带,则不消耗序号,下一个数据报文段的序号仍是seq=x+1
    • 最后这次确认是为了,防止已失效的连接请求报文突然又传送到了B,产生错误

3.9.2.TCP的连接释放

  • 过程:
    • 双方都可主动释放连接
    • A向TCP发出连接释放报文段,FIN=1,seq=u.
    • A进入FIN-WAIT-1状态,等待B的确认,FIN会消耗序号
    • B收到后发送确认,ack=u+1,seq=v
    • B进入了CLOSE-WAIT关闭等待状态
    • TCP服务器通知高层,连接释放了,此时TCP的连接属于半关闭,A不可发送数据,但B向A发,A还是要收
    • 若B没有需要发送的数据,就通知TCP释放连接
    • B发送报文:FIN=1,seq=w,ack=u+1
    • B进入了Last-ack最后确认,等待A确认
    • A收到后,发出确认,ACK=1,ack=W+1,seq=u+1
    • 到现在,TCP也释放,进入TIME-WAit状态。必须经过 时间等待计时器的时间2MSL A才进入Closed状态
    • MSL:最长报文寿命
    • 这是为了保证A发送的最后一个ACK报文段能到达B
    • 以上为四报文握手

计算机网络 网络层

1.网络层提供的两种服务

  • 互联网采用的设计思路:网络层向上只提供无连接的,简单灵活的,尽最大可能交付的数据报服务
  • 不提供服务质量承诺
  • TCP/IP体系的网络层提供的是数据报服务

2.网际协议IP

  • 与IP配套使用的协议
    • 地址解析协议ARP
    • 网际控制报文协议ICMP
    • 网际组管理协议IGMP

2.1.虚拟互连网络(逻辑互连)

  • 没有一种单一的网络能满足所有用户的需求
  • 互连网络的中间设备
    • 物理层:转发器
    • 数据链路层:网桥
    • 网络层:路由器
    • 网络层以上:网关
  • 互联网可以由多种异构网络互相构成

2.2.分类的IP地址

2.2.1.IP地址及其表示方法

  • IP地址是唯一的32位的网络标识符,在整个互联网范围内是一致的
  • IP地址编址方法经过了三个阶段
    • 分类IP地址
    • 子网的划分
    • 构成超网(网络号)
  • IP地址= 网络号+主机号 共32位
  • 地址类别
    • A类:开头0 网络号共8位
    • B类:开头10 网络号共16位
    • C类:开头110 网络号共24位
    • D类:开头1110 多播地址

2.2.2.常用的三类别IP地址(ABC)

  • 分割地址为:128和192
  • IP地址特点
    • 网络号+主机号 共32位
    • 路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的主机号),见笑了路由表所占的存储空间以及查询路由表的时间
    • 实际上IP地址时表示一台主机和一条链路的接口
    • 用转发器或者网桥丽娜姐起来的若干个局域网仍为一个网络
    • 对等连接
    • 全0全1不可做为主机号

2.3.IP地址与硬件地址

  • MAC是数据链路和物理层使用的地址
  • IP地址是网络层和以上使用的地址,是一种逻辑地址
  • 两者一些区别
    • 在IP层抽象的互联网上只能看到IP数据报
    • 虽然IP数据报首部有源站IP地址,但路由器只能根据目的站的IP地址的网络号进行路由选择
    • 在局域网的链路层,只能看见MAC帧
    • IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能偶使用IP地址研究主机或路由器之间的通信

2.4.ARP地址解析协议

  • 由于IP协议使用了ARP协议,因此通常把ARP协议规划到网络层
  • 网络层使用IP地址,但在实际网络的链路上传输数据帧时,最后还是必须使用MAC地址
  • ARP通过在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表经常动态更新 实现了IP转MAC
  • ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题

2.5.IP数据报的格式

  • 首部和数据两部分组成
  • 首部的前一部分是固定长度20字节
  • 路由表中最主要的信息:目的网络地址,下一跳地址

2.5.1.IP数据报首部的固定部分

  • 版本:4位
  • 首部长度:4位。由于 首部(固定部分+可选部分),固定部分20字节的存在,所以首部长度最小为5,0101。
  • 区分服务:8位
  • 总长度:16位,首部和数据之和的长度
  • 标识:16位,因为ip是无连接服务
  • 标志:3位,但目前只有2位有意义
    • MF:1表示后面“还有分片”,0表示这是最后一个
    • DF:表示不能分片,为0时才允许分片
  • 片偏移:13位。指出某片在原分组中的相对位置。片偏移以8个字节为偏移单位,除了最后一个数据报片外,每个分片的长度一定是8字节的整数倍
  • 生存时间:8位。TTL值随着时间减少
  • 首部校验和:16位。只检验首部,不包括数据部分
  • 源地址:32位
  • 目的地址:32位

3.划分子网和构成超网

3.1.划分子网

  • 从现在来看,IP的设计不够合理
    • ip地址空间利用率有时很低
    • 路由表填充会变得太大降低性能
    • 二级IP不够灵活
  • 解决方案:划分子网
    • 划分子网纯属一个单位内部的事情,对外表现还是一个网络
    • 划分子网是在划分主机号部分的高位作为子网号
    • 此时:IP地址:网络号,子网号,主机号

3.2.子网掩码

  • IP数据报的首部是无法看出所连接的网络是否进行了子网划分,为了处理这种情况,提出了 子网掩码
  • 将子网掩码和目的IP地址做“与”运算,就可得到子网络地址
  • A类地址默认的子网掩码:255.0.0.0
  • B类地址默认的子网掩码:255.255.0.0
  • C类地址默认的子网掩码:255.255.255.0

3.3.使用子网分组转发

  • 划分子网增加了灵活性,但减少了可连接的主机数
  • 使用子网划分后,路由表要包含:目的网络地址、子网掩码、下一跳地址

3.4.无分类编制CIDR(构成超网)

3.4.1.网络前缀

  • CIDR无分类网络域间路由
  • CIDR的特点:
    • 消除了传统ABC类地址以及划分子网的概念
    • IP地址:网络前缀,主机号
    • 网络前缀相同的IP地址组成一个CIDR地址块
  • 路由聚合:一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络,这类地址的聚合称为路由聚合
  • 网络前缀越短,其地址块所包含的地址数就越多

3.4.2.最长前缀匹配

  • 在查询路由表时(做与运算),很可能得到不止一个匹配结果,这是应选择具有最长网络前缀的路由。(选择更精确的)

4.网际控制报文协议ICMP

  • ICMP允许主机或者路由器报告差错情况和有关异常情况的报告
  • ICMP封装在IP数据报中,作为数据部分,是IP层的协议,所以不是高层协议

4.1.ICMP报文的种类

  • 差错报告报文
    • 终点不可达
    • 时间超过
    • 参数问题
    • 改变路由(重定向)
  • 询问报告报文
    • 回送请求和回答:目的站是否可达等有关情况
    • 时间戳请求和回答:时间同步,时间测量
  • Ping使用了回送请求和回送回答报文,没有通过运输层的TCP和UDP

5.互联网路由选择协议

  • 从某角度来讲,只分为:静态路由和动态路由
  • 静态路由:非自适应路由选择,人工配置每条路由,简单,开销小
  • 动态路由:较好的适应网络状态的变化,复杂,大网络

5.1.自治系统

  • 自治系统AS:在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量。一个AS对其他AS表现为一个单一的和一致的路由选择策略
  • 互联网把路由选择协议分为两大类:
    • IGP内部网关协议(域内路由选择):一个自治系统内部使用的路由选择协议
    • RIP、OSPF······
    • EGP外部网关协议(域间路由选择):数据报传到一个自治系统的边界时,需要一种协议将路由选择信息传递到另一个自治系统中。
    • BGP

5.2.内部网关协议RIP

  • 路由信息协议RIP
  • 基于距离向量的路由选择协议,简单(经过的路由器数+1)
  • 只能包含一条路径15个路由器
  • RIP认为最优路线就是路径最短的路线
  • 到目的网络N,距离d,吓一跳路由器是X
  • 特点:
    • 仅和相邻路由器交换信息
    • 路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表
    • 按固定的时间间隔交换路由信息
    • 到相同的目的网络,下一跳地址是相同的,则取最新消息
    • 到相同的目的网络。但下一跳地址不相同,则取最短的那条
  • 好消息传得快,坏消息传得慢
  • 实现简单,开销较少
  • RIP使用UDP进行传送

5.3.1.RIP协议的报文格式

  • 首部+路由部分
  • 首部
    • 4个字节,命令字段指出报文的意义,后面补零对齐
  • 路由部分
    • 每个路由信息要20个字节,最多25个路由,所以RIP长度最大504字节

5.3.内部网关协议OSPF

5.3.1.开放最短路径协议OSPF的基本特点

  • 是公开发表的
  • 分布式的链路状态协议(RIP是距离向量)
  • 向本自治系统中所有路由器发送信息。
  • 发送的消息就是相邻的所有路由器的链路状态,即 部分信息
  • 只有当链路状态发生变化时,路由器才向所有路由器发送此信息(RIP)
  • 由于个路由器交换链路状态,最终所有的路由器会建立一个链路状态数据库,即 全网的拓扑结构图(RIP只知道如何跳,却不知道全网的拓扑图)
  • 最大的优点:更新过程收敛的快
  • 不用UDP传送,而是IP数据报传送
  • OSPF允许管理员给每条路由指派不同的代价。(链路的重要性等级)
  • 负载平衡:相同代价的路径,可以多路分配,
  • 存在鉴别功能,保证了仅在可信赖的路由器之间交换链路状态信息
  • 也支持CIDR

5.3.2.OSPF的五种分组类型

  • 问候:发现和维持邻站的可达性
  • 数据库描述:给邻站自己的链路状态摘要信息
  • 链路状态请求:向对方请求某些链路状态详细信息
  • 链路状态更新:最核心的部分。洪泛式对全网更新状态
  • 链路状态确认:更新的确认

5.4.外部网关BGP

  • 边界网关协议BGP
  • 并非要寻找一条最佳路由,而是要一条能够达到且比较好的选择
  • 采用路径向量路由选择协议,与RIP,OSPF都不相同
  • 大致流程
    • 每个AS(自治系统)选择至少一个路由器作为BGP发言人,发言人与其他AS的发言人交换信息
    • 建立TCP连接,形成对等站
    • 建立BGP会话

5.5.路由器

  • 具有多个输入端口和输出端口、负责分组转发

5.5.1.路由器构成

  • 路由选择
    • 控制部分。核心构件是路由选择处理机
  • 分组转发
    • 交换结构:又称交换组织,根据转发表分组处理
    • 交换方式:存储器,总线,互联网络
    • 输入端口:
    • 输出端口:

6.IPv6

6.1.IPv6的基本首部

  • 支持无连接的传送,但将协议数据单元PDU成为分组,而不是IPv4的数据报
  • 特点
    • 更大的地址空间:128位
    • 扩展的地址层次结构
    • 灵活的首部格式
    • 改进的选项:允许数据报包含有选项的控制信息,但IPv6的首部长度是固定的
    • 允许协议继续扩充
    • 自动配置:不需要DHCP
    • 支持资源的预分配
    • 首部8字节对齐:即首部长度必须是8字节的整数倍
  • 组成:基本首部、有效载荷(净负荷)
    • 有效载荷允许有多个扩展首部,再后面是数据比分,所有扩展首部不属于IPv6的首部
  • 首部长度固定,40字节,所以取消了首部长度字段
  • 字段:
    • 版本:4位
    • 通信量类:8位,区分不同的IPv6数据报的类型
    • 流标号:20位 流分配 对于音频视频很有用,传统的电子邮件和非实时数据则可以不用,置0
    • 有效载荷长度:16位
    • 下一个首部:8位
    • 跳数限制:8位 防止无限存在
    • 源地址:128位
    • 目的地址:128位
  • IPv6将选项的功能放在拓展首部中,处理交给源点和终点,途中路由不处理,大大提高了处理效率。IPv4则相反

6.2.IPv6的地址

  • IPv6目的地址类型:
    • 单播:点对点
    • 多播:一对多
    • 任播:IPv6新增,任播的终点是一组计算机,数据报只交付其中一个
  • IPv6采用冒号十六进制记法
    • 允许 0压缩

7.虚拟专用网VPN和网络地址转换NAT

7.1.VPN

  • 在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
  • VPN在效果上与专用网(本地地址的概念)一致

7.2.NAT

  • 使用本地地址的主机和外界通信时,都要在NAT路由器上将本地地址转换成全球IP地址
  • 通过NAT路由器的通信必须由专用网内的主机发起
  • 使用端口号的NAT也叫做NAPT网络地址和端口号转换

数据库

1.绪论

1.1.数据库系统概述

  • 数据:描述事物的符号记录
  • 数据库系统DBS的组成:数据库,数据库管理系统,应用程序,数据库管理员

1.1.1.数据管理技术的产生与发展

  • 三个阶段:人工管理、文件系统、数据库系统
    • 特性:
    • 数据是否保存
    • 谁来管理数据
    • 数据是否共享
    • 数据是否独立

1.1.2.数据库系统的特点

  • 数据结构化:整体结构化,不单单针对于某一个应用
  • 数据的共享型高、冗余度低且容易扩充
  • 数据独立性高:针对于用户程序和数据库数据的关系而言的
    • 数据独立性
    • 物理独立性
    • 逻辑独立性
  • 数据有数据库管理系统统一管理和控制:
    • 数据安全性
    • 数据完整性
    • 并发控制
    • 数据库恢复

1.1.3.小结

  • 数据库是长期存储在计算机能的数据集合。
  • 具有共享,最小冗余以及较高的数据独立型
  • 数据库管理系统统一管理数据库,保证数据完整性,安全性,并发控制,恢复操作
  • 数据库系统的出现使信息系统产品从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段

1.2.数据模型

  • 数据模型:现实世界数据特征的抽象。是数据库系统的核心与基础。

1.2.1.两类数据模型

  • 概念模型(信息模型):用于数据库设计
  • 逻辑模型和物理模型:用于数据库管理系统的实现

1.2.2.概念模型

  • 信息世界包含:实体、属性、码、实体类型、实体集合、联系
  • 表示方法:E-R模型(Element —Relationship)

1.2.3.数据模型

  • 组成:数据结构、数据操作、数据完整性约束
    • 数据结构:组成对象以及对象之间的联系

1.2.4.常用的数据模型

  • 层次模型
    • 结构简单清晰
    • 查询效率高
    • 完整性支持
    • 但与现实并不相符
  • 网状模型
  • *关系模型
  • 面向对象数据模型
  • 对象关系数据模型
  • 半结构化数据模型

1.2.5.关系模型

1.2.5.1.数据结构

  • 关系:二维表
  • 元组:一行或者一个实例
  • 属性:一列或者一个属性
  • 码:key
  • 分量
  • 关系模式

1.2.5.2.优缺点

  • 建立在严格的数学基础上
  • 概念单一。实体以及实体的联系都用关系表示
  • 存储路径对用户透明,从而具有了更高的数据独立性,保密安全性
  • 增加了开发难度,查询效率不如格式化数据模型

1.3.数据库系统的结构

1.3.1.数据库系统的三级模式结构

  • 组成:模式,外模式,内模式 sql中是视图模式的概念
  • 模式
    • 又称逻辑模式
    • 一个数据库只有一个模式
  • 外模式
    • 子模式,用户模式
    • 数据库用户的数据视图
    • 一个数据库可以有多个外模式
    • 一对多(应用)
  • 内模式
    • 存储模式
    • 一个数据库只有一个内模式
    • 数据物理结构和存储方式的描述

计算机网络 数据链路层

1.使用点对点信道的数据链路层

1.1.数据链路和帧

  • 链路:一个节点到相邻节点的一段物理线路
  • 数据链路:链路+协议的硬件和软件(网络适配器来实现协议)
  • 早期的数据通信协议层叫做通信规程
  • 数据链路层的协议数据单元——帧
  • 点对点信道的数据链路层通信步骤:
    1. 将网络层交下来的ip数据报添加首部和尾部封装成帧
    2. 发送到另一节点的数据链路层
    3. 检错(上交或丢弃)

1.2.三个基本问题:封装成帧、透明传输、差错检测

1.2.1.封装成帧

  • 所有在互联网上传送的数据都以ip数据包报为传送单位
  • 在帧的数据部分添加首部和尾部,构成完整的帧
  • 首尾部作用:帧定界

1.2.2.透明传输

  • 字符填充、字节填充

  • 控制字符:SOH(首)、EOT(尾)

  • 转义字符:ESC

1.2.3.差错检测

  • 比特差错:1变0,0变1
    • 误码率BER:传输错误的比特占传输比特总数的比率
    • 循环冗余检验CRC
    • 帧检验序列FCS:为了检错而添加的冗余码
    • 数据链路层不提供可靠传输(只检不修)
  • 传输差错:帧丢失、帧重复、帧失序
    • 解决方式:帧编号、确认、重传机制
  • 对于通信质量良好的有线传输链路,数据链路层协议不使用用确认和重传
  • 对于通信质量不好的无线传输链路,数据链路层协议使用用确认和重传

2.点对点协议PPP

2.1.PPP应满足的需求

  • 简单、封装成帧、透明、多层网络协议、多种类型链路、差错检测······
  • 多层网络协议:同一条物理链路上同时支持多种网络层协议的运行

2.2.PPP协议的组成

  • 封装IP数据报到串行链路的方法
  • 链路控制协议LCP
  • 网络控制协议NCP

2.3.PPP协议的帧格式

  • 7E表示开始或结束
  • 连续两帧之间只需要1个标志字段
  • 如果出现连续两个7E,则表示这是一个空帧,应当丢弃
  • 首部5字节 F A C 协议(2)
  • 数据部分(IP数据报)不超过1500字节
  • 尾部3字节 FCS(2) F

2.3.1.字节填充(针对信息部分)

  • 7D转为7D5D
  • 7E 转为7D5E

2.3.2.零比特填充

  • 连续出现5个1,就在后面加0

3.使用广播信道的数据链路层

3.1.局域网的数据链路层

  • 局域网的特点:网络被一个的那位所用用,且地理范围和站点数目有限
  • 共享信道在技术上有两种方法
    • 静态划分信道
    • 动态媒体介入控制(多点接入)
    • 随机接入:所有用户可随机发送信息,会产生碰撞,必须有解决碰撞的网络协议
    • 受控接入:用户不能随机的发送信息,必须服从一定的控制,轮询或者探询方式
  • 局域网的数据链路层被分为两个子层
    • 逻辑链路控制L L C
    • 媒体介入控制MAC
  • 适配器(网卡):与外界局域网的通信所需要的

3.2.CSMA/CD协议

  • 译:载波监听多点接入/碰撞检测
  • 为了通信方便,以太网采取了两种措施
    • 无连接方式:不必先建立连接就可以直接发送数据。
    • 不编号,也不要求发回确认
    • 尽最大努力交付,不可靠的交付
    • 曼彻斯特编码信号
  • 协议要点:多点接入,载波监听,碰撞检测
    • 碰撞检测时间,要考虑最坏情况,所以取往返时间或者二倍的单程时间
  • 半双工通信

3.3.集线器拓扑

  • 集线器特点:
    • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议,并在同一时刻至多只允许一个站发送数据
    • 一个集线器有多个接口
    • 集线器工作在物理层
    • 集线器本身必须非常可靠

3.4.MAC层

  • 物理地址,硬件地址,MAC层
  • 现在实际使用的都是6字节
  • 帧格式
    • 662 + (46-1500)+4
    • 目的地址,源地址,类型+数据报+FCS

3.4.1.在数据链路层拓展以太网(交换机)

3.4.1.1.以太网交换机的特点

  • 多接口网桥
  • 全双工方式
  • 并行性
  • 独占传输媒体,无碰撞的传输数据
  • 内部有交换表,通过自学习算法建立
  • 有存储器,缓存功能,存储转发
  • 也有一些交换机采用 直通,不缓存,直接转发,提高了转发速度(不检查差错)
  • 生成树协议STP:不改变网络的实际拓扑,但从逻辑上切断了某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构

3.4.2.虚拟局域网Vlan

  • vlan是局域网给用户提供的一种服务,不是新型局域网
  • vlan是用户和网络资源的逻辑组合

计算机网络 物理层

1.物理层基本概念

  • 数据在计算机内部采用并行传输,但数据在通信线路上采用串行传输

2.数据通信的基础知识

2.1.数据通信系统的模型

  • 数据通信系统划分:源系统(发),传输系统(传),目的系统(接)
    • 源系统:源点(信源)、发送器
    • 目的系统:接收器、终点
  • 信号分类:
    • 模拟信号:连续信号
    • 数字信号:离散信号
  • 码元:不同离散数值的基本波形(信息量不固定)

2.2.信道的概念

  • 通信方式:单工、半双工、全双工
  • 基带信号:来自信源的信号(未加工未处理)
  • 基带信号调制方式
    • (编码)基带调制:波形变换,仍是基带信号
    • 载波(带通调制):频率搬移,变为模拟信号,带通信号
  • 编码方式:不归零、归零、曼彻斯特(周期中心方向判定,下1上0)(自同步)、差分曼彻斯特
  • 带通调制:调幅AM,调频FM,调相PM 混合调制更佳

2.3.信道的极限容量

  • 数字通信的优点:虽然传播会失真,但最后可以处理
  • 限制码元传输速率的因素
    • 频率范围:奈氏准则:任何信道中,存在传输速率上限,(没有考虑噪声)
    • 信噪比:信号的平均功率和噪声的平均功率之比S/N
    • 香农公式:传输速率极限(考虑信噪比),信道带宽或者信噪比越大,则极限速率越高

3.物理层下的传输媒体

  • 导引型和非导引型

3.1导引型

3.1.1.双绞线

  • 双绞线:两根铜导线绞合,可减少相邻导线干扰
  • 屏蔽双绞线(STP):加一层金属套屏蔽

3.1.2.同轴电缆

  • 双绞线继续加屏蔽层

3.1.3.光缆

  • 反射传播数据
  • 多模光纤:多角度入射,会展宽,失真,适合近距离传输
  • 单模光纤:直径小,折射次数少,损耗少,贵

3.2.非导引型(无线)

  • 卫星通信:较大的传播时延

4.信道复用技术

4.1.频分,时分(同步时分复用),统计时分(异步时分复用)

  • 共享概念

  • 时分:不同时,同频宽(有利于数字信号传输)

  • 频分:同时,不频宽
  • 复用器和分用器成对使用:复用器到分用器是高速通道,分用器之后则分送降速
  • 统计时分STDM:改进的时分复用。集中器常使用(智能复用器)
    • STDM不是固定分配时隙,而是按需动态分配时隙。可提高线路的利用率

4.2.波分WDM

  • 光的频分复用
  • 光复用器和光分用器(分波器),和上面一个功能

4.3.码分CDM

  • 码分多址CDMA:同时同频,不同码型。
  • 强抗干扰
  • 比特时间在划分为m个短的间隔,称为码片(码分原理)
  • 码片的通信方式为:扩频(直接序列扩频DSSS,调频扩列FHSS)
  • 码片序列必须正交 伪随机码序列

5.宽带接入技术

5.1.非对称数字用户线(ADSL)

  • 由于采用自适应调制技术使用户线可传送尽可能高的数据率,所以ADSL不能保证固定的数据率
  • 利用电话线铺线

5.2.光纤同轴混合网(HFC网)

  • 机顶盒

5.3.光纤到户(FTTx技术)

  • 即光信号到家门口再转为电信号
  • 为了有效利用光纤资源,再干线和用户间,采用无光源网络PON