auto commit
This commit is contained in:
116
notes/计算机网络.md
116
notes/计算机网络.md
@ -95,7 +95,7 @@
|
||||
|
||||
网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//f1fb826b-ecf4-4ddb-91f0-2bafecf08869.jpg"/> </div>
|
||||
|
||||
## ISP
|
||||
|
||||
@ -105,14 +105,14 @@
|
||||
|
||||
互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//0f8c0a60-d4c6-47f4-978d-1a5c393fedac.jpg"/> </div>
|
||||
|
||||
## 互联网的组成
|
||||
|
||||
1. 边缘部分:所有连接在互联网上的主机,用户可以直接使用;
|
||||
2. 核心部分:由大量的网络和连接这些网络的路由器组成,为边缘部分的主机提供服务。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8ab40d6d-bd7c-47d3-afe8-6a8bc9f5d04c.jpg"/> </div>
|
||||
|
||||
## 主机之间的通信方式
|
||||
|
||||
@ -126,7 +126,7 @@
|
||||
|
||||
## 电路交换与分组交换
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//c50d230c-8b89-4644-8f62-8708d03aac5b.jpg"/> </div>
|
||||
|
||||
### 1. 电路交换
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
|
||||
分组交换也使用了存储转发,但是转发的是分组而不是报文。把整块数据称为一个报文,由于一个报文可能很长,需要先进行切分,来满足分组能处理的大小。在每个切分的数据前面加上首部之后就成为了分组,首部包含了目的地址和源地址等控制信息。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//2366c2ad-5859-4d4e-805f-7e2b88061cd8.jpg"/> </div>
|
||||
|
||||
存储转发允许在一条传输线路上传送多个主机的分组,因此两个用户之间的通信不需要占用端到端的线路资源。
|
||||
|
||||
@ -150,7 +150,7 @@
|
||||
|
||||
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//ceee91c2-da26-4169-94c3-e4608b46b9ac.png"/> </div>
|
||||
|
||||
### 1. 发送时延
|
||||
|
||||
@ -178,7 +178,7 @@
|
||||
|
||||
## 计算机网络体系结构*
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//1005dc9d-9049-4b06-9524-6171e56ebd8c.png"/> </div>
|
||||
|
||||
### 1. 七层协议
|
||||
|
||||
@ -205,7 +205,7 @@
|
||||
|
||||
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//ac106e7e-489a-4082-abd9-dabebe48394c.jpg"/> </div>
|
||||
|
||||
### 4. TCP/IP 体系结构
|
||||
|
||||
@ -213,11 +213,11 @@
|
||||
|
||||
现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//37b74a34-251c-45f8-88a4-614ec953f7e9.png"/> </div>
|
||||
|
||||
TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占用举足轻重的地位。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//93cbce0c-c37d-429c-815b-861976a46bd8.png"/> </div>
|
||||
|
||||
# 第二章 物理层
|
||||
|
||||
@ -231,7 +231,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//d2c55c84-aa1f-43c1-bd97-457bcb7816b3.png"/> </div>
|
||||
|
||||
## 信道复用技术
|
||||
|
||||
@ -241,19 +241,19 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
使用这两种方式进行通信,在通信的过程中用户会一直占用一部分信道资源。但是由于计算机数据的突发性质,没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//543d47a1-f0dd-414f-b23c-0c142c814854.png"/> </div>
|
||||
|
||||
### 2. 统计时分复用
|
||||
|
||||
是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//29058e09-bb72-4040-a73d-4c497895e9ce.jpg"/> </div>
|
||||
|
||||
### 3. 波分复用
|
||||
|
||||
光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//78534153-88d1-4f83-a6e0-59064dbdc43a.png"/> </div>
|
||||
|
||||
### 4. 码分复用
|
||||
|
||||
@ -275,7 +275,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
码分复用需要发送的数据量为原先的 m 倍。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//0042edad-8e3b-4279-bd93-6906fcd1b640.jpg"/> </div>
|
||||
|
||||
# 第三章 数据链路层
|
||||
|
||||
@ -285,7 +285,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//3402d1c0-7020-4249-9a7f-12ea2ea6adf7.jpg"/> </div>
|
||||
|
||||
### 2. 透明传输
|
||||
|
||||
@ -293,7 +293,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
帧中有首部和尾部,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据中出现首部尾部相同的内容前面插入转义字符,如果需要传输的内容正好就是转义字符,那么就在转义字符前面再加个转义字符,在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//4146e14b-56b9-433c-8e3d-74b1b325399c.jpg"/> </div>
|
||||
|
||||
### 3. 差错检测
|
||||
|
||||
@ -303,7 +303,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
|
||||
互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8393f520-d824-44ea-a5f3-1c1a73d735fb.jpg"/> </div>
|
||||
|
||||
在 PPP 的帧中
|
||||
|
||||
@ -312,11 +312,11 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
|
||||
- FCS 字段是使用 CRC 的检验序列
|
||||
- 信息部分的长度不超过 1500
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//0f39c274-b79c-4e83-8c7c-94fc2747832d.jpg"/> </div>
|
||||
|
||||
## 局域网的拓扑
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8b15e36f-69b4-46b6-a07c-7234ac7c7927.jpg"/> </div>
|
||||
|
||||
## 广播信道 - CSMA/CD 协议*
|
||||
|
||||
@ -328,7 +328,7 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。
|
||||
- **载波监听**:每个站都必须不停地检听信道。在发送前,如果检听信道正在使用,就必须等待。
|
||||
- **碰撞检测**:在发送中,如果检听到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经检听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//f9ed4da5-0032-41e6-991a-36d995ec28fd.png"/> </div>
|
||||
|
||||
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期**。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
|
||||
|
||||
@ -338,15 +338,15 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。
|
||||
|
||||
从表面上看,使用集线器的局域网在物理上是一个星型网。但是集线器使用电子器件来模拟实际缆线的工作,逻辑上仍是一个总线网,整个系统仍像一个传统以太网那样运行。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//3294ff06-f942-425e-aecc-ca04e45566d4.png"/> </div>
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//b56ef52e-3d0f-4cdd-97dc-eaed893444a5.jpg"/> </div>
|
||||
|
||||
## MAC 层*
|
||||
|
||||
MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//50d38e84-238f-4081-8876-14ef6d7938b5.jpg"/> </div>
|
||||
|
||||
- **类型**:标记上层使用的协议;
|
||||
- **数据**:长度在 46-1500 之间,如果太小则需要填充;
|
||||
@ -357,7 +357,7 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器
|
||||
|
||||
虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//a74b70ac-323a-4b31-b4d5-90569b8a944b.png"/> </div>
|
||||
|
||||
# 第四章 网络层*
|
||||
|
||||
@ -367,7 +367,7 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器
|
||||
|
||||
使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//fe3d224c-8ffd-40f9-85b1-86ffe1393f6c.jpg"/> </div>
|
||||
|
||||
与 IP 协议配套使用的还有三个协议:
|
||||
|
||||
@ -375,11 +375,11 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器
|
||||
2. 网际控制报文协议 ICMP(Internet Control Message Protocol)
|
||||
3. 网际组管理协议 IGMP(Internet Group Management Protocol)
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//163cf8b4-5f30-46c9-af00-316a71b3c890.jpg"/> </div>
|
||||
|
||||
## IP 数据报格式
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8681db55-0873-434b-aa98-83d07e8392ae.jpg"/> </div>
|
||||
|
||||
- **版本** : 有 4(IPv4)和 6(IPv6)两个值;
|
||||
|
||||
@ -393,7 +393,7 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器
|
||||
|
||||
- **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//45c86855-9b18-4cf4-a9a7-f8b6eb78d133.png"/> </div>
|
||||
|
||||
- **生存时间** :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
|
||||
|
||||
@ -415,7 +415,7 @@ IP 地址的编址方式经历了三个历史阶段:
|
||||
|
||||
IP 地址 ::= {< 网络号 >, < 主机号 >}
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//2ddd6132-60be-4a72-9daa-3d9756191f4a.png"/> </div>
|
||||
|
||||
### 2. 子网划分
|
||||
|
||||
@ -443,7 +443,7 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为
|
||||
|
||||
网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//86b71296-0d1e-4a63-bcd9-54955b6b781b.jpg"/> </div>
|
||||
|
||||
## 地址解析协议 ARP
|
||||
|
||||
@ -451,7 +451,7 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为
|
||||
|
||||
每个主机都有一个 ARP 高速缓存,存放映射表。如果一个 IP 地址到 MAC 地址的映射不在该表中,主机通过广播的方式发送 ARP 请求分组,匹配 IP 地址的主机会发送 ARP 响应分组告知其 MAC 地址。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8bc6fc2c-d198-4759-b06c-18d94d851e97.png"/> </div>
|
||||
|
||||
## 路由器的结构
|
||||
|
||||
@ -459,11 +459,11 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为
|
||||
|
||||
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//3a676c54-b559-4466-9b21-eb10f1e25879.jpg"/> </div>
|
||||
|
||||
交换结构的交换网络有以下三种实现方式:
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//7f82fd18-7f16-4125-ada6-bb6b795b4fda.png"/> </div>
|
||||
|
||||
## 交换机与路由器的区别
|
||||
|
||||
@ -479,7 +479,7 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为
|
||||
5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
|
||||
6. 报告转发分组出错。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8d211911-0e62-4190-ab00-d8610adec4a0.jpg"/> </div>
|
||||
|
||||
## 路由选择协议
|
||||
|
||||
@ -492,7 +492,7 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为
|
||||
1. 内部网关协议 IGP(Interior Gateway Protocol):在 AS 内部使用,如 RIP 和 OSPF。
|
||||
2. 外部网关协议 EGP(External Gateway Protocol):在 AS 之间使用,如 BGP。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//e0be6970-5b0e-44a2-bc71-df4d61c42b8f.jpg"/> </div>
|
||||
|
||||
### 1. 内部网关协议 RIP
|
||||
|
||||
@ -532,17 +532,17 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。它采用路
|
||||
|
||||
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//eb6271de-22c9-4f4b-8b31-eab1f560efac.png"/> </div>
|
||||
|
||||
## 网际控制报文协议 ICMP
|
||||
|
||||
ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//9b5e0fa0-9274-4219-a3a9-84fbb509c735.jpg"/> </div>
|
||||
|
||||
ICMP 报文分为差错报告报文和询问报文。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//6e11b122-95ce-4869-bf7d-3b0d7591707e.jpg"/> </div>
|
||||
|
||||
## 分组网间探测 PING
|
||||
|
||||
@ -557,7 +557,7 @@ PING 的过程:
|
||||
|
||||
在一对多的通信中,多播不需要将分组复制多份,从而大大节约网络资源。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//c77b6a18-dfac-42a2-ac89-7e99481275dc.jpg"/> </div>
|
||||
|
||||
## 虚拟专用网 VPN
|
||||
|
||||
@ -573,7 +573,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
下图中,场所 A 和 B 的通信部经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//bf4ed077-d481-4db7-9e7a-85d841a5a8c3.jpg"/> </div>
|
||||
|
||||
## 网络地址转换 NAT
|
||||
|
||||
@ -581,7 +581,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//0f31bc7a-d60b-48a6-8e3f-597708369e52.png"/> </div>
|
||||
|
||||
# 第五章 运输层*
|
||||
|
||||
@ -597,13 +597,13 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
## UDP 首部格式
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//bd6c05f3-02ee-4c8a-b374-40c87154a898.jpg"/> </div>
|
||||
|
||||
首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和而临时添加的。
|
||||
|
||||
## TCP 首部格式
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//21a00b02-c0a6-4bcd-9af0-5ec6bb66e34c.jpg"/> </div>
|
||||
|
||||
- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
|
||||
|
||||
@ -621,7 +621,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
## TCP 的三次握手
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//086871db-5871-460f-97b7-126cd738bb0e.jpg"/> </div>
|
||||
|
||||
假设 A 为客户端,B 为服务器端。
|
||||
|
||||
@ -634,7 +634,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
## TCP 的四次挥手
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//78f65456-666b-4044-b4ee-f7692dbbc0d3.jpg"/> </div>
|
||||
|
||||
以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。
|
||||
|
||||
@ -652,7 +652,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。
|
||||
|
||||
## TCP 滑动窗口
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//223fc26e-2fd6-484c-bcb7-443cac134f15.jpg"/> </div>
|
||||
|
||||
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
|
||||
|
||||
@ -684,7 +684,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文
|
||||
|
||||
如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//a69af9bb-b5ad-4896-862d-697e5ee4feb1.png"/> </div>
|
||||
|
||||
TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护有一个叫做拥塞窗口(cwnd)的状态变量。注意拥塞窗口与发送方窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。
|
||||
|
||||
@ -693,7 +693,7 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、
|
||||
1. 接收方有足够大的接收缓存,因此不会发生流量控制;
|
||||
2. 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//346244ff-98c1-4f12-9a87-d0832e8c04cf.jpg"/> </div>
|
||||
|
||||
### 慢开始与拥塞避免
|
||||
|
||||
@ -711,7 +711,7 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、
|
||||
|
||||
在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//b18d679b-c8e2-4564-88ee-7600090e46da.jpg"/> </div>
|
||||
|
||||
# 第六章 应用层*
|
||||
|
||||
@ -725,9 +725,9 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、
|
||||
|
||||
一个域名由多个层次构成,从上层到下层分别为顶级域名、二级域名、三级域名以及四级域名。所有域名可以画成一颗域名树。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//c2117f61-1177-4768-bf33-cf4f950d911c.png"/> </div>
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//a4b162e5-db2a-4a27-b213-1fe481c5a06a.png"/> </div>
|
||||
|
||||
域名服务器可以分为以下四类:
|
||||
|
||||
@ -738,11 +738,11 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、
|
||||
|
||||
区和域的概念不同,可以在一个域中划分多个区。图 b 在域 abc.com 中划分了两个区:abc.com 和 y.abc.com
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//fc0c6b2d-68c7-4de8-aaaa-97355a4f0472.jpg"/> </div>
|
||||
|
||||
因此就需要两个权限域名服务器:
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8b335d94-c1ca-42e1-ad48-bb179d28a4f1.jpg"/> </div>
|
||||
|
||||
### 2. 解析过程
|
||||
|
||||
@ -750,13 +750,13 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、
|
||||
|
||||
迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归地方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//6bc61bb8-3b1c-4dc8-ac25-cef925ace0eb.jpg"/> </div>
|
||||
|
||||
## 文件传输协议 FTP
|
||||
|
||||
FTP 在运输层使用 TCP,并且需要建立两个并行的 TCP 连接:控制连接和数据连接。控制连接在整个会话期间一直保持打开,而数据连接在数据传送完毕之后就关闭。控制连接使用端口号 21,数据连接使用端口号 20。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//58633775-8584-4a01-ad3f-eee4d9a466e1.jpg"/> </div>
|
||||
|
||||
## 远程终端协议 TELNET
|
||||
|
||||
@ -772,7 +772,7 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作
|
||||
|
||||
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件发送协议和读取协议。其中发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//de1e46d2-748f-4da3-a29e-7de7bc840366.jpg"/> </div>
|
||||
|
||||
### POP3
|
||||
|
||||
@ -786,7 +786,7 @@ IMAP 协议中客户端和服务器上的邮件保持同步,如果不去手动
|
||||
|
||||
SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主题的结构,定义了非 ASCII 码的编码规则。
|
||||
|
||||

|
||||
<div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//ed5522bb-3a60-481c-8654-43e7195a48fe.png"/> </div>
|
||||
|
||||
## 动态主机配置协议 DHCP
|
||||
|
||||
|
Reference in New Issue
Block a user