1. TCP, UDP 和 HTTP 的关系
TCP, UDP 都是传输层的协议, 而 HTTP 是应用层协议
TCP 传输控制协议。 是可靠传输协议, 接受到的包可能是乱序的, 但包本身有序列号, 面向连接, 负载大, 需要确认, 有滑动窗口和拥塞控制.
UDP 用户数据包协议。 是不可靠协议, 发送的包无序, 面向非连接的, 负载小, 不需要确认, 无控制
HTTP 是超文本传输协议, 基于 TCP
2. 常见网页返回码
404 找不到页面
403 禁止访问
500 内部服务器访问
502 Bad Gateway
503 服务器忙
3. ISO 7层设计 与对应的 TCP/IP 协议簇
ISO 分为七层, 分别为应用层, 表示层, 会话层, 传输层, 网络层, 数据链路层, 物理层.
TCP/IP 应用层, 传输层, 网络层, 网络接口层
4. 滑动窗口, 拥塞控制
TCP 可靠传输的实现 - 滑动窗口协议.
TCP 流量控制 - 利用滑动窗口进行流量控制
TCP 拥塞控制 - 慢启动, 拥塞避免.
滑动窗口协议:
以字节为单位的滑动窗口协议. 发送方 A, 接收方 B 拥有长度相等的窗口(发送方也许会更小一点). 当 A 发送的数据收到 B 的 ACK 时, A 的窗口右移. B 发送的 ACK 是已经收到的无缝的最大的字节, 发送的 ACK 是期望收到的字节.
超时重传时间设置: TCP 的下层是互联网环境, 发送的报文可能只经过一个高速的局域网, 也可能经过一个低速的网络. 如果把超时重传的时间设的太短, 就会引起很多不必要的重传, 若把时间设置的过长, 又会降低传输效率.
所以, 将重传时间设置为 RTT 的函数, 因为 RTT 可以反映这段网络中的速度情况.
流量控制:
接收方向发送方发送其能够接受的窗口大小.
为了防止载有窗口大小信息的报文丢失, 每过一端时间, 发送方会发送探测报文(仅携带一字节的数据), 询问接收方的窗口大小.
拥塞控制:
慢启动算法. 发送方发送一个报文的数据, 然后指数增大. 增大到阀值时, 线性增加. 出现拥塞时, 阀值减到拥塞大小的一半, 重新启动慢启动算法.
5. 子网划分
在路由表中, 对每一条路由最主要的是以下两种信息:
(目的网络地址, 下一条地址)
ABCD 类地址
A 类地址的网络号占一个字节, 只有 7 位 可用. 并且, 全 0 代表本网络, 全 1 用于本主机的回环测试, 不会被发送到网络中去.
主机地址有 24 位, 有两个不能用. 全 0 表示本主机. 全 1 是该网络号下的所有主机, 用于广播
划分子网:
IP 地址 = {<网络号>, <子网号>, <主机号>}
子网掩码, 用于计算 IP 地址的网络号与子网号部分.
例题1: 已知 IP 地址是 141.14.72.24, 子网掩码是 255.255.192.0, 试求网络地址
192 = 128 + 64 . 72 = 64 + 8.
所有网络地址是 141.14.64.0
使用划分子网策略后, 路由表项变成 目的网络地址, 子网掩码, 下一条地址
这时, 查表过程会稍微复杂一点, 将目标 IP 地址与路由表中的子网掩码一一想与, 与表项中的目的网络地址相同的为正确表项.
无分类编制 CIDR
IP 地址 = <网络前缀>, <主机号>
CIDR 使用斜线法. 128.14.35.7/20 表示网络前缀是前 20 位
CIDR 可使用路由聚合, 匹配时采用最长前缀匹配.