博主:爱码叔
个人博客站点: icodebook
公众号:漫话软件设计
专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上,欢迎大家关注访问!
本文个站链接

为什么计算机网络有这么多层

初接触计算机网络,不理解为什么有这么多层。发个信息不是很简单的事情吗?

就像寄信,扔到邮筒里,邮递员投递到收信人邮箱。这个过程很简单啊,为什么计算机发个信息这么麻烦?

寄信过程看似简单,其实和计算机发送信息的底层原理是一样的。计算机网络传输要做的事情,现实中寄信也一样不少。

下面我们就通过寄信这个例子来理解计算机网络。

一、分层和协议

计算机网络有5层、7层模型。模型中的每层又有不同种类的协议。在进入例子前,我们先看看什么是分层和协议。

分层

分层是为了在逻辑上划分职责,确保每一层职责单一,这对于开发同学很容易理解。反过来我们也可以从职责找对应的层。一会我们尝试在寄信例子中找找计算机网络中对应的层。

协议

我们再看看什么是协议。

词典解释:经过谈判、协商而制定的共同承认、共同遵守的文件。

简单说就是双方达成一致,需要一同遵守的规则。

通信协议可以理解为通信双方达成一致的规则,以确保一方能把信息发出,另一方能接收并且读懂。

特别注意这里的信息并不单单指信的内容。信息也指信封上的地址、邮编等内容。

二、理解计算机网络五层结构

2.1 书信格式 — 应用层

书信的内容是最重要的信息。书信内容基于约定格式书写,书信格式是信件内容的协议。现实中书信有标准格式,如下图:

书信如果没有按照上面格式书写,其实并不妨碍阅读。但是计算机只能机械的根据约定格式解析信息,所以格式对于计算机传输信息非常重要。

此处对应网络的应用层协议。确保你发给我的信息是约定好的格式,以便我能解析并读懂。

应用层常见协议

  1. HTTP
  2. SMTP及POP

2.2 收信人地址、邮编 — 网络层

寄信人需要在信封上填写收信人地址和邮编信息。邮递员根据这些信息找到收件人信箱,完成投递。

这里的协议是地址书写规则以及邮编的规范。不按照约定写地址或者胡乱写邮编,信件是要被退回的。

此处对应网络的网络层协议。确保信息被发送到指定的IP的电脑。每一台电脑就好比上图中有唯一编号的邮箱。

网络层常见协议

  1. IP

2.3 寄信需要中转站多次中转运送 — 数据链路层

信件并不是一次运输就能发送到收件人手中。邮递员取信后进行分拣,根据规则发往某个邮政网点。信件还会继续在邮政网点中根据规则流动。运送到离收信地址最近的网点后,邮递员投递到收件人邮箱。

这里的协议是信件在网点中流动与接收的规则。

此处对应网络的数据链路层协议。除了上面例子所说的让信息在网络节点中流动,还定义了如下规则:

  1. 如何将二进制信息封装为帧进行传输。
  2. 如何进行错误检查,确保传输准确性。

数据链路层常见协议

  1. ARP
  2. NAT
  3. DNS
  4. 以太网

2.4 要送信,先修路 — 物理层

上面说了这么多,其实玩的都是虚的, 拔了网线啥也不是…

如果没有通往收信人的路,前面的工作都是瞎忙。最底层支撑送信的是道路。道路将一个个邮政网点以及寄、收信人地址串连起来。

此处对应网络的物理层。也就是通信的媒介,比如网线。这一层没有协议,但是物理层要具备传输信号的物理特性。

2.5 挂号信 — 传输层

前文已经讨论过下面这几层:

  1. 应用层
  2. 网络层
  3. 数据链路层
  4. 物理层

熟悉计算机网络的同学一眼就能看出少了传输层。耳熟能详的TCP和UDP协议都服务于这一层。其实,寄信这个例子也存在对应场景。我们来看看挂号信。

挂号信和平信最大的区别是需要收信人签收。也就是说挂号信保证送达。另外挂号信需要去邮局发信,不能随便丢到邮筒里。可以看到挂号信的邮寄和签收过程都和平信存在差异。


挂号信保证送达?!告诉我,你想到什么了?是不是TCP协议?

没错,这个例子对应的就是传输层。挂号信需要去邮局发信,平信通过邮箱发送,这也对应了不同传输层协议使用的端口不一样。

计算机网络中,传输层协议定义了信息传输的约定。拿TCP协议举例。主要做了下面几件事情。

发送方

  1. 分割数据
  2. 加上TCP包头后按顺序发送
  3. 接收接收方的确认信息,未确认会再次发送

接收方

  1. 去掉包头后,组装数据
  2. 发送确认信息给发送方
  3. 处理重复数据包

其实就是拆信息、发送、组装信息的过程。

为了确保送达,加入了确认机制。
为了保证传输正确,加入了验证机制。
此外还有开始、结束的握手、挥手机制。、

传输层常见协议

  1. TCP
  2. UDP

总结

通过寄信,我们找到了计算机网络五层架构对应的真实例子。

  1. 应用层 (书信格式言)
  2. 传输层 (挂号信、平信的区别)
  3. 网络层 (收信人地址、邮编)
  4. 数据链路层 (邮局网点间运输)
  5. 物理层 (公路)

