.1 UDP与TCP
- IP中的检验和只检验IP数据报的首部, 但UDP的检验和检验 伪首部 + 首部 + 数据
- TCP的交互单位是数据块, 但仍说TCP是面向字节流的, 因为TCP仅把应用层传下来的数据看成无结构的字节流, 根据当时的网络环境组装成大小不一的报文段.
- 10秒内有1秒用于发送端发送数据, 信道利用率就是10%
- TCP报文段由首部和数据部分组成, 紧急位URG的作用就是将紧急指针所指示的数据放到数据部分的最前面
2.1 DNS系统
- 域名由点和标号(label)组成, 点分割的即是标号
- 每个标号不超过63个字符,总计不超过255个字符, 并且不区分大小写
- 顶级域名TLD(Top Level Domain)分为三类, 国家顶级域名nTLD, 通用顶级域名gTLD, 基础结构域名ID(Infrastructure Domain). 基础结构域名只有一个即 arpa. 用于反向域名解析, 因此被称为反向域名
- 2011年开始, 顶级域名TLD新增了一类新通用顶级域名(New gTLD)
- 域名服务器管辖范围(或有权限的)以区 (zone) 为单位, 而非域(domain)。各单位根据具体情况来划分自己管辖范围的区, 但在一个区中的所有节点必须是能够连通的。管辖一个区的服务器就是权限域名服务器 , 后有详细叙述
实际上也很好理解, 例如对于一个com顶级域名, 其下辖的二级域名可能以亿单位, 这时我们当然不可能用一台com顶级域名服务器就全部管辖. 区≤域
- 域名服务器可以划分为四种类型: 根/顶级/权限/本地域名服务器.
其中根域名服务器知道所有顶级域名服务器的域名和ip, 即根域名服务器可以解析所有com/org等顶级域名.
根域名服务器一共有13台(A~M), 每台又由许多物理节点组成, 这些物理节点会分布在世界各地.
每台根域名服务器的IP地址和域名都是不同的, 但同一台内的所有物理节点的IP地址都是相同的, 因此采用了任播(anycast)技术后, 会自动寻找IP地址相同, 但距离最近的物理节点. - 每台域名服务器都会有一些分布式备份, 其中只能在主域名服务器中进行数据更改, 辅助域名服务器是备份.
- 每台域名服务器都启用了高速缓存
- 主机中也启用了高速缓存, 例如在开机后自动从本地域名服务器下载全部数据
.2 HTTP协议
- n个文档的传输时间为 : n X (2RTT + 文本传输时间), 因此HTTP1.1 版本后使用了持续连接(Persistent Connection). 持续连接又分为非流水线方式(Without Pipelining)和流水线方式(With Pipelining).
- 非流水方式指的是, 客户端必须要收到上一个请求的响应后, 才能发出下一个请求.
相比非持续连接, n个文档传输能省去 n-1 个建立TCP连接的RTT.
n个文档的传输时间为 : (RTT +nRTT + n X 文本传输时间), - 流水方式中, 由于没有限制请求必须在响应之后发送, 因此文档传输的时间不定.最好的情况下, 客户端一次性发送完所有请求, 传输时间为2RTT+ n X 文本传输时间
- HTTP1.1 版本的一个缺点是, 即使客户端可以一次性发送多个请求, 但服务器只能按照请求的顺序逐一回复, 如果某一请求耗时特别长, 就会阻塞后面的请求
HTTP2 版本中, 服务器可以并行发回所有响应, 而不必按序. - HTTP2 版本中, 把所有报文划分为二进制编码的帧
.3 文件传送协议
基于TCP的文件传输协议FTP(File Transfer Protocol)和基于UDP的简单文件传输协议TFTP(Trivial)共同的特点是: 任何操作都要先获得一个本地副本文件, 任何修改都要先在副本文件上进行.
举个例子, A想要在B的某个文件最后新增一个字母, 则必须先要将文件传输到A, A完成修改后再回传覆盖.
.3.1 TFTP
TFTP主要有以下特点:
- 传输数据块大小为512字节。
- 只支持读取和写入两种操作。
- 没有用户身份验证、加密和完整性校验功能。
- 使用UDP作为传输层协议,不保证可靠性
- 默认使用69号端口。
TFTP的工作过程很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块号。
发送完数据后在规定时间内收不到确认就要重发数据PDU,发送确认PDU的一方在规定时间内收不到下一个文件块,也要重发确认PDU。这样保证文件的传送不致因某一个数据报的丢失而告失败。
.4 P2P
- 在BT中, 使用"最稀有的优先(rarest first)" 技术优先请求最稀有的文件块, 避免之后收集不到
- 在BT中, 还运用了对等传输的思想. 如果A以最高速率向B发送文件, B 也会将A的优先级设为最高.