从OSI到TCP/IP:网络协议的演变与作用

个人主页:chian-ocean

文章专栏-NET

从OSI到TCP/IP:网络协议的演变与作用

    • 个人主页:chian-ocean
    • 文章专栏-NET
  • 前言
  • 网络发展
    • LAN
    • WAN
  • 协议
      • 举个例子:
    • 协议的产生
      • 背景
    • 协议的标准化
      • OSI模型参考
        • OSI各个分层的作用
        • 各层次的功能简介
  • TCP/IP协议
    • TCP/IP发展历史
    • TCP/IP协议发展历史
    • TCP/IP的标准化
      • TCP/IP的具体含义
    • TCP/IP分层
      • TCP/IP和OSI模型的对比
  • 数据是如何传输的
      • 数据压缩过程
        • 压缩过程示例:
      • 数据解包过程
        • 解包过程示例:

前言

在现代社会,计算机网络已成为不可或缺的基础设施,深刻地影响着我们的工作、生活、学习和交流方式。从最初的局域网到如今的全球互联网,网络技术的发展和普及已经打破了时空的界限,将世界各地的人们和资源紧密地联系在一起。无论是在日常生活中的社交互动,还是在全球范围内的信息交流和经济活动中,网络都发挥着举足轻重的作用。

在这里插入图片描述

网络发展

起初计算机,以单机模式被使用(也叫做独立模式),随着时间的退役,人们已经不局限于单机模式,而是将各个计算机联系到一起,形成一个计算机网络

image-20250604121302965

网络连接的计算机:

image-20250604122121942

LAN

**局域网(LAN)**是一个相对较小范围的网络,通常在一个有限的地理区域内使用,如家庭、办公室、学校或企业等。局域网允许在物理距离较近的设备之间进行高速数据传输和共享资源。

image-20250604121310401

WAN

**广域网(WAN)**是一种覆盖广泛地理区域的计算机网络,它通常可以跨越城市、国家,甚至全球。WAN的主要功能是将多个局域网(LAN)或城市网(MAN)连接在一起,形成一个覆盖范围广泛的通信网络。

image-20250604121316411

计算机使用模式的演变

年代内容
20世纪50年代批处理时代
20世纪60年代分时系统时代
20世纪70年代计算机间通信时代
20世纪80年代计算机网络时代
20世纪90年代互联网普及及时代
2000年以互联网为中心的时代
2010年无论何时何地—皆为TCP/IP的网络时代

协议

协议,通俗来说,就是一套大家约定好的规则,用来帮助不同的计算机、手机或其他设备之间进行交流。就像我们与别人沟通时需要使用共同的语言一样,计算机和设备在互相传输数据时,也需要遵循特定的规则,这些规则就是协议。

举个例子:

假设你和朋友通过手机聊天,你们需要遵循一些“约定”,比如:

  • 你们用某种语言(比如中文或英文)交流。
  • 你发送消息时需要先输入文字,然后点击“发送”。
  • 你们有约定好的表情符号,或者什么时候使用语音消息。

协议的产生

背景

1974年,IBM公司发布了SNA,将本公司的计算机通信技术作为系统化网络体系结构公之于众。从此,计算机厂商也纷纷发布各自的网络体系结构,引发了众多协议的系统化进程。然而,各家厂商的各种网络体系结构、各种协议之间并不相互兼容。即使是从物理层面上连接了两台异构的计算机,由于它们之间采用的网络体系结构不同,支持的协议不同,仍然无法实现正常的通信。

这就是方言和普通话的区别:

image-20250604121320473

协议的标准化

为了解决异构的的问题,ISO(International Organization for Standardization)国际标准化组织,对通信系统做了标准化OSI开放系统互联,Open Systems Interconnection

OSI模型参考

在1984年提出的一种网络通信的标准化框架,旨在为计算机网络通信提供一个统一的、系统化的标准。OSI模型将计算机网络通信过程分为七个不同的层次,每一层都负责不同的功能,并且每层之间相互独立,提供特定的服务。

image-20250604121324454

OSI模型终究是一个模型,,但是对各层做了一系列的解释,但是并没有对协议和接口做了详细的解释,对于学习是起到了很好的引导作用。

OSI各个分层的作用

image-20250604121329661

各层次的功能简介
层次名称功能每层功能概览
应用层针对特定应用的协议电子邮件、远程登录、文件传输协议等应用的协议
表示层设备间数据格式和网络标准格式的转换接收不同数据格式的信号,转换成标准格式,如文本流、图像、声音等
会话层建立、管理和终止会话连接管理会话的开始与结束,控制数据流
传输层传输数据流的控制,确保数据的可靠传输负责建立连接、管理连接的数量以及连接的特性
网络层地址管理与路由选择负责数据包通过不同路由到达目标设备
数据链路层设备之间的连接和数据传输对数据进行封装为帧,并确保数据能够无误地传输
物理层物理设备的电信号传输将数据以比特流的形式通过物理介质(如电缆、光纤、无线信号)传输

TCP/IP协议