记住寄信的例子,就再也不用担心记不住计算机网络结构了!计算机领域优秀的设计都来源于现实世界,计算机网络也是如此。

图文轻松理解计算机网络五层架构相关推荐

  1. C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理

    首先我们先了解一下内存: C语言使用malloc/free动态管理内存空间,C++引入了new/delete,new[]/delete[]来动态管理内存. 如果大家在自学C++中遇到困难,想找一个学习 ...

  2. 趣味理解:三层架构与养猪—《.NET深入体验与实战精要》

    为了更好地让初学者轻松入门,这里仍然采用趣味性的方式聊一些常用技术点,致力于.NET新手们的快速提高!知识都是普通的,关键是学习的思路.技术源于生活,技术原来可以这样学.抛砖引玉而已.  层次结构在现 ...

  3. 吐血整理《计算机网络五层协议之物理层(中)》

    吐血整理 <计算机网络 五层协议之物理层(上)> 吐血整理 <计算机网络 五层协议之物理层(下)> 物理层(中篇) 1.信道的基本概念(续) 1.1信道的极限容量 1.2.信道 ...

  4. 轻松理解UML用例图时序图类图的教程

    摘自https://zhuanlan.zhihu.com/p/29874146 写在前面 当你老大扔给你这样的图,或者你需要完成某些功能而去看文档的时候发现以下类似这样的图会不会不(一)知(脸)所(懵 ...

  5. J2EE五层架构概念[转+整理]

    摘自: https://blog.csdn.net/u010376788/article/details/49338225 https://blog.csdn.net/cactusz/article/ ...

  6. 视频教程-【深入理解计算机网络】“数制”视频课程-网络技术

    [深入理解计算机网络]"数制"视频课程 国内IT图书作者,网络技术讲师,华为授权讲师.共著有近60部计算机网络著作,新代表作:<Cisco/H3C交换机|路由器"豪 ...

  7. 软考高级系统架构设计师系列之:深入掌握软考高级系统架构设计师考试的知识分布点,轻松应对高级系统架构设计师考试

    软考高级系统架构设计师系列之:深入掌握软考高级系统架构设计师考试的知识分布点,轻松应对高级系统架构设计师考试 一.考试科目 二.考试大纲要求 三.信息系统综合知识点和分数的分布情况 四.系统架构设计案 ...

  8. mysql 锁机制 mvcc_轻松理解MYSQL MVCC 实现机制

    轻松理解MYSQL MVCC 实现机制 轻松理解MYSQL MVCC 实现机制 #### 1. MVCC简介 ##### 1.1 什么是MVCC MVCC是一种多版本并发控制机制. ##### 1.2 ...

  9. 吐血整理《计算机网络五层协议之物理层(下)》

    吐血整理<计算机网络五层协议之物理层(上)> 吐血整理<计算机网络五层协议之物理层(中)> 绝知此事要躬行! 物理层(下篇) 1.数字传输系统 1.1PCM的基本原理 1.2 ...

最新文章

  1. linux shell curl 超时与重试
  2. 解决vscode下载速度慢的方法
  3. bootstrap布局两列或者多列表单
  4. 侧边栏跳转_微信和三星首次系统级合作:在负一屏和侧边栏直接打开小程序
  5. HALCON示例程序ball电路板焊点识别、检测、测量程序2剖析(与上篇文章使用了不同方法)
  6. STL容器的capacity()和reserve()演示-----vector
  7. “一个千古绝伦的大智者”莱布尼茨
  8. LDAP组的概念以及命令
  9. 华为技术有限公司申请“荣耀视频”、“荣耀钱包”等商标
  10. Codeforces Round #315 (Div. 1) A. Primes or Palindromes? 暴力
  11. BERT模型实战之多文本分类(附源码)
  12. 【新版】Android技术博客精华汇总
  13. OpenCV教程:超详细的OpenCV入门教程,值得收藏
  14. java笔试题库_java笔试题50道 收藏版
  15. unity连接mysql数据库-最新详细
  16. 为什么有些公司不招大龄程序员?
  17. Unirech腾讯云国际版-使用腾讯云服务器手动建立WordPress 个人站点Linux系统教程
  18. objdump指令 elf文件转成lst文件
  19. 共享充电宝方案原理,具体部件组成以及主控MUC参数
  20. linux系统怎么制作win10,win10 + linux 制作双系统教程(我本身是win10系统)

热门文章

  1. NABCD---生活日历
  2. 管理之旅(01)沙漠领导力
  3. TortoiseGit配合msysGit
  4. 基于TC358870XBG的头戴式显示方案
  5. 【无标题】使用Ping命令制作的批量Ping工具,可对指定Ip进行ping测试,并将结果记录到txt文件
  6. 2021最新免费申请微软A1plus账号,免费获得office365
  7. bak文件转换成sql文件_数据库bak文件转sql
  8. ShopWithMe安装RFID系统,建立新型智慧快闪店
  9. sqlcipher android studio,如何开始使用SQLCipher for Android?
  10. centos 7 opencv3 安装——yyw合并