Update 计算机网络.md

This commit is contained in:
heibaiying 2020-01-11 20:42:29 +08:00 committed by GitHub
parent 1e86bc3801
commit 42d0c400de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,12 +35,12 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#57-TCP-的可靠传输">5.7 TCP 的可靠传输</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#58-流量控制">5.8 流量控制</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#59-拥塞控制">5.9 拥塞控制</a><br/>
<a href="#五应用层">、应用层</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#51-域名系统--DNS">5.1 域名系统 DNS</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#52-文件传输协议-FTP">5.2 文件传输协议 FTP</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#53-远程终端协议-TELNET">5.3 远程终端协议 TELNET</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#54-万维网-WWW">5.4 万维网 WWW</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#55-动态主机配置协议-DHCP">5.5 动态主机配置协议 DHCP</a><br/>
<a href="#六应用层">、应用层</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#61-域名系统--DNS">6.1 域名系统 DNS</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#62-文件传输协议-FTP">6.2 文件传输协议 FTP</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#63-远程终端协议-TELNET">6.3 远程终端协议 TELNET</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#64-万维网-WWW">6.4 万维网 WWW</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#65-动态主机配置协议-DHCP">6.5 动态主机配置协议 DHCP</a><br/>
</nav>
## 一、体系结构
@ -192,7 +192,7 @@ MAC地址为 48 位的6 个字节),通常表示为 12 个 16 进制数,
网际协议Internet Protocol是网络层中最重要的协议也是 TCP\IP 两大核心协议之一,所有需要互联的计算机网络都需要遵循该协议,以便能够将不同网络在全世界范围内连接起来。该层传输的基本数据单元是 IP 数据报,其格式如下:
<div align="center"> <img src="../pictures/IP数据报格式.png"/> </div>
<div align="center"> <img width="600px" src="../pictures/IP数据报格式.png"/> </div>
各字段的含义如下:
@ -236,7 +236,7 @@ IP 数据报中的源地址和目标地址均是 IP 地址,而数据链路层
IP 地址由 ICANNThe Internet Corporation for Assigned Names and Numbers互联网名称与数字地址分配机构进行分配它是一个在全世界范围内唯一的 32 位标识符,最早的 IP 地址采用两级分类,只由 `网络号 + 主机号` 组成,分为以下五类:
<div align="center"> <img src="../pictures/IP地址分类.png"/> </div>
<div align="center"> <img width="600px" src="../pictures/IP地址分类.png"/> </div>
ABC 三类是最常使用的类型,其类别位分别为 010110 。需要注意的是另外并非所有 IP 地址都可用来分配,限制如下:
@ -291,9 +291,9 @@ IP 地址192.168.10.198 二进制IP地址11000000.10101000.000
### 4.5 构成超网
无类别域间路由CIDRClassless Inter-Domain Routing是一个给用户分配 IP 地址以及在互联网上有效地路由 IP 数据报的地址归类方法。它消除了传统的 A 类B 类 和 C 类地址以及划分子网的概念,采用无分类的两级编址:
$$
```
IP地址 ::= {<网络前缀>,<主机号>}
$$
```
并使用斜线记法进行表示:
<center>128.14.35.7 / 20 = <u>10000000 00001110 0010</u>0011 00000111</center>
@ -392,7 +392,7 @@ RFC 1918 中指明了一些专用地址Private Address这些地址只
TCP 虽然是面向字节流的,但其传输的基本数据单元则是报文段。一个 TCP 报文段分为首部和数据两部分TCP 首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项n 为整数),具体格式如下:
<div align="center"> <img src="../pictures/TCP报文首部.jpg"/> </div>
<div align="center"> <img width="600px" src="../pictures/TCP报文首部.jpg"/> </div>
各字段的含义如下:
@ -418,7 +418,7 @@ TCP 虽然是面向字节流的,但其传输的基本数据单元则是报文
TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段,具体如下:
<div align="center"> <img src="../pictures/三次握手.png"/> </div>
<div align="center"> <img width="600px" src="../pictures/三次握手.png"/> </div>
1. 服务器进程 B 首先创建传输控制模块 TCB然后进入 LISTEN收听状态准备接受客户端的连接请求
@ -431,7 +431,7 @@ TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间
数据传输结束后,通信的双方都可以释放连接,具体过程如下:
<div align="center"> <img src="../pictures/四次挥手.png"/> </div>
<div align="center"> <img width="600px" src="../pictures/四次挥手.png"/> </div>
1. 假设应用进程 A 先主动关闭连接,此时需要发送连接释放报文段:首部终止控制位 FIN 为 1序号 `seq = u`,其中 u 等于前面传送过的数据的最后一个字节的序号加 1 。之后 A 进入 FIN-WAIT-1终止等待 1状态
@ -494,22 +494,24 @@ RFC 793 建议 MSL 设置为 2 分钟,现在的网络环境已经有了质的
### 5.7 TCP 的可靠传输
TCP 的滑动窗口以字节为单位,并采用以下方法来计算超时重传时间 RTORetransmission Time Out
$$
```
RTO = RTT_S + 4 × RTT_D
$$
```
其中 RTT<sub>S</sub> 表示加权平均往返时间,计算方式如下:
$$
```
新的 RTT_S = (1-α) × 旧的 RTT_S + α × 新的 RTT 值
$$
```
+ RTT Round Trip Time代表报文段的往返时间它记录一个报文段从发出去到收到确认的时间长度
+ 第一次测量时, RTT<sub>S</sub> 的值就等于 RTT 的值,之后的 RTT<sub>S</sub> 则采用上面的公式进行计算;
+ 其中 0 ≤ α1 RFC 6298 推荐其值取 0.125 。
RTT<sub>D</sub> 是 RTT 偏差的加权平均值,计算方式如下:
$$
```
新的 RTT_D = (1-β) × 旧的 RTT_D + β × |RTT_S - 新的 RTT 值|
$$
```
+ 第一次测量时RTT<sub>D</sub> 的值就等于 RTT 值的一半,之后的 RTT<sub>D</sub> 则采用上面的公式进行计算;
+ β 值是一个小于 1 的系数RFC 6298 推荐其值取 0.25 。
@ -547,9 +549,9 @@ $$
<div align="center"> <img src="../pictures/拥塞窗口变化情况.png"/> </div>
## 、应用层
## 、应用层
### 5.1 域名系统 DNS
### 6.1 域名系统 DNS
目前我们都是使用易于理解的域名来访问互联网应用,但传输层需要的则是 IP 地址因此需要使用域名系统DNSDomain Name System来进行域名与 IP 地址之间的转换 。
@ -563,7 +565,7 @@ $$
<div align="center"> <img src="../pictures/互联网的域名空间.png"/> </div>
### 5.2 文件传输协议 FTP
### 6.2 文件传输协议 FTP
文件传输协议FTPFile Transfer Protocol是用于在网络上进行文件传输的一套标准协议允许客户指明文件的类型和格式并获得文件的存储权限。FTP 的服务器进程由两大部分组成:
@ -572,20 +574,20 @@ $$
因此一个 FTP 服务器进程可以同时为多个客户端进程提供服务。
### 5.3 远程终端协议 TELNET
### 6.3 远程终端协议 TELNET
Telnet 协议是 Internet 远程登录服务的标准协议和主要方式它为用户提供了在本地计算机上访问远程主机的能力。Telnet 能将用户的击键传到远程主机,同时也能将远程主机的输出通过 TCP 连接返回到用户屏幕,这种服务是透明的,用户感觉键盘和显示器好像都是直接连在远程主机上,因此 Telnet 又称为终端仿真协议。
### 5.4 万维网 WWW
### 6.4 万维网 WWW
万维网是一个分布式的超媒体系统,它是超文本系统的扩展。它包含以下重要概念:
**1. 统一资源定位符 URL**
用于定位互联网上资源的位置和访问这些资源的方法,其格式如下:
$$
```
<协议>://<主机>:<端口>/<路径>
$$
```
**2. 超文本传送协议 HTTP**
HTTP 协议定义了浏览器如何向万维网请求文档,以及服务器如何把文档传送给浏览器。
@ -594,7 +596,7 @@ HTTP 协议定义了浏览器如何向万维网请求文档,以及服务器如
超文本标记语言 HTML 是一种标识性的语言,包括一系列标签,这些标签可以用于说明文字、图形、动画、声音、表格、链接等各种类型的资源,并能将网络文档格式进行统一。
### 5.5 动态主机配置协议 DHCP
### 6.5 动态主机配置协议 DHCP
通常连接到互联网的计算机的协议软件都需要配置多个项目,如 IP 地址,子网掩码,默认路由器的 IP 地址以及域名服务器的 IP 地址等等,为了省去配置的麻烦,现在互联网普遍采用动态主机配置协议 DHCPDynamic Host Configuration Protocol它提供了一种即插即用联网的机制。此时你只需要采用默认的配置即可如下所示