TCP/IP协议(Transmission Control Protocol/Internet Protocol)是用于计算机网络中通信的一组协议,它是现代互联网和局域网中最广泛使用的协议。TCP/IP协议确保了不同设备之间的通信,使得全球各地的计算机可以通过互联网连接和互相通信。

TCP/IP发展历史

TCP/IP协议发展历史

年份事件
20世纪60年代后半叶应DoD要求,美国开始进行通信技术相关的研发。
1969年ARPANET诞生。开发分组交换技术。
1972年ARPANET取得初步成功。扩展到50个节点。
1975年TCP/IP诞生。
1982年TCP/IP规范出台。UNIX是最早开始实现TCP/IP协议的系统。
1983年ARPANET决定正式启用TCP/IP作为通信协议。
1989年左右局域网上的TCP/IP应用迅速扩展。
1990年左右不论是局域网还是广域网,都开始倾向于使用TCP/IP。
1995年左右互联网开始商用,互联网服务供应商的数量剧增。
1996年IPv6规范出台,载入RFC。(后于1998年修订)

TCP/IP的标准化

20世纪90年代,ISO开展了OSI这一国际的标准化,但是OSI并没有得到普及,真正被广泛使用的标准是TCP/IP。

TCP/IP的具体含义

TCP/IP 不仅仅是 TCP 和 IP: 文中首先指出,有些人可能会认为 TCP/IP 仅仅是指两个协议:TCP(传输控制协议)和 IP(互联网协议)。这种理解是片面的。

TCP/IP 实际上是一个协议族: 文章进一步解释,TCP/IP 实际上指的是一个由多个协议组成的协议族,这些协议共同支持互联网的正常运行。在通信过程中,TCP/IP 协议族中的多个协议被用来完成不同的任务。

涉及的具体协议: 文中列举了几个属于 TCP/IP 协议族 的协议:

  • IP 协议(包括 ICMP):用于路由和数据包的传输。
  • TCP 协议:保证数据传输的可靠性。
  • UDP 协议:提供一种不可靠但速度较快的数据传输方式。
  • TELNET 协议:用于远程登录。
  • FTP 协议:用于文件传输。
  • HTTP 协议:用于网页浏览和数据交换。

image-20250604121334941

TCP/IP分层

TCP/IP和OSI模型的对比

image-20250604121339291

  1. 应用层(Application Layer):负责提供网络服务给用户应用程序,如HTTP、FTP、DNS等协议。它处理数据的表示、编码和加密等任务,确保应用之间的通信。
  2. 传输层(Transport Layer):负责提供端到端的通信服务,确保数据传输的可靠性和顺序。主要协议有TCP(面向连接、可靠)和UDP(无连接、不可靠)。
  3. 网络层(Network Layer):负责将数据包从源地址传输到目的地址,主要通过路由器实现数据的路由和转发。主要协议是IP(互联网协议)。
  4. 数据链路层(Data Link Layer):负责在物理设备之间传输数据帧,提供错误检测和纠正。协议如Ethernet、Wi-Fi等。

数据是如何传输的

数据压缩过程

数据压缩是指在传输数据之前,减少数据的大小,从而提高网络传输的效率,降低带宽消耗。压缩通常发生在 应用层,因为它与具体应用数据内容(如文本、图片、视频等)相关。

压缩过程示例:
  1. 应用层(应用数据)
    • 比如发送一封邮件,内容包括文本、附件等。此时,邮件应用(例如电子邮件客户端)会将文本内容和附件数据压缩成一个更小的文件。例如,使用 gzip 或 zip 等压缩算法。
  2. 传输层(TCP)
    • 压缩后的数据被送到传输层(TCP层)。TCP层会将压缩后的数据切分成更小的段(Segment),每个段包含了头部信息(如序列号、确认号等)和数据部分。TCP 本身不会对数据进行压缩,它只是将压缩后的数据封装在 TCP 包中进行传输。
  3. 网络层(IP)
    • 在 IP 层,TCP 数据包被封装到 IP 包中。IP 层负责提供路由和地址信息。此时,压缩数据仍然存在,只是被封装在不同的协议头中。IP 层主要负责确保数据包的正确传输到目的地。
  4. 数据链路层(链路层)
    • 数据链路层负责将 IP 包进一步封装成帧,以便在物理网络上传输。数据链路层对数据进行帧封装,包括 MAC 地址等网络硬件信息。

数据解包过程

当压缩数据到达目标主机时,解包过程会逐层进行,从最底层到最顶层逐层解封装。解包的目的是将数据从封装的格式中提取出来,交给上层协议进行处理。

