多点头发,少点代码

我是龙叔,一个分享互联网技术和心路历程的大叔

本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。

https://github.com/midou-tech/articles

最近很忙,写技术文章还是很花费时间的。但是,就在前几天出了一篇TCP粘包问题的文章 (TCP粘包,难道说这是一个伪命题???),反映不错。本来计划计算机网络文章慢慢的出,现在看来必须的加快速度了。

龙叔在学习网络的时候有这样几个疑惑:

  • 为什么需要抽象出五层模型出来?
  • 难道不是直接在网线(光纤传输)中传输数据就好了么?大不了到了端点用的是WIFI传输(无线信号)。

这两个问题真的很困惑我,不知道大家有没有这样的疑惑?如果有的话,龙叔将为你答疑解惑。如果有其他的疑惑欢迎加我微信沟通 (公众号回复【龙叔】即可获得龙叔的联系方式)。

在回答问题之前我先带你领略下使用最为广泛的五层模型,分别是哪五层?各层解决了什么问题?

五层模型是哪五层?

左边是OSI的七层模型,这模型很牛逼。但是现在基本是存在教科书的啦,学习网络的同学都是知道有这个模型,实际情况使用很少的。

右边是TCP/IP五层分层模型。分别是物理层(硬件)、数据链路层(网卡层)、网络层(互联网层)、传输层、应用层。在日常工作中接触最多的是上两层,偶尔会去触碰网络层。数据链路层和物理层不是我们工作范围。当然如果是一些专门的网络安全部门,网管(不是网吧的网管)等岗位,下面几层就是非常熟悉的。

五层模型还是很清楚明了的,每层用到的重要协议都表示在图中,还表示了操作系统的内核工作范围和用户工作范围。

各层解决了什么问题?

应用层:

应用层是网络体系架构中的最高层。这意味着什么?想想就知道,最高层就是要和人交互的层次嘛。

应用层是计算机网络与用户交互的接口或者界面直接向用户提供服务。

提供哪些服务呢?

这个…,就非常多了,比如Web服务、E-mail服务、DNS服务、DHCP服务、FTP服务等等。

所以很明了,应用层解决的问题就是如何为用户提供服务,以及提供高效、可靠、满意的服务。如何解决这些问题也就是我们这些攻城狮存在的必要了,根据不同的业务场景用不同的方法解决这些问题。例如使用多线程、协程,高并发的web框架,使用epoll处理模式,分布式处理等等技术来解决提供高效、可靠、满意的服务。

总结下,应用层是为用户提供服务接口或者界面,同时要解决服务的高效、可靠、满意。

传输层

负责端到端的通信,是面向网络通信的低三层和面向信息处理的高三层之间的中间一层,起到桥梁作用。很明显了,传输层解决的问题就是端到端的传输问题。

看到这句话肯定很多人有疑问,先别说,继续看(我知道有人会说,网络层不是已经把数据转发到对应的主机了么,为何还要传输层?)。

位于两台网络主机间的真正数据通信主体不是这两台主机,而是两台主机中的各种网络应用进程,也就是应用程序。一台主机上有很多应用程序,很多应用程序都在进行网络通信,这时候就必须使用到传输层的知识去解决了。

怎样完成端到端的传输呢?

分为两个步骤:一是虚拟传输连接的建立(此处仍仅针对面向连接的传输层协议),二是源端用户数据沿着传输连接传送到目的端。

在整个数据传输过程中,传输层服务需要完成以下8个方面的基本功能:传输层寻址、传输连接建立、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复。

这里面每个功能都能细说一篇文章,这里就不一一展开了,后面会出系列的文章,所以点关注,不迷路。每个功能都是面试的考点,所以我后面一定会快速更新出来的。

总结下,传输层主要是为了解决端到端(这里的端到端指的是进程到进程)的通信,起到网络通信桥梁作用。

网络层

网络层也被称为中转层,是网络体系结构中非常重要的一层,在技术上又是非常复杂的一层,因为它既要解决不同网络的节点间通信的路由和协议识别问题,又要通过路由选择策略解决网络拥塞问题,尽可能提高网络通信的可靠性。

网络层解决的主要问题是,从A主机把数据运送到B主机是走高速呢、飞机呢、还是火车呢或者是多种混合的方案呢。一句话就是,网络层关注的是如何将分组从源端沿着网络路径传送到目的端(这个端指的是主机不是应用程序)。

为了实现这个目标,网络层必须知道通信子网的拓扑结构,并且在拓扑结构中选择适当的路径。同时网络层还必须谨慎地选择路由路径,以避免发生某些通信线路和路由器负载过重,而其他线路和路由器空闲的情形。

总结下,网络层主要是为了解决不同网络之间数据传输和转发问题。

数据链路层

物理层中也有许多规程或协议,但它们是用来构建物理传输线路、建立物理意义的网络通信,不是用来控制数据传输的。

设计数据链路层的主要解决的问题就是在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向它的上一层(网络层)提供高质量的服务。一句话总结就是 控制数据传输。

总结下,数据链路层是为了解决数据传输的控制作用。

物理层

物理层位于各计算机网络体系结构的最底层,主要负责在物理介质上为数据链路层提供原始比特流传输的物理链接

