0%

基础操作(1~8 章)

1、数据库 database:保存有组织数据的容器

2、表 table:特定类型数据的结构化清单

3、行 row /record:表中的一个记录

4、主键 primary key:每一行中可以唯一标识自己的一列

  • 前提:任意两行不具有相同值、每行必须具有一个主键值

  • 习惯:主键值不更新 不重用,不在主键使用可能会更改的值

5、关键字 key word:作为一个保留字

键入

1、书写习惯

  • 命令行用分号;结尾多条语句也需用分号分割

  • 对于关键字:使用大小写均可,全用大写并分成多行,易于阅读、调试

  • 在选择多个列时,一定要在列名之间加上逗号吗,但最后一列不加

2、使用数据库: USE 数据库名

显示:SHOW 语句

  • SHOW DATABASES:显示所有数据库列表

  • SHOW TABLES:显示某个库内所有表的列表

  • SHOW COLUMNS FROM:表名显示某个库内所有列的列表

    • 快速写法:DESCRIBE 表名
  • SHOW STATUS:显示广泛的服务器信息

  • SHOW CREATE DATABASE / TABLE:显示创建的特定数据库或表表示的 Mysql 语句

  • SHOW GRANTS:显示授权用户的安全权限

  • SHOW ERRORS / WARNINGS:显示服务器的错误或警告信息

选择:SELECT 语句

  • SELECT 列名 FROM 表名:检索,输出的是未排序数据

  • SELECT * FROM 表名:检索所有列

    • 给定 * 通配符,则返回表中所有列,而且可检索出未知列;但滥用会降低效能
  • SELECT DISTINCT 列名:只返回唯一(去重)的行

  • SELECT 列名 FROM 表名 LIMIT 行数:检索指定的行数

    • SELECT 列名 FROM 表名 LIMIT 开始行 行数:检索指定从行号为第一个值的位置开始的行数
    • 替代语法:SELECT 列名 FROM 表名 LIMIT 行数 OFFSET 开始行
  • SELECT 表名。列名 FROM 表名:完全限定的列名

排序

1、子句:一个关键字和所提供的数据组成

2、ORDER BY 语句

  • SELECT 列名 FROM 表名 ORDER BY 子句名:以字母顺序排序数据的 ORDER BY 子句

  • SELECT 列名 FROM 表名 ORDER BY 子句名 1 子句名 2 ……

  • SELECT 列名 FROM 表名 ORDER BY 子句名 DESC:降序排列

  • SELECT 列名 FROM 表名 ORDER BY 子句名 1 DESC 子句名 2:子句 1 降序 2 升序

    • 即:DESC 只应用到直接位于其前面的列名
    • ASC asending:默认的情形就是升序,略
  • SELECT 列名 FROM 表名 ORDER BY 子句名 LIMIT 行数:按升序显示表中数据指定列子句的指定行数

过滤:

1、通配符 wildcard:用来匹配值的一部分特殊字符

  • Mysql 中使用通配符:LIKE 操作符指示,LIKE 是 * 谓词(predicate)

2、搜索模式:由字面值、通配符或两者组合构成的搜索条件

3、WHERE 子句

  • SELECT 列名 FROM 表名 WHERE 数据 =(<= />= / > / <) 该指定值:只返回指定值的行

  • 同时使用 ORDER BY:需要让 ORDER BY 位于 WHERE 之后

  • 不匹配检查:SELECT 列名 FROM 表名 WHERE 数据 <> 值(效果同!=)

  • 范围值检查:SELECT 列名 FROM 表名 WHERE 数据 BETWEEN 值 1 AND 值 2

  • 空值检查:SELECT 列名 FROM 表名 WHERE 数据 IS NULL

  • 多限定条件:SELECT 列名 FROM 表名 WHERE 数据 = 值 1 AND 数据 <值 2 OR 数据> 值 3

    • 优先处理 AND 操作符
  • 范围选取:SELECT 列名 FROM 表名 WHERE 数据 IN (值 1,值 2)

    • 完成与 OR 相同的功能
    • 直观易管理
    • 运行更快
    • 可包含其他 SELECT 语句,动态创建 WHERE 子句
  • 否定:SELECT 列名 FROM 表名 WHERE 数据 NOT IN (值 1,值 2) ORDER BY 子句名

    • 常用于 IN 的复杂句式中取反
  • 通配符操作:SELECT 列名 FROM 表名 WHERE 数据 LIKE ‘_字符串 %’

    • % 用于表示接受字符串后续的任意字符
      • ‘% 字符串 %’则表示任何位置的匹配
      • ‘字符串 1% 字符串 2’则表示字符串 1 开头、字符串 2 结尾的匹配
      • 注意当存在空格时, ‘% 字符串’不会匹配
      • NULL 任何情况均不会被匹配
    • _只匹配单个字符
    • 通配符的弊端:耗时较长(尤其位于起始处) 使用容易出错

