初识网络的发展史、通信基础和原理

news2024/11/29 20:54:21

目录

一.网络的发展史

二.网络通信基础

2.1IP地址

2.2端口号

 2.3认识协议 

 2.3.1协议是什么?

2.3.2为什么需要协议?

2.3.3OSI模型和TCP/IP体系结构 

三.网络通信的原理

总结


🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主
🎥 本文由 tq02 原创,首发于 CSDN🙉
🎄 本章讲解内容:网络的通信基础

🎥多线程学习专栏:多线程学习专栏

🎥其他学习专栏:  C语言         JavaSE       MySQL基础 

一.网络的发展史

问: 网络是现在生活当中必不可少的存在,可是网络的发家史是什么呢?

答:  网络的发展史可以追溯到早期的ARPANET,它是一个由美国国防部高级研究计划局(ARPA)创建的计算机网络。在1983年,ARPANET被划分为两个独立的网络,包括ARPANET和MILNET(军用网络)。这促进了互联网的发展,使得任何两台电脑都可以相互通信,没有特定的设备、路由器或网络中心控制数据流向。

  •  20世纪60年代早期,计算机还是独立模式,计算机之间相互独立,并不能进行相互通信,只提供终端和主机之间的通信。
  • 20世纪60年代中期,随着时代的发展, 越来越需要计算机之间相互通信、共享软件和数据了,即以多个计算机协同工作来完成业务,就有了网络互连
    网络互连:将多台计算机连接在一起,完成数据共享。
    数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。 

局域网LAN (Local Area Network)
     是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
局域网组建网络的方法有:

  • 基于网线直连:主机之间相互连接。
  • 基于集线器组建:所有主机连接一台集线器,集线器相当于通信中转站。
  • 基于交换机组建
  • 基于交换机和路由器组建

注:路由器上有2种口,一种Lan口,另一种是Wan口,Lan口负责连接主机,Wan口负责连接运营商的机房,提供网络。 

广域网WAN(Wide Area Network)

        通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

二.网络通信基础

        从网络发家史中,我们可以知道网络互连的目的是进行网络通信,也就是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。

问:在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?

答:需要使用IP地址了。

问:由哪个进程来接收这个数据呢?

答:使用端口号

问:我承认你的确收到了我的数据,但是你可忘记了数据可是二进制数据,你如何得知原本数据呢?

答:这就需要靠协议

抽象表达:快递员通过IP地址,找到你家,由收货人(端口号)来接收快递,快递拆开是加密的信息,需要使用协议解密,才能得到原本的信息。 

2.1IP地址

         概念主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址

        格式IP地址是一个32位的二进制数,通常被分割为4“8位二进制数”(也就是4个节)          例如:01100100.00000100.00000101.00000110  但通常用点分十进制的方式来表示,即 a.b.c.d 的形式:100.4.5.6。       

        特殊ip:127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1,本机环回主要用于:本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

2.2端口号

        概念端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程

        格式端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

        注意事项: 两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

 2.3认识协议 

 2.3.1协议是什么?

       网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!:如何标识发送的数据是文本类型,及文本的编码格式呢? 基于网络数据传输,需要使用协议来规定双方的数据格式。

       概念: 网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

通常由三要素组成:

  1. 语法:即数据与控制信息的结构或格式;
  2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
  3. 时序,即事件实现顺序的详细说明。
协议:最终体现为在网络上传输的数据包的格式

2.3.2为什么需要协议?

        例如地下情报组织,潜伏者需要事先和接应人员约定各自带一本书,头戴帽子,这就是一种约定,也是一种协议。

不同计算机厂商中生产的计算机需要进行通信,传递各种各样的信息,则需要约定双方的数据格式,因此出现了一个标准,让大家的计算机都可以给彼此通信,这就是网络协议

协议分为2种,一种存在于教科书的OSI七层网络协议,另一种则是TCP/IP五层协议。

二者的联系:为了实现不同体系结构的计算机网络之间的互联,国际标准化组织定义了开放系统互联基本参考模型OSI/RM(Open Systems Interconnection Reference Model),即OSI模型。OSI模型采用了七层协议体系结构,理论上较为完善,但在实践中过于复杂并不实用。因此,简化出了TCP/IP体系结构,并得到了广泛的应用。

分层的作用:为了降低复杂性、实现协调工作、解决不同体系结构之间的互联问题,并提供更加可行和实用的解决方案。

2.3.3OSI模型和TCP/IP体系结构 

OSI模型

  • 物理层:提供了数据在物理介质上传输的能力。
  • 数据链路层:负责相邻网络设备之间建立、维护和拆除,确保数据的无差错传输。
  • 网络层:负责在不同网络设备之间选择最佳路径,实现数据包在网络的路由选择、转发。
  • 传输层:提供端到端的可靠传输服务,包括数据包的分组、传输、接收和错误恢复。
  • 会话层:确保通信系统中两个应用程序会在一个会话当中进行多次交互。
  • 表示层:确保数据可以在不同系统之间通信
  • 应用层:处理与具体应用程序相关的通信,为应用程序提供网络服务接口,可以使应用程序能够使用网络进行数据传输和接收。此层协议通常有:HTTP、FTP、SMTP、DNS、DHCP等

注:OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。 实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

TCP/IP 五层(或四层)模型
  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远 程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发 送到目标主机。
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表 的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线 上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工 作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
  • 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的 同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。 物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

而为什么有时候又称为4层模型,因为物理层又偏向于硬件,考虑的比较少。

两种模型之间的关系:

根据网络设备所在分层,分层了3种,应用程序、操作系统、设备驱动程序与网络接口。

  •  对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器,它实现了从网络层到物理层;
  • 对于一台交换机,它实现了从数据链路层到物理层;
  • 对于集线器,它只实现了物理层; 

三.网络通信的原理

        两台计算机通过TCP/IP协议通讯过程:

注:在网络层时,数据也可能会存在从一台计算机传输到另一台计算机中会经过多个路由器。


                 ------------------------------》以QQ发送信息为例子《--------------------------------

发送者情况:

1.应用层,输入的信息,构造成应用层数据报,指按照一定格式进行字符串拼接。传递个传输层

2.传输层,传输层有很多种协议,主要使用TCP和DCP,假设此处使用UDP,然后将UDP数据报传递给网络层。注:UDP不会处理应用层数据报的内容。

3.网络层,网络层的主要协议,IP协议,然后传递个数据链路层。注:IP协议不会处理UDP数据报。

4.数据链路层,以太网会针对IP数据报,进行进一步封装,填上数据头和数据尾,当然以太网也不会处理IP数据报。然后传递给物理层

5.物理层,硬件设备需要对上述数据进行转换了,例如:光信息、电信号、电磁波。


 以上便是发送者发生信息后,信息的主要传输过程。

接收者情况

1.物理层,硬件设备(网卡),收到光信号/电信号/电磁波,得到了一串二进制数据,也就是以太网数据帧

2.数据链路层,以太网协议,针对这个数据报进行解析,载荷部分交给网络层。

3.网络层,根据IP协议,去掉IP报头,将载荷交给传输层

4.传输层,根据IP报头中的信息,可以知道当前载荷是UDP数据报,交给UDP处理,再取出载荷交给应用层。

5.应用层:根据UDP报头可以得到目的端口,根据目的端口可以找到相关联的应用程序,然后对载荷进行解析,再将数据显示

额外补充:
        系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:

  • 22端口:预留给SSH服务器绑定SSH协议
  • 21端口:预留给FTP服务器绑定FTP协议
  • 23端口:预留给Telnet服务器绑定Telnet协议
  • 80端口:预留给HTTP服务器绑定HTTP协议
  • 443端口:预留给HTTPS服务器绑定HTTPS协议
     

总结

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5.  协议号:标识发送进程和接收进程双方约定的数据格式

网络通信的数据传输需要经过封装和分用,发送者进行封装,接收者进行分用

封装:每层协议都要加上一个数据首部(header),首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息,例如传输层使用了UDP协议还是TCP协议。
分用:到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理


   

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在海外通过A/B测试来优化应用

在App Store和Google Play上,视觉资产是应用商店优化(ASO)的重要组成部分。我们的游戏图标、屏幕截图和预览视频具有很高的转化潜力。 1、将应用页面元素的一个或多个变体与默认元素进行竞争。 借助A/B测试,我们可以轻松、客观地发现访问者的偏好。这样…

PPT架构师架构技能图

PPT架构师架构技能图 目录概述需求: 设计思路实现思路分析1.软素质2.核心输出(office输出) 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,ma…

MFC中的类继承图的基本框架

一、类继承关系 从图中可知,在MFC中大多数的类都派生于CObject类,它的主要作用是为子类提供一些基本的功能,这些派生类构成了MFC应用程序的基本框架,它们各自的功能描述如表1所示。 派生类 功能描述 CCmdTarget 用于处理用户请…

React-Hooks 和 React-Redux

Hooks基本介绍------------------------- Hooks:钩子、钓钩、钩住, Hook 就是一个特殊的函数,让你在函数组件中获取状态等 React 特性 ,是 React v16.8 中的新增功能 作用:为函数组件提供状态、生命周期等原本 class …

51、基于注解方式开发Spring WebFlux,实现生成背压数据,就是实现一直向客户端发送消息

★ Spring WebFlux的两种开发方式 1. 采用类似于Spring MVC的注解的方式来开发。此时开发时感觉Spring MVC差异不大,但底层依然是反应式API。2. 使用函数式编程来开发★ 基于注解开发Spring WebFlux 开发上变化并不大,主要是处理方法的返回值可使用Mon…

Devos勒索病毒:网络安全的新威胁,勒索病毒解密,数据恢复

