diff --git a/notes/pics/tcp-sack.gif b/notes/pics/tcp-sack.gif new file mode 100644 index 00000000..0dc89abf Binary files /dev/null and b/notes/pics/tcp-sack.gif differ diff --git a/notes/计算机网络 - 传输层.md b/notes/计算机网络 - 传输层.md index 0edee9c5..8c5c5451 100644 --- a/notes/计算机网络 - 传输层.md +++ b/notes/计算机网络 - 传输层.md @@ -1,23 +1,23 @@ # 计算机网络 - 传输层 * [计算机网络 - 传输层](#计算机网络---传输层) - * [UDP 和 TCP 的特点](#udp-和-tcp-的特点) + * [UDP 和 TCP 的特点](#udp-和-tcp-的特点) 🔥🔥 * [选择 TCP 还是 UDP](#选择-tcp-还是-udp) * [UDP 首部格式](#udp-首部格式) * [TCP 首部格式](#tcp-首部格式) - * [TCP 的三次握手](#tcp-的三次握手) + * [TCP 的三次握手](#tcp-的三次握手) 🔥🔥 * [三次握手的原因](#三次握手的原因) * [握手报文丢失](#握手报文丢失) - * [TCP 的四次挥手](#tcp-的四次挥手) + * [TCP 的四次挥手](#tcp-的四次挥手) 🔥 * [四次挥手的原因](#四次挥手的原因) * [TIME_WAIT](#time_wait) * [大量 TIME_WAIT 与 CLOSE_WAIT](#大量-time_wait-与-close_wait) - * [TCP 可靠传输](#tcp-可靠传输) + * [TCP 可靠传输](#tcp-可靠传输) 🔥 * [确认与重传](#确认与重传) * [超时重传时间](#超时重传时间) * [TCP 滑动窗口](#tcp-滑动窗口) * [TCP 流量控制](#tcp-流量控制) - * [TCP 拥塞控制](#tcp-拥塞控制) + * [TCP 拥塞控制](#tcp-拥塞控制) 🔥🔥 * [1. 慢开始与拥塞避免](#1-慢开始与拥塞避免) * [2. 快重传与快恢复](#2-快重传与快恢复) * [TCP 粘包与拆包](#tcp-粘包与拆包) @@ -36,7 +36,7 @@ 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 -## UDP 和 TCP 的特点 +## UDP 和 TCP 的特点 🔥🔥 - 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信; - 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。 @@ -81,7 +81,7 @@ DNS 也不是只用 UDP。不带 EDNS 扩展时,UDP 上的 DNS 响应限制为 - 终止 FIN:用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接; - 窗口:窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。 -## TCP 的三次握手 +## TCP 的三次握手 🔥🔥