物理层解决的问题就是数据传输。上面的所有层都是封装数据和管理,物理层是传输数据的唯一出口,所有数据到达物理层都会变成二进制的载波信号。

总结下,物理层就是真正传输数据。

为什么不是直接在物理线路中进行通信就行了?而是搞出这么多层网络模型呢?

我觉得在学习计算机网络时能思考这个问题的都是非常

计算机网络为什么需要抽象出五层模型?相关推荐

  1. 计算机网络--从五层模型开始(完善中)

    计算机网络-五层模型 OSI 7.五层模型.TCP/IP 4 1. 应用层 1.1 DNS 1.1.1 DNS解析过程 1.2 HTTP协议 1.2.1 URI & URL 1.2.2 HTT ...

  2. 【计算机网络基础】-- OSI的七层模型和TCP/IP的五层模型

    [计算机网络基础]-- OSI的七层模型和TCP/IP的五层模型   大家好,我是Lampard~~ 欢迎来到计算机网络基础系列的博客 OSI七层模型 开放式系统互联通信参考模型(英语:Open Sy ...

  3. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_1-1(计算机网络体系_七层模型五层模型TCP/IP四层模型、TCPUDPIP的故事【TCP三握四挥】)整起

    PART1:计算机网络体系可以大致分为一下三种, 每一层有自己对应的协议,每一层都是向上一层提供服务,每个分层中所有的协议都称为协议栈 协议:网络中传输信息时的规范和规则 各层一些重要的协议 网络:通 ...

  4. 13、计算机网络的七层模型、四层模型 以及 五层模型

    目录 ​ 一.OSI七层模型 1.1 七层模型 1.2 每层对应的功能及协议 1.3 为什么使用分层网络模型(分层的好处) 1.4 数据在各层之间的传递过程 二.TCP/IP协议栈(四层模型) 2.1 ...

  5. 通俗易懂讲解计算机网络五层模型是如何相互协作的

    正文 上面说了一些题外话,哈哈.下面我们开始今天的知识点. 互联网相隔n公里路的两台计算机,是如何进行数据的传送的呢?在成千上万台的计算机中,一台计算机是如何正确着找到另外一个计算机,并把数据传给它的 ...

  6. 计算机网络--详述OSI七层模型与TCP/IP五层模型

    OSI七层协议 一.OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识--OSI参考模型. 1.OSI的来源 OSI(Open System Interconnect),即开放式系统互联. ...

  7. 计算机网络的五层模型和七层模型

    文章目录 前言 网络五层模型 网络七层模型 前言 今天介绍一点简单的,但是也是很重要的问题,网络的五层模型和七层模型~ 网络五层模型 (1)物理层 使用物理的线路进行通信,传输比特流,可以用集线器进行 ...

  8. 一句口诀记忆计算机网络七层架构模型和TCP/IP五层模型(记不住你打我)

    文章目录 前言 一. 1.1 OSI七层网络模型(口诀:物联网叔会使用) 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 二. TCP/IP 五层模型(记忆口诀:物联网,叔应用) 物理层 ...

  9. 【计算机网络】网络通信基础(IP地址,端口号,五元组,OSI七层模型,TCP/IP五层模型,封装和分用)

    目录 初识网络 网络通信基础 IP地址 端口号 认识网络协议 五元组 协议分层 封装和分用 初识网络 网络互连 随着时代发展,需要计算机之间相互通信,共享软件和数据,即多台计算机相互协同工作来完成某个 ...

最新文章

  1. 【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(1)
  2. 这是马?小鹏发布可骑乘「智能马」,四不像长相太奇葩!
  3. 《linux c编程指南》学习手记5
  4. C/S模型UDP实现
  5. Javascript闭包概念剖析
  6. 一个能够保护个人收藏夹隐私的Chrome扩展
  7. 开发者说PaddleOCR的.NET封装与应用部署
  8. 黑色炫酷粒子动态html网站源码
  9. 【报告分享】万达文旅项目新媒体营销操作手册.pdf(附下载链接)
  10. 数据库索引如何工作? [关闭]
  11. c语言实现 网络嗅探程序代码,一个简易网络嗅探器的实现源代码.doc
  12. functools.partial
  13. java的decimalFormat_Java中 DecimalFormat 用法详解
  14. java double 初始化_java语言程序员之正确的初始化
  15. html5页面访问统计代码,两行代码搞定博客访问量统计
  16. 两轮差速AGV的控制理论
  17. VSCode无法跳转到外部函数定义
  18. 水星路由器wan口ip显示0_路由器wan口状态全是0 路由器wan口状态ip为0-192路由网
  19. OCP学习——数据库整库备份恢复实验
  20. dell 服务器面板显示屏,Dell服务器面板错误码详解

热门文章

  1. Graph Neural Network(GNN)综述
  2. 小程序实现用户申请发票、查看申请的发票记录功能
  3. Gitee 不能用了,使用 PicGo + GitHub 打造图床
  4. 使用Typora+PicGo+Gitee打造全新Markdown博客创作环境
  5. 1_Cyc-Notes入门简介
  6. macbook通过usb共享网络给iphone上网
  7. linux localtime 时区,localtime与时区zonetime的问题
  8. 2021考研真题及答案解析
  9. “华为大法”对车企是“加持”还是“拖累”?
  10. c语言double字母,C语言double