随着信息技术的飞速发展,网络安全问题日益凸显。近年来,一种名为Devos的勒索病毒在全球范围内肆虐,给企业和个人带来了极大的损失。本文将详细介绍Devos勒索病毒的特点、传播途径以及预防和应对措施,帮助大家更好地认识和防范这一…

针对JavaScript混淆加密,JShaman推出新功能

JShaman英文版在最新的一次更新时,增加了新功能: JavaScript代码混淆加密完成后,可以显示各功能耗时、处理的AST节点数量, 以此可知对代码做了哪些保护处理。 如上图所示,在此例中,对代码共进行了23项混淆…

Python标准数据类型-List(列表)

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座…

无涯教程-JavaScript - IMPRODUCT函数

描述 IMPRODUCT函数以x yi或x yj文本格式返回1到255个复数的乘积。两个复数的乘积为- $$(A BI)(C DI)(AC-BD)(A B)1 $$ 语法 IMPRODUCT (inumber1, [inumber2] ...)争论 Argument描述Required/OptionalInumber11 to 255 complex numbers to multiply.Required[inumbe…

xCode14.3.1运行MonkeyDev出现“Executable Not Found“的解决办法

安装MonkeyDev遇到的坑 环境:Xcode Version 14.3.1 (14E300c) 错误提示 is not a valid path to an executable file. 报错 /Users/xxxx//Library/Developer/Xcode/DerivedData/MonTest-ccparhdyzjuqhjdergwrngpfwwoh/Build/Products/Debug-iphoneos/MonTest.app…

基于大规模测量和多任务深度学习的电子鼻系统目标识别、浓度预测和状态判断

Target discrimination, concentration prediction, and status judgment of electronic nose system based on large-scale measurement and multi-task deep learning 摘要 为了实现响应特征的自动提取,简化模型的训练和应用过程,设计了一种双块知识…

python3网络爬虫--爬取B站视频弹幕(附源码)

文章目录 一.前言二.配置Protobuf 环境&生成编译文件1.配置Protobuf 环境2.生成编译文件 三.解析弹幕四.自动解析弹幕五.总结六.参考 本篇博文记录一下爬取B站弹幕的主要思路以及…

Pandas模块:Python科学计算神器之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…

SpotBugs检查java代码:不应该依赖平台默认编码(DM_DEFAULT_ENCODING)

https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#internationalization-i18n 一个字节转换为字符串(或字符串转化为字节)的函数调用没有明确指明编码,而是依赖平台默认的编码,这可能导致应用在不同平台上的行为…

mac电脑做为开发机的一些初始化操作

Terminal设置 风格设置 修改Terminal提示符 /etc/zshrc 此处控制,大概70行左右 PS1"%n%m %1~ %# "目录颜色设置 编辑文件 vim ~/.bash_profile输入以下内容 export LS_OPTIONS--colorauto # 如果没有指定,则自动选择颜色 export CLICOLOR…

【C++漂流记】一文搞懂类与对象的封装

本篇文章主要说明了类与对象中封装的有关知识,包括属性和行为作为整体、访问权限、class与struct的区别、成员属性的私有化,希望这篇文章可以帮助你更好的了解类与对象这方面的知识。 文章目录 一、属性和行为作为整体二、访问权限三、class与struct的区…

spark集成hudi

启动spark-shell spark-shell \ > --jars /opt/software/hudi-spark3.1-bundle_2.12-0.12.0.jar \ > --conf spark.serializerorg.apache.spark.serializer.KryoSerializer\ > --conf spark.sql.extensionsorg.apache.spark.sql.hudi.HoodieSparkSessionExtension2…

腾讯云AI绘画:探究AI创意与技术的新边界

目录 一、2023的“网红词汇”——AI绘画二、智能文生图1、智能文生图的应用场景2、风格和配置的多样性3、输入一段话,腾讯云AI绘画给你生成一张图4、文本描述生成图像,惊艳全场 三、智能图生图:重新定义图像美学1、智能图生图的多元应用场景2…

Nginx 解析漏洞

文章目录 Nginx 解析漏洞1. 空字节漏洞1.1 漏洞描述1.2 漏洞复现1.3 修复方案 2. Nginx 解析漏洞复现2.1 漏洞描述2.2 漏洞复现2.3 获取GetShell2.4 修复方案 3. Nginx 文件名逻辑漏洞3.1 漏洞描述3.2 漏洞原理3.3 漏洞复现3.3.1 环境启动3.3.2 漏洞验证 3.4 漏洞利用3.5 修复方…

X(推特)“鸡贼”手段曝光:这些广告并没有标注,你知道吗?

在使用推特的时候,有些人可能会注意到,一些广告并没有正确地标注,看起来很像普通的内容,十分难以区分。美国的联邦贸易委员会(FTC)和欧盟的欧洲广告标准局(EASA)等机构都对广告标签有…