序言

如你所见,本系列是我在学习计算机网络时的总结和笔记。作为非科班的学生以及见习后端程序员(什),我们只需要重点掌握应用层、传输层、网络层这三层就足够了,数据链路层只需要了解,物理层可以忽略。时间充裕的话可以学习中科大郑老师的自顶而下的计算机网络课程,B站上搜得到。

以下是计算机网络的知识导图:

本篇仍将以面试问答的形式总结网络体系结构相关的知识点。下面我们开始!

为什么要设计分层网络模型?

·降低系统复杂度,每层只需要关注自己的核心功能,不需要了解其他层的实现细节,只需要享受下一层提供的服务和封装向上的接口即可。例如,应用层只需要专注于为用户提供服务,而不用关心数据是如何在网络中传输的。

·良好的模块化。只要保持接口不变,每层都可以实现独立的升级和改变。比如在传输层把TCP变成UDP协议,而上层的应用不需要任何的改动。

·扩展性。新的协议和技术可以在适当的层次中加入,而不会影响到其他层的正常工作。这也是为什么互联网能够持续发展和演进的重要原因之一。


在20世纪70年代,计算机网络开始蓬勃发展,但当时面临一个严重问题:不同厂商的网络设备和系统互不兼容。主要的计算机公司如IBM、DEC等都在开发自己专有的网络架构和协议,这导致用户只能在同一个厂商的系统内进行通信,无法跨系统互连。

为了解决这个问题,国际标准化组织(ISO)在1977年成立了一个子委员会,开始制定一个开放的、标准化的网络框架。这项工作最终在1984年完成,形成了OSI参考模型。尽管由于复杂的模型设计使得OSI模型在实践中并未取得预期的成功,但其仍然提供了清晰的网络分层概念用于教学(?

总之,OSI分为七层:

·应用层:为用户提供各种网络服务,如HTTP、FTP、SMTP等

该图表示的是应用层之间的逻辑通信,如浏览器进程和web服务器之间的通信等

·表示层:处理数据格式、加密解密、数据压缩等

图源:https://www.cloudflare.com/zh-cn/learning/ddos/glossary/open-systems-interconnection-model-osi/

·会话层:管理会话,建立、维护和终止通信

·传输层:提供端到端的可靠数据传输,如TCP、UDP

传输层负责进行流量控制和错误控制。流量控制用于确定最佳传输速度,避免采用快速连接的发件人淹没采用慢速连接的收件人。传输层还通过确保接收数据的完整性(如果不完整,则请求重新传输)来对接收端进行错误控制。

·网络层:负责数据包的路由和转发,如IP协议

网络层负责促进两个不同网络之间的数据传输。如果两台通信设备位于同一网络,则不需要使用网络层。网络层在发送设备上将传输层发出的数据段分解更小的单元(称为数据包),再在接收设备上重组这些数据包。网络层还要确定数据到达目标的最佳物理路径;人们将此称为路由

·数据链路层:在相邻节点间提供可靠传输,处理帧的编排和差错控制

数据链路层与网络层十分相似,但数据链路层用于促进同一网络上两台设备之间的数据传输。数据链路层从网络层提取数据包并将数据包分解成更小的部分(称为)。与网络层一样,数据链路层也负责网络内部通信流量控制和错误控制(传输层仅负责网络间通信流量控制和错误控制)。

·物理层:定义物理传输介质的特性,处理比特流的传输

在《图解TCP IP》(竹下隆史著)这本书上,有一张表格总结了这七个层次:

文字总结:

应用层会处理要发送/接收的数据包并选择应用层的传输协议;表示层负责转换数据传输的网络格式;会话层负责管理通信连接;传输层负责实现会话层的连接方式以及判断是否完整传输数据,提供可靠传输;网络层是实现主机到目标主机的寻址和路由选择;数据链路层负责中间链路相邻设备的数据传输。


与OSI模型相对的是,TCP/IP模型一共仅有4层:

  • 应用层:对应OSI的应用层、表示层和会话层,包含各种应用协议
  • 传输层:与OSI的传输层对应,主要协议是TCP和UDP
  • 网络层:与OSI的网络层对应,主要使用IP协议
  • 网络接口层:对应OSI的数据链路层和物理层,负责硬件层面的通信

图源:https://xiaolincoding.com/network/1_base/tcp_ip_model.html#%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E5%B1%82

TCP/IP模型采用四层结构的简洁设计,避免了OSI模型中表示层和会话层等在实际应用中较为模糊的分层,使得整个模型更加实用。此外,TCP/IP模型伴随着UNIX系统和互联网的发展而成长,当OSI模型完成时,TCP/IP已在互联网上得到广泛应用,这使得Linux作为类UNIX系统自然继承了这一网络架构。

这两个模型的差异点和共同点?

两个模型的主要区别:

  1. TCP/IP模型更实用,是互联网的事实标准,而OSI模型主要用于理论学习
  2. TCP/IP将OSI的上三层合并为应用层,将下两层合并为网络接口层,结构更简单
  3. OSI是标准先行,TCP/IP是实践先行,这也是TCP/IP更加成功的重要原因

共同点:

分层、数据封装、层间透明(这里的透明是指不可见)的理念相同;传输层、网络层的核心功能也是相似的

补充:数据封装和运输过程

此处非常建议大家观看视频理解,推荐:https://www.bilibili.com/video/BV1c4411d7jb?vd_source=86c6b09721e0893e43fc3b93d929a6c9&spm_id_from=333.788.videopod.episodes&p=9,通俗易懂。本文也将用视频中的PPT进行说明。

数据运输的过程如图中红线所示。值得注意的是,在自上到下的数据传输中,经过的每一层都会对数据进行再封装,类比于寄快递;再自下而上的数据传输中,经过的每一层都会对数据进行解封装,类比于拆快递。比如,经过TCP头的封装之后,HTTP请求报文会变成TCP报文段,再经过网络层会变为IP数据报,以此类推。

以下每层的封装格式:

网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

补充概念:实体、协议、服务

依然源自于视频:https://www.bilibili.com/video/BV1c4411d7jb?vd_source=86c6b09721e0893e43fc3b93d929a6c9&spm_id_from=333.788.videopod.episodes&p=10

———-END———–