应用层协议原理

网络应用程序体系结构

1、客户 - 服务器体系架构(client-server architecture)

  • 服务器主机总是打开,接收客户主机请求

  • 客户之间不相互通信

2、P2P 体系结构

  • 对数据中心的专用服务器仅有最小依赖

  • 标识:发起通信为客户,等待联系为服务器

  • 间断连接的主机间使用直接通信

    • 这样的一组主机称对等方
  • 自扩展性 self-scalability

    • 向对等方发送文件
    • 请求产生工作负载,但也为系统增加服务能力

进程通信

1、进程 process

  • def:运行在端系统的一个程序

  • 通信进程对:每对两个进程互相发送报文

  • 进程寻址的要求

    • 主机地址
    • 目的主机需指定接收进程的标识符

2、套接字 socket:向网络发送 / 接收报文的软件接口

3、应用程序编程接口 API

  • 建立网络应用程序的可编程接口

  • 运输层的控制

    • 选择运输层协议
    • 部分运输层参数

可供应用程序使用的运输服务

1、可靠数据传输:正确、完全地交付数据

2、吞吐量

  • 带宽敏感 / 弹性应用

3、定时保证

  • 交互式实时应用

4、安全性

因特网提供的运输服务

1、TCP 服务

  • 面向连接:流动前互换运输层控制信息,结束后拆除连接

  • 可靠数据传送:无差错、按适当顺序交付

  • 拥塞控制

  • 无加密机制

    • 改进:* 安全套接字层(Secure Socket Layer,SSL)

2、UDP 服务

  • 轻量级,仅提供最小服务

  • 不可靠数据传送:不保证到达、可乱序

  • 可选定数据的传输速率

  • 无加密机制

应用层协议

1、RFC(Request For Comments)文档:一系列以编号排定的文件

  • 位于公共域中

  • 收录几乎所有互联网标准

2、超文本传输协议 HTTP

3、简单邮件传输协议 SMTP

HyperText Transfer Protocol

1、超文本传输协议 HTTP

  • 定义报文的结构和客户、服务器进行报文交换的方式

  • 实现:一个客户程序和一个服务器程序(P65)

  • 支撑运输协议:TCP

  • 无状态协议 stateless protocol:不保存关于客户的任何信息

2、连接方式

  • 非持续连接 non-persistent connection

    • 请求 / 响应经一单独 TCP 连接发送
    • 为每个请求对象建立和维护一个全新连接
    • 三次握手:发送确认 RTT - 返回确认 RTT - 传输
      • 往返时间 Round-Trip Time,RTT
  • 持续连接(默认)

    • 请求 / 响应经相同的 TCP 连接发送
    • 带流水线(默认):对对象的请求可依次发出,不必等待未决请求

3、报文格式

请求报文(P68,CR 回车,LF 换行)

  • 组成:

    • 第一行称请求行 request line
      • 三个部分:方法字段 URL 字段 HTTP 字段
    • 后继行称首部行 header line
    • 实体体 entity body:POST 方法使用
  • 方法字段:GET POST HEAD PUT DELETE

    • GET:请求对象、提交表单(HTML 表单)
    • POST:提交表单
    • HEAD:响应请求,但不返回对象
      • * 试跟踪
    • PUT:常与 Web 发行工具共用,上传对象到指定 Web 服务器指定路径
    • DELETE:允许删除 Web 服务器上对象

响应报文(P69)

  • 组成

    • 状态行 status line
      • 三个部分:协议版本字段 状态码 相应状态信息
    • 首部行和实体体
  • 常见状态码:200 OK;301 请求对象已经永久转移;400/404;505 不支持的 HTTP 协议版本

