Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions Network/Network-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
- [拥塞避免算法](#%E6%8B%A5%E5%A1%9E%E9%81%BF%E5%85%8D%E7%AE%97%E6%B3%95)
- [快速重传](#%E5%BF%AB%E9%80%9F%E9%87%8D%E4%BC%A0)
- [TCP New Ren 改进后的快恢复](#tcp-new-ren-%E6%94%B9%E8%BF%9B%E5%90%8E%E7%9A%84%E5%BF%AB%E6%81%A2%E5%A4%8D)
- [网络七层模型与四层模型](#%e7%bd%91%e7%bb%9c%e4%b8%83%e5%b1%82%e6%a8%a1%e5%9e%8b%e4%b8%8e%e5%9b%9b%e5%b1%82%e6%a8%a1%e5%9e%8b)
- [网络模型历史及起源](#%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9e%8b%e5%8e%86%e5%8f%b2%e5%8f%8a%e8%b5%b7%e6%ba%90)
- [OSI 模型](#OSI+%e6%a8%a1%e5%9e%8b)
- [分层功能职责](#%e5%88%86%e5%b1%82%e5%8a%9f%e8%83%bd%e8%81%8c%e8%b4%a3)
- [HTTP](#http)
- [Post 和 Get 的区别](#post-%E5%92%8C-get-%E7%9A%84%E5%8C%BA%E5%88%AB)
- [常见状态码](#%E5%B8%B8%E8%A7%81%E7%8A%B6%E6%80%81%E7%A0%81)
Expand Down Expand Up @@ -269,6 +273,67 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。

假如我有一个分段数据是 1 ~ 10 这十个序号的报文,其中丢失了序号为 3 和 7 的报文,那么该分段的最大序号就是 10。发送端只会收到 ACK 序号为 3 的应答。这时候重发序号为 3 的报文,接收方顺利接收并会发送 ACK 序号为 7 的应答。这时候 TCP 知道对端��有多个包未收到,会继续发送序号为 7 的报文,接收方顺利接收并会发送 ACK 序号为 11 的应答,这时发送端认为这个分段接收端已经顺利接收,接下来会退出快恢复阶段。

# 网络七层模型与四层模型

## 网络模型历史及起源

网络模型不是一开始就有的,在网络刚发展时,网络协议是由各互联网公司自己定义的,比如那时的巨头网络公司 IBM、微软、苹果、思科等等,他们每家公司都有自己的网络协议,各家的协议也是不能互通的,那时候大家觉得这是可以的,但对消费者来说这实际上是技术垄断,因为你买了苹果的设备就不能用微软的设备,因为他们的协议不是一样的,没有统一的标准来规范网络协议,都是这些公司的私有协议。

这样大大的阻碍了互联网的发展,为了解决这个问题,国际标准化组织 1984 提出的模型标准,简称 OSI(Open Systems Interconnection Model),这是一个标准,并非实现。

TCP/IP 协议就是基于此模型设计。

![OSI 模型](http://img.m2ez.com/15036719876853.jpg)

OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

这种分层模型是我们计算机科学中常用的方法,分层直接通过规定好的接口进行交互,每一层其实对它的上层或下层都是一个黑盒,其实它的上层和下层也不关心它内部的实现,只关心它们之间进行交互的接口,接口是规定的信息,要给到什么都是规定好的。

这种分层模型的好处就是可以对任何一层进行独立升级、优化,只要保持接口不变那么这个模型整体就不会有问题,比如说物理层从以太网线到光纤,我们的网络速度大大提高,但是整个技术革新的时候,其他层是没有做更多工作的,工作只在物理层完成。这样做的好处也同时提高了我们技术的发展革新速度。

## 分层功能职责

* 物理层:底层数据传输,如网线;网卡标准。
* 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。
* 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。
* 传输层:端到端传输数据的基本功能;如 TCP、UDP。
* 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。
* 标识层:数据格式标识,基本压缩加密功能。
* 应用层:各种应用软件,包括 Web 应用。

![](http://img.m2ez.com/15036733761966.jpg)

## 数据交互

![](http://img.m2ez.com/15036739518682.jpg)

我们简化模型,假设有 计算机 A 和 计算机 B 要进行信息交互,比如 A 上开发了一个网页,需要 B 去访问。B 发出一个请求给 A,那么请求数据从 B 的 应用层开始向下传到表示层、再从表示层传到会话层直到物理层,通过物理层传递到 A ,A 的物理层接到请求后将请求向上传递到自己的应用层,应用层再将要请求的数据向自己的物理层方向传递然后 B 接到数据传递数据到自己的应用层。这里简化理解,我们去除了三次握手四次挥手的逻辑。

数据就是这样在计算机和网络中进行传递的。这其中做的工作就是每层进行层层解包和附加自己所要传递的信息,术语叫做报头。

在四层,既传输层数据被称作段(Segments);三层网络层数据被称做包(Packages);二层数据链路层时数据被称为帧(Frames);一层物理层时数据被称为比特流(Bits)。

![](http://img.m2ez.com/15036752337077.jpg)

TCP/IP 模型将 OSI 模型由七层简化为四层,传输层和网络层被完整保留,因此网络中最核心的技术就是传输层和网络层技术。

TCP/IP 协议中每层技术举例:

网络访问层:ARP、RARP

互联网层:ICMP、IP

传输层:TCP、UDP

应用层:DNS、FTP、HTTP、SMTP、TELNET、IRC、WHOIS

网络七层模型是一个标准,而非实现。

网络四层模型是一个实现的应用模型。

网络四层模型由七层模型简化合并而来


# HTTP

HTTP 协议是个无状态协议,不会保存状态。
Expand Down