diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 76a0131a..9c74c7e9 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -594,7 +594,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 ## TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -612,7 +612,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 ## TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -622,13 +622,13 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 3. B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。 -4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。 -5. B 收到 A 的确认后,连接建立。 +4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1,进入 TIME-WAIT 状态。 +5. B 收到 A 的确认后,连接建立。 ## TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -640,17 +640,17 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 4. A 收到后发出确认,此时连接释放。 -### TIME_WAIT +**TIME_WAIT** -客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间。这么做有两个理由: +客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由: 1. 确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。 -2. 可能存在“已失效的连接请求报文段”,为了防止这种报文段出现在本次连接之外,需要等待一段时间。 +2. 等待一段时间是为了让本连接持续时间内所产生的所有报文段都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文段。 ## TCP 滑动窗口 -

+

窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。 @@ -676,13 +676,13 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 流量控制是为了控制发送方发送速率,保证接收方来得及接收。 -接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。例如将窗口字段设置为 0,则发送方不能发送数据。 +接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。 ## TCP 拥塞控制 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护有一个叫做拥塞窗口(cwnd)的状态变量。注意拥塞窗口与发送方窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。 @@ -691,15 +691,15 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、 1. 接收方有足够大的接收缓存,因此不会发生流量控制; 2. 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

### 1. 慢开始与拥塞避免 -发送的最初执行慢开始,令 cwnd=1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段为:2、4、8 ... +发送的最初执行慢开始,令 cwnd=1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 ... 注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。 -如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。 +如果出现了超时,则令 ssthresh = cwnd/2,然后重新执行慢开始。 ### 2. 快重传与快恢复 @@ -707,9 +707,9 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、 在发送方,如果收到三个重复确认,那么可以确认下一个报文段丢失,例如收到三个 M2 ,则 M3 丢失。此时执行快重传,立即重传下一个报文段。 -在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。 +在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令 ssthresh = cwnd/2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。 -

+

# 六、应用层* @@ -746,15 +746,15 @@ TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、 主机向本地域名服务器解析的过程采用递归,而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。 -迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归地方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。 +迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归的方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。 -

+

## 文件传输协议 FTP FTP 在运输层使用 TCP,并且需要建立两个并行的 TCP 连接:控制连接和数据连接。控制连接在整个会话期间一直保持打开,而数据连接在数据传送完毕之后就关闭。控制连接使用端口号 21,数据连接使用端口号 20。 -

+

## 远程终端协议 TELNET @@ -770,7 +770,7 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件发送协议和读取协议。其中发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

### 1. POP3 diff --git a/pics/30210b86-472d-4574-abb6-b74898cc17a4.jpg b/pics/30210b86-472d-4574-abb6-b74898cc17a4.jpg new file mode 100644 index 00000000..7726cf8c Binary files /dev/null and b/pics/30210b86-472d-4574-abb6-b74898cc17a4.jpg differ diff --git a/pics/51e2ed95-65b8-4ae9-8af3-65602d452a25.jpg b/pics/51e2ed95-65b8-4ae9-8af3-65602d452a25.jpg new file mode 100644 index 00000000..595cdc58 Binary files /dev/null and b/pics/51e2ed95-65b8-4ae9-8af3-65602d452a25.jpg differ diff --git a/pics/7b3efa99-d306-4982-8cfb-e7153c33aab4.png b/pics/7b3efa99-d306-4982-8cfb-e7153c33aab4.png new file mode 100644 index 00000000..21aafd0a Binary files /dev/null and b/pics/7b3efa99-d306-4982-8cfb-e7153c33aab4.png differ diff --git a/pics/910f613f-514f-4534-87dd-9b4699d59d31.png b/pics/910f613f-514f-4534-87dd-9b4699d59d31.png new file mode 100644 index 00000000..28362d47 Binary files /dev/null and b/pics/910f613f-514f-4534-87dd-9b4699d59d31.png differ diff --git a/pics/a3253deb-8d21-40a1-aae4-7d178e4aa319.jpg b/pics/a3253deb-8d21-40a1-aae4-7d178e4aa319.jpg new file mode 100644 index 00000000..23258afa Binary files /dev/null and b/pics/a3253deb-8d21-40a1-aae4-7d178e4aa319.jpg differ diff --git a/pics/e6723b94-1a33-4605-b775-f6813352d383.png b/pics/e6723b94-1a33-4605-b775-f6813352d383.png new file mode 100644 index 00000000..fdb9280e Binary files /dev/null and b/pics/e6723b94-1a33-4605-b775-f6813352d383.png differ diff --git a/pics/e92d0ebc-7d46-413b-aec1-34a39602f787.png b/pics/e92d0ebc-7d46-413b-aec1-34a39602f787.png new file mode 100644 index 00000000..1090a779 Binary files /dev/null and b/pics/e92d0ebc-7d46-413b-aec1-34a39602f787.png differ diff --git a/pics/f48e2b92-2c2a-48cb-a443-bd313e187a25.jpg b/pics/f48e2b92-2c2a-48cb-a443-bd313e187a25.jpg new file mode 100644 index 00000000..66c29824 Binary files /dev/null and b/pics/f48e2b92-2c2a-48cb-a443-bd313e187a25.jpg differ diff --git a/pics/f61b5419-c94a-4df1-8d4d-aed9ae8cc6d5.png b/pics/f61b5419-c94a-4df1-8d4d-aed9ae8cc6d5.png new file mode 100644 index 00000000..dc0d4e34 Binary files /dev/null and b/pics/f61b5419-c94a-4df1-8d4d-aed9ae8cc6d5.png differ diff --git a/pics/f87afe72-c2df-4c12-ac03-9b8d581a8af8.jpg b/pics/f87afe72-c2df-4c12-ac03-9b8d581a8af8.jpg new file mode 100644 index 00000000..6a090993 Binary files /dev/null and b/pics/f87afe72-c2df-4c12-ac03-9b8d581a8af8.jpg differ