4、Cookie

  • 组成

    • 响应报文中的一个 cookie 首部行
    • 请求报文中的一个 cookie 首部行
    • 用户端系统保留的一个 cookie 文件
    • 位于 Web 站点的一个后端数据库
  • 识别码 Set-cookie:用于标识一个用户

    • * 用户隐私侵害

5、Web 缓存

  • Web 缓存器 Web Cache / 代理服务器 proxy server

    • 配置后的浏览器请求被定向至代理服务器
    • 发送给用户服务器的是保存的一份副本
    • 从整体上大大降低因特网的流量
  • 内容分发网络 Content Distribution Network,CDN:使大量流量实现本地化

  • 条件 Get 方法:执行最新检查

    • If-Modified-Since = Last-Modified -> 304 Not Modified

因特网电子邮件

1、组成:用户代理(user agent)邮件服务器(mail server)简单邮件传输协议(SMTP)

2、支撑应用层服务:TCP

3、SMTP

  • 因特网电子邮件的核心

  • 仅能采用简单的 7 比特 ASCII 表示

  • 传送多谋体数据编码需先转码

  • 无存留:一般不使用中间邮件服务器

  • 使用持续连接

对比 HTTP
  • HTTP 不需要对多谋体数据编码转码

  • HTTP 是拉协议(pull protocol)而 SMTP 基本上是推协议(push protocol)

  • HTTP 封装对象,SMTP 将所有对象存放在一个报文中

4、邮件报文格式

  • 首部:From To (Subject,其他可选首部行)

  • 一个空白行

  • 报文体(ASCII 格式)

5、邮件访问协议

  • 第三版的邮局协议 Post Office Protocol - Version 3,POP3

    • 三个工作阶段
      • 特许(authorization):明文发送用户名和口令以鉴别用户
      • 事务处理:取回报文;标记 / 删除报文标记、获取邮件统计信息(可选)
      • 更新:在 quit 命令发出后结束会话
    • 下载方式:下载并删除(不同机器不可读) / 下载并保留(可多端查看)
    • 优点:会话中不包含状态信息,大大简化了服务的实现
  • 因特网邮件访问协议 Internet Mail Access Protocol,IMAP

    • 实现访问远程服务器文件夹
    • 维护用户状态信息
    • 允许用户代理获取报文的某些指定部分(灵活)
    • 用户 -> 邮件服务器:HTTP 邮件服务器 -> 邮件服务器:SMTP

DNS

提供服务

  • 核心:主机名 ->IP 名转换的目录服务

  • 提供主机别名(host aliasing):此时原名称称规范主机名(canonical hostname)

  • 邮件服务器别名

  • 负载分配(load distribution):每个回答循环响应,在冗余的 Web 服务器间分配负载

工作机理

1、实现

  • 一个分层的 DNS 服务器实现的分布式数据库

  • 使主机可查询数据库的应用层协议

2、支撑应用层服务:UDP(53 号端口)

3、分布式、层次数据库

  • 集中式的弊端

    • 单点故障
    • 通信容量(traffic volume)
    • 远距离的集中式数据库
    • 维护
  • 服务器类型(P87)

    • 根 DNS 服务器:提供 TLD 服务器的 IP 地址
    • 顶级域服务器 TLD:提供权威 DNS 服务器的 IP 地址
    • 权威 DNS 服务器:提供公共可访问的 DNS 记录
    • 本地 DNS 服务器
  • 查询方式:主机 -> 服务器递归查询,其余均为迭代查询

4、DNS 缓存

  • 将映射缓存在本地存储器中

  • 可绕过根服务器:存在缓存,立即返回 IP 地址

  • 一段时间丢弃信息(默认:两天)

DNS 记录和报文

1、资源记录 Resource Record,RR

  • 提供主机名到 IP 地址的映射

  • 格式:(Name,Value,Type,TTL)

    • TTL:记录的生存时间

2、Type 的不同类型

  • Type:A

    • Name:主机名
    • Value:主机名对应 IP 地址
  • Type:NS

    • Name:个域
    • Value:可提供主机 IP 地址的权威 DNS 服务器主机名
  • Type:CNAME

    • Name:别名为 Name 的主机名称
    • Value:该主机的规范主机名
  • Type:MX

    • Name:别名为 Name 的服务器主机名称
    • Value:该服务器主机的规范主机名

