Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TCP/IP四层模型与OSI七层模型 #16

Open
dark9wesley opened this issue Apr 25, 2021 · 0 comments
Open

TCP/IP四层模型与OSI七层模型 #16

dark9wesley opened this issue Apr 25, 2021 · 0 comments
Labels

Comments

@dark9wesley
Copy link
Owner

dark9wesley commented Apr 25, 2021

TCP/IP四层模型

TCP/IP协议是目前事实上的通信标准,创造性的提出了分层的思想,把复杂的网络通信问题分而治之,每一层只专心负责做好自己的事情。

TCP/IP协议栈分为四层,从下至上分别是:

  1. 链接层:负责在以太网、WIFI这种底层网络发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的唯一设备,所以也叫做MAC层。
  2. 网际层:IP协议就处于这一层,可以在链路层的基础上,用IP地址取代MAC地址,把众多局域网、广域网连接成一个巨大的网络。
  3. 传输层:负责把数据在IP地址标记的两点之间进行“可靠”的传输,TCP和UDP就在这一层。
  4. 应用层:因为有前面三层打好的基础,这一层有各种面向应用的协议。例如Telent、SSH、FTP、HTTP。

OSI七层模型

由于除了TCP/IP以外还有很多其他网络协议,整个网络世界比较混乱。

国际标准组织(ISO)为了大一统,于是就设计了一个新的网络分层模型,想用这个新模型来统一既存的各种协议。

OSI模型分为7层,部分与TCP/IP很像,从下至上分别是:

  1. 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线箱等。
  2. 第二层:链接层,相当于TCP/IP中的链接层。
  3. 第三层:网际层,相当于TCP/IP中的网际层。
  4. 第四层:传输层,相当于TCP/IP中的传输层。
  5. 第五层:会话层,维护网络中的连接状态,即保持会话和同步。
  6. 第六层:表示层,把数据转换为合适的,可理解的语法和语义。
  7. 第七层: 应用层,面向具体应用传输数据。

OSI七层模型实际上是一个参考,不是强制标准。

两个分层的映射关系

  1. 第一层:物理层,TCP/IP里无对应。
  2. 第二层:链接层,对应TCP/IP中的链接层。
  3. 第三层:网际层,对应于TCP/IP中的网际层。
  4. 第四层:传输层,对应于TCP/IP中的传输层。
  5. 第五、六、七层:统一对应到 TCP/IP 的应用层。

可以将OSI七层模型理解为“理想”,而TCP/IP模型则是现实。

由于TCP/IP实际应用时的会话连接、编码转换、压缩等和具体应用经常连接得很紧密,很难分开,例如HTTP协议里就包括了连接管理和数据格式等定义。

所以“理想”很美好,有七层,而现实只有四层。

TCP/IP的传输过程

发送的过程就是通过TCP/IP协议栈逐层向下,每一层都添加本层的专有头,层层打包,然后通过下层发送出去。

接受的过程则是相反的操作,从下往上传递数据,逐层解包,每层去掉本层的专有头,上层就能拿到自己的数据。

上层不关心下层的具体实现细节,所以HTTP协议不在乎下层是不是TCP/IP协议,它只在乎一个可靠的传输链路。

@dark9wesley dark9wesley changed the title HTTP HTTP概述以及与HTTP有关的协议 Apr 25, 2021
@dark9wesley dark9wesley changed the title HTTP概述以及与HTTP有关的协议 HTTP概述以及与HTTP有关的协议 May 9, 2021
@dark9wesley dark9wesley changed the title HTTP概述以及与HTTP有关的协议 TCP/IP四层模型与OSI七层模型 May 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant