auto commit

This commit is contained in:
CyC2018
2020-11-17 00:32:18 +08:00
parent f5ad47b470
commit 7e61fc1360
380 changed files with 2371 additions and 46715 deletions

View File

@ -1,33 +1,35 @@
# 计算机网络 - 传输层
<!-- GFM-TOC -->
* [UDP TCP 的特点](#udp--tcp-的特点)
* [UDP 首部格式](#udp-首部格式)
* [TCP 首部格式](#tcp-首部格式)
* [TCP 的三次握手](#tcp-的三次握手)
* [TCP 四次挥](#tcp-四次挥)
* [TCP 可靠传输](#tcp-可靠传输)
* [TCP 滑动窗口](#tcp-滑动窗口)
* [TCP 流量控制](#tcp-流量控制)
* [TCP 拥塞控制](#tcp-拥塞控制)
* [1. 慢开始与拥塞避免](#1-慢开始与拥塞避免)
* [2. 快重传与快恢复](#2-快重传与快恢复)
* [计算机网络 - 传输层](#计算机网络---传输层)
* [UDP TCP 的特点](#udp--tcp-的特点)
* [UDP 首部格式](#udp-首部格式)
* [TCP 首部格式](#tcp-首部格式)
* [TCP 三次握](#tcp-三次握)
* [TCP 的四次挥手](#tcp-的四次挥手)
* [TCP 可靠传输](#tcp-可靠传输)
* [TCP 滑动窗口](#tcp-滑动窗口)
* [TCP 流量控制](#tcp-流量控制)
* [TCP 拥塞控制](#tcp-拥塞控制)
* [1. 慢开始与拥塞避免](#1-慢开始与拥塞避免)
* [2. 快重传与快恢复](#2-快重传与快恢复)
<!-- GFM-TOC -->
网络层只把分组发送到目的主机但是真正通信的并不是主机而是主机中的进程传输层提供了进程间的逻辑通信传输层向高层用户屏蔽了下面网络层的核心细节使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道
# UDP TCP 的特点
## UDP TCP 的特点
- 用户数据报协议 UDPUser Datagram Protocol是无连接的尽最大可能交付没有拥塞控制面向报文对于应用程序传下来的报文不合并也不拆分只是添加 UDP 首部支持一对一一对多多对一和多对多的交互通信
- 传输控制协议 TCPTransmission Control Protocol是面向连接的提供可靠交付有流量控制拥塞控制提供全双工通信面向字节流把应用层传下来的报文看成字节流把字节流组织成大小不等的数据块每一条 TCP 连接只能是点对点的一对一
# UDP 首部格式
## UDP 首部格式
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/d4c3a4a1-0846-46ec-9cc3-eaddfca71254.jpg" width="600"/> </div><br>
首部字段只有 8 个字节包括源端口目的端口长度检验和12 字节的伪首部是为了计算检验和临时添加的
# TCP 首部格式
## TCP 首部格式
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/55dc4e84-573d-4c13-a765-52ed1dd251f9.png" width="700"/> </div><br>
@ -45,7 +47,7 @@
- **窗口** 窗口值作为接收方让发送方设置其发送窗口的依据之所以要有这个限制是因为接收方的数据缓存空间是有限的
# TCP 的三次握手
## TCP 的三次握手
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/e92d0ebc-7d46-413b-aec1-34a39602f787.png" width="600"/> </div><br>
@ -67,7 +69,7 @@
客户端发送的连接请求如果在网络中滞留那么就会隔很长一段时间才能收到服务器端发回的连接确认客户端等待一个超时重传时间之后就会重新请求连接但是这个滞留的连接请求最后还是会到达服务器如果不进行三次握手那么服务器就会打开两个连接如果有第三次握手客户端会忽略服务器之后发送的对滞留连接请求的连接确认不进行第三次握手因此就不会再次打开连接
# TCP 的四次挥手
## TCP 的四次挥手
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/f87afe72-c2df-4c12-ac03-9b8d581a8af8.jpg" width="600"/> </div><br>
@ -95,7 +97,7 @@
- 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失使得下一个新的连接不会出现旧的连接请求报文
# TCP 可靠传输
## TCP 可靠传输
TCP 使用超时重传来实现可靠传输如果一个已经发送的报文段在超时时间内没有收到确认那么就重传这个报文段
@ -109,7 +111,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文
<div align="center"><img src="https://latex.codecogs.com/gif.latex?RTO=RTTs+4*RTT_d" class="mathjax-pic"/></div> <br>
其中 RTT<sub>d</sub> 为偏差的加权平均值
# TCP 滑动窗口
## TCP 滑动窗口
窗口是缓存的一部分用来暂时存放字节流发送方和接收方各有一个窗口接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小发送方根据这个值和其它信息设置自己的窗口大小
@ -119,13 +121,13 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/a3253deb-8d21-40a1-aae4-7d178e4aa319.jpg" width="800"/> </div><br>
# TCP 流量控制
## TCP 流量控制
流量控制是为了控制发送方发送速率保证接收方来得及接收
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小从而影响发送方的发送速率将窗口字段设置为 0则发送方不能发送数据
# TCP 拥塞控制
## TCP 拥塞控制
如果网络出现拥塞分组将会丢失此时发送方会继续重传从而导致网络拥塞程度更高因此当出现拥塞时应当控制发送方的速率这一点和流量控制很像但是出发点不同流量控制是为了让接收方能来得及接收而拥塞控制是为了降低整个网络的拥塞程度
@ -142,15 +144,15 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/910f613f-514f-4534-87dd-9b4699d59d31.png" width="800"/> </div><br>
## 1. 慢开始与拥塞避免
### 1. 慢开始与拥塞避免
发送的最初执行慢开始 cwnd = 1发送方只能发送 1 个报文段当收到确认后 cwnd 加倍因此之后发送方能够发送的报文段数量为248 ...
注意到慢开始每个轮次都将 cwnd 加倍这样会让 cwnd 增长速度非常快从而使得发送方发送的速度增长速度过快网络拥塞的可能性也就更高设置一个慢开始门限 ssthresh cwnd >= ssthresh 进入拥塞避免每个轮次只将 cwnd 1
注意到慢开始每个轮次都将 cwnd 加倍这样会让 cwnd 增长速度非常快从而使得发送方发送的速度增长速度过快网络拥塞的可能性也就更高设置一个慢开始门限 ssthresh cwnd \>= ssthresh 进入拥塞避免每个轮次只将 cwnd 1
如果出现了超时则令 ssthresh = cwnd / 2然后重新执行慢开始
## 2. 快重传与快恢复
### 2. 快重传与快恢复
在接收方要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认例如已经接收到 M<sub>1</sub> M<sub>2</sub>此时收到 M<sub>4</sub>应当发送对 M<sub>2</sub> 的确认
@ -161,10 +163,3 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、
慢开始和快恢复的快慢指的是 cwnd 的设定值而不是 cwnd 的增长速率慢开始 cwnd 设定为 1而快恢复 cwnd 设定为 ssthresh
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/f61b5419-c94a-4df1-8d4d-aed9ae8cc6d5.png" width="600"/> </div><br>
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>