解包过程示例:
  1. 物理层
    • 数据到达目标主机后,物理层负责接收来自网络中的信号,并将其转化为数字数据流。此时的数据是以电信号或光信号的形式传输,物理层的任务就是把它们转化成二进制数据供下层使用。
  2. 数据链路层
    • 数据链路层会解封装接收到的帧,提取出其中的 IP 包和相关的链路层信息(如 MAC 地址等)。如果数据是通过以太网传输的,数据链路层会将以太网帧的头部信息去除,只保留网络层的数据(即 IP 包)。
  3. 网络层(IP 层)
    • 在网络层,IP 包会被解封装。此时,主机会检查目的 IP 地址,以确定该数据包是否是发送给自己的。如果 IP 地址匹配,主机会将数据包传递到上层(传输层)。IP 层会去掉 IP 头部,只留下 TCP 包裹的数据。
  4. 传输层(TCP 层)
    • TCP 层会对数据进行解封装,移除 TCP 头部信息(如序列号、确认号等),并将数据传递给应用层。传输层的任务是确保数据完整且按顺序到达,TCP 层会进行数据重组,如果需要,还会做数据的重发。
  5. 应用层
    • 最后,数据到达应用层。应用层会提取数据并解压(如果压缩了)。例如,如果传输的是一封经过压缩的邮件,应用层会用相应的解压工具(如 gzip)对数据进行解压,恢复到原始的邮件内容。

image-20250604121345542

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/387.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java观察者模式深度解析:构建松耦合事件驱动系统的艺术

目录 观察者模式基础解析核心结构与实现原理Java内置观察者实现Spring框架中的高级应用典型应用场景与实战案例观察者模式变体与优化常见问题与最佳实践总结与未来展望1. 观察者模式基础解析 1.1 模式定义与核心思想 观察者模式(Observer Pattern)是一种行为型设计模式,它…

前端(vue)学习笔记(CLASS 7):vuex

vuex概述 vuex是一个vue的状态管理工具,状态就是数据 大白话:vuex是一个插件,可以帮我们管理vue通用的数据(多组件共享的数据) 场景 1、某个状态在很多个组件来使用(个人信息) 2、多个组件…

论文中pdf图片文件太大怎么办

文章目录 1.使用pdf文件的打印功能将文件导出2.操作3.前后文件大小对比 1.使用pdf文件的打印功能将文件导出 该方法在保证清晰度的同时,内存空间也能实现减少(如果使用线上的压缩pdf工具,清晰度会直线下降) 2.操作 点击文件—&…

Java并发编程:读写锁与普通互斥锁的深度对比

在Java并发编程中,锁是实现线程安全的重要工具。其中,普通互斥锁(如synchronized和ReentrantLock)和读写锁(ReentrantReadWriteLock)是两种常用的同步机制。本文将从多个维度深入分析它们的区别、适用场景及…

C#面向对象实践项目--贪吃蛇

目录 一、项目整体架构与核心逻辑 二、关键类的功能与关系 1. 游戏核心管理类:Game 2. 场景接口与基类 3. 具体场景类 4. 游戏元素类 5. 基础结构体与接口 三.类图 四、核心流程解析 五、项目可优化部分 一、项目整体架构与核心逻辑 该项目运用场景管理模…

传输层协议:网络通信的关键纽带

在计算机网络的复杂体系中,传输层协议扮演着举足轻重的角色,它如同桥梁一般,连接着应用层与网络层,为不同主机上的应用进程提供端到端的通信服务,确保数据能够准确、高效地在网络中传输。深入理解传输层协议&#xff0…

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验,详细介绍 macSvn工具的核心…

LeetCode 热题 100 394. 字符串解码

LeetCode 热题 100 | 394. 字符串解码 大家好!今天我们来探讨一道非常有趣的算法题目——LeetCode 394. 字符串解码。这道题考察了我们对栈这种数据结构的理解和应用能力,同时也涉及到了字符串的处理技巧。接下来,我将详细地为大家解析这道题…

详解一下RabbitMQ中的channel.Publish

函数定义(来自 github.com/streadway/amqp) func (ch *Channel) Publish(exchange string,key string,mandatory bool,immediate bool,msg Publishing, ) error这个方法的作用是:向指定的交换机 exchange 发送一条消息 msg,带上路…

docker使用sh脚本创建容器,保持容器正常运行,异常关闭后马上重启

docker run -d --name dadeName \--memory5120m \-p 40060:80 \-p 40061:3306 \-v "$data:$dockerData" \-v "$img:$dockerImg" \--restartalways \ # 关键参数:总是重启dade:120 \/bin/bash -c "/www/start.sh && tail -f /dev/…

3516cv610在sample_aiisp上多创一路编码流,方法

3516cv610在sample_aiisp上多创一路编码流,方法 首先确保 vpss grp0有视频流 最好保证 已经有一路视频流能推出来 多创一路编码流思路为 将 vpss grp0又绑定给 vpss_chn1 vpss_chn1有绑定给 venc_chn1 这样我们就多创了一路视频流。 这里思路完全正确 可以实现…

Leetcode 3566. Partition Array into Two Equal Product Subsets

Leetcode 3566. Partition Array into Two Equal Product Subsets 1. 解题思路2. 代码实现 题目链接:3566. Partition Array into Two Equal Product Subsets 1. 解题思路 这一题我的实现还是比较暴力的,首先显而易见的,若要满足题目要求&…