3、报文格式(P90)

  • 首部区域(12 字节):标识符 标志 问题数 回答 / 权威 / 附加 RR 数

  • 问题区域:名字 类型

  • 权威区域

  • 附加区域

4、插入记录:注册登记机构(registrar)验证域名唯一性,输入 DNS 数据库

*5、DNS 的健壮性

P2P 文件分发

1、def:成对间歇的主机(对等方)彼此直接通信

2、最小分发时间:

DP2P=max{Fus,Fdmin,NFus+r=1n}D_{P2P}=max\{\frac{F}{u_s},\frac{F}{d_{min}},\frac{NF}{u_s+{\sum_{r=1}^n}}\}

3、Bittorrent

  • 洪流 torrent:参与一个特定文件分发的所有对等方的集合

  • 块 chunk:典型(256kb)等长文件块

  • 加入过程:向追踪器注册 - 周期性通知仍在洪流中

  • 最稀缺优先 rarest first:优先请求那些邻居中副本数量最少的块,以均衡每个洪流的副本数量

  • 疏通 unchoked:一个时间间隔后重新计算最高速率并修改对等方集合,保证最高速率

  • * 分布式散列表 DHT:分布在多个对等方的简单数据库

视频流和内容分发网 CDN

1、压缩比特率,提高图像质量

2、流式视频的重要衡量:avg 端到端时延

3、DASH:经 HTTP 的动态适应流

  • 告示文件(manifest file)提供比特率和 URL

  • 速率决定算法选择后继请求块

4、CDN

  • 分类:专用 CDN 第三方 CDN

  • 服务器安置原则

    • 深入:靠近端用户,改善时延和吞吐量
    • 邀请做客:邀请到放置在 IXP 的集群,降低维护和管理开销
  • 机制:截获 重定向

  • * 实时测量

  • 案例:油管 Netflix 迅雷

套接字编程

1、分类:协议标准定义 或 专用网络的网络应用程序

2、UDP 套接字

  • 过程:键入,发送数据至服务器 - 转换报文,发送给客户 - 客户端监视器显示

  • 需显式创建分组并附上目的地址

3、TCP 套接字

  • 欢迎套接字和连接套接字

  • 仅需将数据放入 TCP 连接

一、概念

1、主机 host(端系统 end system):所有计算机器的统称,通过通信链路(communication link)与分组交换机相互连接

  • 概念辨析:主机 = 端系统

  • 主机的两大类型:客户(client)和服务器(server)

2、分组交换机:常用类型为路由器(router)和 链路层交换机(link-layer switch)两种,均朝最终目的地转发分组

3、分组 packet:一台端系统向另一台端系统发送数据时,发送端系统将数据分段并为每段加上首部字节所形成的信息包

4、路径 path/route:一个分组所经历的一系列通信链路和分组交换机为通过该网络的路径

5、因特网服务提供商 ISP:一个由多个分组交换机和多段通信链路组成的网络,提供不同类型的网络接入服务

  • 可为内容提供者提供因特网接入服务用于直连

  • 各个 ISP 相互独立管理

6、协议 protocol:控制因特网中信息的接收和发送,定义了通信实体间交换、发送和接收报文的格式顺序,及报文发送和 / 或接收一条报文或其他事件所采取的动作。

  • 因特网的主体协议:TCP/IP

7、分布式应用程序 distributed application:涉及多个相互交换数据的端系统的应用程序

8、套接字接口 socket interface: 一套发送程序必须遵循的规则集合,规定了交付数据的方式

二、The Network Edge

1、接入网

  • 数据用户线(DSL):从本地电话接入的本地电话公司获得

  • 电缆因特网接入(cable Internet access):从提供有线电视的公司获得

    • * 混合光纤同轴系统(HFC)
  • 光纤到户(FTTH)

  • 以太网、WiFi

  • 4G、LTE(长期演进)

2、物理媒体:成本相对小

  • 导引型媒体:双绞铜线、同轴电缆、光纤

  • 非导引型媒体:无线局域网、数字卫星频道

三、The Network Core

分组交换 packet switching

