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

本篇仍将以面试问答的形式总结网络体系结构相关的知识点。下面我们开始!
为什么要设计分层网络模型?
·降低系统复杂度,每层只需要关注自己的核心功能,不需要了解其他层的实现细节,只需要享受下一层提供的服务和封装向上的接口即可。例如,应用层只需要专注于为用户提供服务,而不用关心数据是如何在网络中传输的。
·良好的模块化。只要保持接口不变,每层都可以实现独立的升级和改变。比如在传输层把TCP变成UDP协议,而上层的应用不需要任何的改动。
·扩展性。新的协议和技术可以在适当的层次中加入,而不会影响到其他层的正常工作。这也是为什么互联网能够持续发展和演进的重要原因之一。
在20世纪70年代,计算机网络开始蓬勃发展,但当时面临一个严重问题:不同厂商的网络设备和系统互不兼容。主要的计算机公司如IBM、DEC等都在开发自己专有的网络架构和协议,这导致用户只能在同一个厂商的系统内进行通信,无法跨系统互连。
为了解决这个问题,国际标准化组织(ISO)在1977年成立了一个子委员会,开始制定一个开放的、标准化的网络框架。这项工作最终在1984年完成,形成了OSI参考模型。尽管由于复杂的模型设计使得OSI模型在实践中并未取得预期的成功,但其仍然提供了清晰的网络分层概念用于教学(?
总之,OSI分为七层:
·应用层:为用户提供各种网络服务,如HTTP、FTP、SMTP等
·表示层:处理数据格式、加密解密、数据压缩等
·会话层:管理会话,建立、维护和终止通信
·传输层:提供端到端的可靠数据传输,如TCP、UDP
传输层负责进行流量控制和错误控制。流量控制用于确定最佳传输速度,避免采用快速连接的发件人淹没采用慢速连接的收件人。传输层还通过确保接收数据的完整性(如果不完整,则请求重新传输)来对接收端进行错误控制。
·网络层:负责数据包的路由和转发,如IP协议

网络层负责促进两个不同网络之间的数据传输。如果两台通信设备位于同一网络,则不需要使用网络层。网络层在发送设备上将传输层发出的数据段分解更小的单元(称为数据包),再在接收设备上重组这些数据包。网络层还要确定数据到达目标的最佳物理路径;人们将此称为路由。
·数据链路层:在相邻节点间提供可靠传输,处理帧的编排和差错控制
数据链路层与网络层十分相似,但数据链路层用于促进同一网络上两台设备之间的数据传输。数据链路层从网络层提取数据包并将数据包分解成更小的部分(称为帧)。与网络层一样,数据链路层也负责网络内部通信流量控制和错误控制(传输层仅负责网络间通信流量控制和错误控制)。
·物理层:定义物理传输介质的特性,处理比特流的传输
在《图解TCP IP》(竹下隆史著)这本书上,有一张表格总结了这七个层次:

文字总结:
应用层会处理要发送/接收的数据包并选择应用层的传输协议;表示层负责转换数据传输的网络格式;会话层负责管理通信连接;传输层负责实现会话层的连接方式以及判断是否完整传输数据,提供可靠传输;网络层是实现主机到目标主机的寻址和路由选择;数据链路层负责中间链路相邻设备的数据传输。
与OSI模型相对的是,TCP/IP模型一共仅有4层:
- 应用层:对应OSI的应用层、表示层和会话层,包含各种应用协议
- 传输层:与OSI的传输层对应,主要协议是TCP和UDP
- 网络层:与OSI的网络层对应,主要使用IP协议
- 网络接口层:对应OSI的数据链路层和物理层,负责硬件层面的通信
TCP/IP模型采用四层结构的简洁设计,避免了OSI模型中表示层和会话层等在实际应用中较为模糊的分层,使得整个模型更加实用。此外,TCP/IP模型伴随着UNIX系统和互联网的发展而成长,当OSI模型完成时,TCP/IP已在互联网上得到广泛应用,这使得Linux作为类UNIX系统自然继承了这一网络架构。
这两个模型的差异点和共同点?
两个模型的主要区别:
- TCP/IP模型更实用,是互联网的事实标准,而OSI模型主要用于理论学习
- TCP/IP将OSI的上三层合并为应用层,将下两层合并为网络接口层,结构更简单
- 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)。但这些名词并没有什么本质的区分,可以统称为数据包。
补充概念:实体、协议、服务



———-END———–