1、存储转发传输 store-and-forward transmission

  • 定义 def:在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组

  • 端到端时延(简化式):

    d 端到端 =NLRd_{端到端} = N\frac {L}{R}

    其中,N:路径条数,R:速率 ,L bit/s:分组大小 bit

2、排队时延和分组丢失

​ 对于每条相连的链路,分组交换机具有一个输出缓存(ouput buffer),如果已到达分组的链路正在进行另一分组的传输,此时分组承受排队时延(queuing delay);若缓存已占满,新进入的分组出现丢包(packet loss)

3、转发表和路由选择协议

​ 路由器通过路由选择协议(routing protocol)自动设置转发表(forwarding table),转发表映射目的地址成为输出链路

电路交换 circuit switching

1、def:通信时创建端到端连接(end-to-end connection),预留电路带宽(bandwidth)并加以维护,尽最大努力实时交付分组

2、实现方式

  • 频分复用(FDM):在连接期间,链路为每条连接专用一个频段

  • 时分复用(TDM):时间划分为固定期间的,每个帧划分为固定数量的时隙;当网络跨越一条链路创建一条链接时,网络为每个帧指定一个时隙,并把这些时隙用于该链接的专用传输

对比

分组交换不适合实时服务(原因:端到端时延不可预测),但提供更好的宽带共享、按需分配也较简单经济;电路交换实时传输,但不考虑需求,即便链接处于静默期

网络的网络

1、ISP 的互联模型(P24)

2、一些概念

  • 存在点 PoP:存在于所有层次,提供对接

  • 多宿 multi-home:可与两个或更多提供商连接

  • 对等 peer:层次同一级不进行结算,即无需相互付费

  • 因特网交换点 IXP:一个或多个 ISP 在此处一起对等

  • * 我国国家级 ISP:Tian

四、分组交换网 Packet-Switched Networks

时延

1、总时延:

dnodel=dproc+dqueue+dtrans+dpropd_{nodel} = d_{proc} + d_{queue} + d_{trans} + d_{prop}

总时延 = 处理时延 + 排队时延 + 传输时延 + 传播时延
  • 流量强度:用于估计排队时延的范围

    LR\frac LR

​ 设计系统的流量强度不能大于 1,否则排队时延趋于 +∞

2、端到端时延(一般式)

dendend=N(dproc+dtrans+dprop)d_{end-end} = N(d_{proc} + d_{trans} + d_{prop})

​ 适用情况:各节点具有不同的时延 / 每个节点具有不同的时延和每个节点存在平均排队时延

3、瞬时 / 平均吞吐量 instantaneous /average throughtout

  • 瓶颈链路(bottleneck link):传输速率前大后小(进水管道宽于出水),吞吐量由两者中的较小者决定。因特网连接中,接入网是吞吐量的主要限制因素

min{Rc,Rs}min\{R_c,R_s\}

五、协议层次及其服务模型 Protocol Layers and Their Service Models

协议分层

1、优点:概念化 结构化 缺点:单一层可能冗余较低层的功能 违反了层次分离的目标

2、协议栈 protocol stack

  • 5 层因特网协议栈:物 链 网 运 应

  • 7 层 ISO OSI 参考模型:物 链 网 运 会话 表示

    • 表示层:使通讯的应用程序能够解释交换数据的含义
    • 会话层:提供数据交换的定界同步功能

3、封装 encapsulation

* 六、Networks Under Attack

1、常见有害程序

  • 僵尸网络(botnet)

  • 病毒

  • 蠕虫

2、针对服务器 / 网络基础设施

  • 弱点攻击

  • 带宽洪泛:短时间大量分组阻塞合法分组到达服务器,如:DDoS 攻击

  • 连接洪泛:创建大量伪造的半开 / 全开的 TCP 连接,使得主机受困、停止接收合法连接

3、分组嗅探、伪装

  • 分组嗅探器(packet sniffer):记录每个流经的分组副本的被动接收机(不向信道注入信息)。难以发觉,可应用密码学规避

  • IP 哄骗(IP Spoofing):将具有虚假源地址的分组注入因特网(主动),可采用端点鉴别

* 七、History of Computer Networking

  • 分组交换的发展(1961-1972)

    • NCP:ARPAnet 端系统间第一台主机 - 主机协议
  • 专用网络和网络互联 Interneting(1972-1980)

  • 激增和爆炸(1980 - 至今)