计算机组成原理和计算机网络的复习

一,计算机系统的组成

计算机系统是由硬件系统和软件系统两大部分组成。
计算机硬件是构成计算机系统各功能部件的集合。是由电子、机械和光电元件组成的各种计算机部件和设备的总称,是计算机完成各项工作的物质基础。计算机硬件是看得见、摸得着的,实实在在存在的物理实体。
计算机软件是指与计算机系统操作有关的各种程序以及任何与之相关的文档和数据的集合。其中程序是用程序设计语言描述的适合计算机执行的语句指令序列。
没有安装任何软件的计算机通常称为“裸机”,裸机是无法工作的。如果计算机硬件脱离了计算机软件,那么它就成为了一台无用的机器。如果计算机软件脱离了计算机的硬件就失去了它运行的物质基础;所以说二者相互依存,缺一不可,共同构成一个完整的计算机系统。
计算机系统的基本组成如图1-6 所示。

二,计算机硬件系统的基本组成及工作原理

  • ⑴ 计算机硬件由五个基本部分组成:运算器、控制器、存储器、输入设备和输出设备。
  • ⑵ 计算机内部采用二进制来表示程序和数据。
  • ⑶ 采用“存储程序”的方式,将程序和数据放入同一个存储器中(内存储器),计算机能够自动高速地从存储器中取出指令加以执行。

可以说计算机硬件的五大部件中每一个部件都有相对独立的功能,分别完成各自不同的工作。如图1-7所示,五大部件实际上是在控制器的控制下协调统一地工作。首先,把表示计算步骤的程序和计算中需要的原始数据,在控制器输入命令的控制下,通过输入设备送入计算机的存储器存储。其次当计算开始时,在取指令作用下把程序指令逐条送入控制器。控制器对指令进行译码,并根据指令的操作要求向存储器和运算器发出存储、取数命令和运算命令,经过运算器计算并把结果存放在存储器内。在控制器的取数和输出命令作用下,通过输出设备输出计算结果。

1.运算器(ALU)

运算器也称为算术逻辑单元ALU(Arithmetic Logic Unit)。它的功能是完成算术运算和逻辑运算。算术运算是指加、减、乘、除及它们的复合运算。而逻辑运算是指“与”、“或”、“非”等逻辑比较和逻辑判断等操作。在计算机中,任何复杂运算都转化为基本的算术与逻辑运算,然后在运算器中完成。

2.控制器(CU)

控制器CU(Controller Unit)是计算机的指挥系统,控制器一般由指令寄存器、指令译码器、时序电路和控制电路组成。它的基本功能是从内存取指令和执行指令。指令是指示计算机如何工作的一步操作,由操作码(操作方法)及操作数(操作对象)两部分组成。控制器通过地址访问存储器、逐条取出选中单元指令,分析指令,并根据指令产生的控制信号作用于其它各部件来完成指令要求的工作。上述工作周而复始,保证了计算机能自动连续地工作。
通常将运算器和控制器统称为中央处理器,即CPU(Central Processing Unit),它是整个计算机的核心部件,是计算机的“大脑”。它控制了计算机的运算、处理、输入和输出等工作。
集成电路技术是制造微型机、小型机、大型机和巨型机的CPU的基本技术。它的发展使计算机的速度和能力有了极大的改进。在1965年,芯片巨人英特尔公司的创始人戈登 · 摩尔,给出了著名的摩尔定律:芯片上的晶体管数量每隔18~24个月就会翻一番。让所有人感到惊奇的是,这个定律非常精确的预测了芯片的30年发展。1958年第一代集成电路仅仅包含两个晶体管,而1997年,奔腾II处理器则包含了750万个晶体管,2000年的Pentium 4 已达到了0.13微米技术,集成了4200万个晶体管 。CPU集成的晶体管数量越大,就意味着更强的芯片计算能力。

3. 存储器(Memory)

存储器是计算机的记忆装置,它的主要功能是存放程序和数据。程序是计算机操作的依据,数据是计算机操作的对象。

⑴ 信息存储单位
程序和数据在计算机中以二进制的形式存放于存储器中。存储容量的大小以字节为单位来度量。经常使用KB(千字节)、MB(兆字节)、GB(千兆字节)和TB来表示。它们之间的关系是:1KB=1024B=210B,1MB=1024KB=220B,1GB=1024MB=230B,1TB=1024G=240B,在某些计算中为了计算简便经常把210(1024)默认为是1000。
位(bit):是计算机存储数据的最小单位。机器字中一个单独的符号“0”或“1”被称为一个二进制位,它可存放一位二进制数。
字节(Byte,简称B):字节是计算机存储容量的度量单位,也是数据处理的基本单位,8个二进制位构成一个字节。一个字节的存储空间称为一个存储单元。
字(Word):计算机处理数据时,一次存取、加工和传递的数据长度称为字。一个字通常由若干个字节组成。
字长(Word Long):中央处理器可以同时处理的数据的长度为字长。字长决定CPU的寄存器和总线的数据宽度。现代计算机的字长有8位、16位、32位、64位。

⑵ 存储器的分类
根据存储器与CPU联系的密切程度可分为内存储器(主存储器)和外存储器(辅助存储器)两大类。内存在计算机主机内,它直接与运算器、控制器交换信息,容量虽小,但存取速度快,一般只存放那些正在运行的程序和待处理的数据。为了扩大内存储器的容量,引入了外存储器,外存作为内存储器的延伸和后援,间接和CPU联系,用来存放一些系统必须使用,但又不急于使用的程序和数据,程序必须调入内存方可执行。外存存取速度慢,但存储容量大,可以长时间地保存大量信息。CPU与内、外存之间的关系如图1-8所示。

现代计算机系统中广泛应用半导体存储器,从使用功能角度看,半导体存储器可以分成两大类:断电后数据会丢失的易失性(Volatile)存储器和断电后数据不会丢失的非易失性(Non-volatile)存储器。微型计算机中的RAM属于可随机读写的易失性存储器,而ROM属于非易失性(Non-volatile)存储器

⑶ 存储器工作原理
为了更好地存放程序和数据,存储器通常被分为许多等长的存储单元,每个单元可以存放一个适当单位的信息。全部存储单元按一定顺序编号,这个编号被称为存储单元的地址,简称地址。存储单元与地址的关系是一一对应的。应注意存储单元的地址和它里面存放的内容完全是两回事。
对存储器的操作通常称为访问存储器,访问存储器的方法有两种,一种是选定地址后向存储单元存入数据,被称为“写”;另一种是从选定的存储单元中取出数据,被称为“读”。可见,不论是读还是写,都必须先给出存储单元的地址。来自地址总线的存储器地址由地址译码器译码(转换)后,找到相应的存储单元,由读/写控制电路根据相应的读、写命令来确定对存储器的访问方式,完成读写操作。数据总线则用于传送写入内存或从内存取出的信息。主存储器的结构框图如图1-8所示

4. 输入设备

输入设备是从计算机外部向计算机内部传送信息的装置。其功能是将数据、程序及其他信息,从人们熟悉的形式转换为计算机能够识别和处理的形式输入到计算机内部。
常用的输入设备有键盘、鼠标、光笔、扫描仪、数字化仪、条形码阅读器等。

5. 输出设备

输出设备是将计算机的处理结果传送到计算机外部供计算机用户使用的装置。其功能是将计算机内部二进制形式的数据信息转换成人们所需要的或其他设备能接受和识别的信息形式。常用的输出设备有显示器、打印机、绘图仪等。
通常我们将输入设备和输出设备统称为I/O设备(Input/Output)。它们都属于计算机的外部设备。

6. 计算机软件系统

一个完整的计算机系统是由硬件和软件两部分组成的。硬件是组成计算机的物理实体。但仅有硬件计算机还不能工作,要使计算机解决各种问题,必须有软件的支持,软件是介于用户和硬件系统之间的界面。
“软件”一词 20世纪60年代初传入我国。国际标准化组织(ISO)将软件定义为:电子计算机程序及运用数据处理系统所必需的手续、规则和文件的总称。对此定义,一种公认的解释是:软件由程序和文档两部分组成。程序由计算机最基本的指令组成,是计算机可以识别和执行的操作步骤;文档是指用自然语言或者形式化语言所编写的用来描述程序的内容、组成、功能规格、开发情况、测试结构和使用方法的文字资料和图表。程序是具有目的性和可执行性的,文档则是对程序的解释和说明。
程序是软件的主体。软件按其功能划分,可分为系统软件和应用软件两大类型。

7. 系统软件(System Software)

系统软件一般是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
常见的系统软件主要指操作系统,当然也包括语言处理程序(汇编和编译程序等)、服务性程序(支撑软件)和数据库管理系统等。

⑴ 操作系统OS(Operating System)

操作系统是系统软件的核心。为了使计算机系统的所有资源(包括硬件和软件)协调一致、有条不紊地工作,就必须用一个软件来进行统一管理和统一调度,这种软件称为操作系统。它的功能就是管理计算机系统的全部硬件资源、软件资源及数据资源,从图1-10可以看出,操作系统是最基本的系统软件,其他的所有软件都是建立在操作系统的基础之上的。操作系统是用户与计算机硬件之间的接口,没有操作系统作为中介,用户对计算机的操作和使用将变得非常难且低效。操作系统能够合理地组织计算机整个工作流程,最大限度地提高资源利用率。操作系统在为用户提供一个方便、友善、使用灵活的服务界面的同时,也提供了其他软件开发,运行的平台。它具备五个方面的功能,即CPU管理,作业管理,存储器管理,设备管理及文件管理。操作系统是每一台计算机必不可少的软件,现在具有一定规模的现代计算机甚至具备几个不同的操作系统。操作系统的性能在很大程度上决定了计算机系统工作的优劣。微型计算机常用的操作系统有DOS(Disk Operating System)、Unix、Xenix、Linux、Windows98/2000、NetWare、WindowsNT、WindowsXP等。

⑵ 语言处理程序

在介绍语言处理程序之前,很有必要先介绍一下计算机程序设计语言的发展。
软件是指计算机系统中的各种程序,而程序是用计算机语言来描述的指令序列。计算机语言是人与计算机交流的一种工具,这种交流被称为计算机程序设计。程序设计语言按其发展演变过程可分为三种:机器语言、汇编语言和高级语言,前二者统称为低级语言。
机器语言(Machine Language)是直接由机器指令(二进制)构成的,因此由它编写的计算机程序不需要翻译就可直接被计算机系统识别并运行。这种由二进制代码指令编写的程序最大的优点是执行速度快、效率高,同时也存在着严重的缺点:机器语言很难掌握,编程繁琐、可读性差、易出错,并且依赖于具体的机器,通用性差。

汇编语言(Assemble Language)采用一定的助记符号表示机器语言中的指令和数据,是符号化了的机器语言,也称作“符号语言”。汇编语言程序指令的操作码和操作数全都用符号表示,大大方便了记忆,但用助记符号表示的汇编语言,它与机器语言归根到底是一一对应的关系,都依赖于具体的计算机,因此都是低级语言。同样具备机器语言的缺点,如:缺乏通用性、繁琐、易出错等),只是程度上不同罢了。用这种语言编写的程序(汇编程序)不能在计算机上直接运行,必须首先被一种称之为汇编程序的系统程序“翻译”成机器语言程序,才能由计算机执行。任何一种计算机都配有只适用于自己的汇编程序(Assembler)。
高级语言又称为算法语言,它与机器无关,是近似于人类自然语言或数学公式的计算机语言。高级语言克服了低级语言的诸多缺点,它易学易用、可读性好、表达能力强(语句用较为接近自然语言的英文字来表示)、通用性好(用高级语言编写的程序能使用在不同的计算机系统上)。但是,对于高级语言编写的程序仍不能被计算机直接识别和执行,它也必须经过某种转换才能执行。
高级语言种类很多,功能很强,常用的高级语言有:其中面向过程的有Basic、用于科学计算的Fortran、支持结构化程序设计的Pascal、用于商务处理的COBOL和支持现代软件开发的C语言 ;现在又出现了面向对象的VB(Visual Basic)、VC++(Visual C++)、Delphi、Java等语言使得计算机语言解决实际问题的能力得到了很大的提高。

Ø Ø Fortran 语言在1954年提出,1956年实现的。适用于科学和工程计算,它已经具有相当完善的工程设计计算程序库和工程应用软件。
Ø Ø Pascal 语言是结构化程序设计语言,适用于教学、科学计算、数据处理和系统软件开发等,目前逐渐被C语言所取代。
Ø Ø C语言是美国Bell实验室开发成功的,是一种具有很高灵活性的高级语言。它语言程序简洁,功能强,适用于系统软件、数据计算、数据处理等,成为目前使用得最多的程序设计语言之一。
Ø Ø Visual Basic是在Basic语言的基础上发展起来的面向对象的程序设计语言的,它既保留了Basic语言简单易学的特点,同时又具有很强的可视化界面设计功能,能够迅速地开发Windows应用程序,是重要的多媒体编程工具语言。
Ø Ø C++是一种面向对象的语言。面向对象的技术在系统程序设计、数据库及多媒体应用等诸多领域得到广泛应用。专家们预测,面向对象的程序设计思想将会主导今后程序设计语言的发展。
Ø Ø Java是一种新型的跨平台分布式和程序设计语言。Java以它简单、安全、可移植、面向对象、多线程处理和具有动态等特性引起世界范围的广泛关注。Java语言是基于C++的,其最大的特色在于“一次编写,处处运行”。Java已逐渐成为网络化软件的核心语言。
语言处理程序的功能是将除机器语言以外,利用其他计算机语言编写的程序,转换成机器所能直接识别并执行的机器语言程序的程序。可以分为三种类型,即汇编程序、编译程序和解释程序。通常将汇编语言及各种高级语言编写的计算机程序称为源程序(Source Program),而把由源程序经过翻译(汇编或者编译)而生成的机器指令程序称为目标程序 (Object Program)。语言处理程序中的汇编程序与编译程序具有一个共同的特点,即必须生成的目标程序,然后通过执行目标程序得到最终结果。而解释程序是对源程序进行解释(逐句翻译),翻译一句执行一句,边解释边执行,从而得到最终结果。解释程序不产生将被执行的目标程序,而是借助解释程序直接执行源程序本身。

应该注意的是,除机器语言外,每一种计算机语言都应具备一种与之对应的语言处理程序。

⑶ 服务性程序(支撑软件)

是指为了帮助用户使用与维护计算机,提供服务性手段,支持其他软件开发而编制的一类程序。此类程序内容广泛,主要有以下几种:
Ø Ø 工具软件:工具软件主要是帮助用户使用计算机和开发软件的软件工具,如美国Central Point Software公司推出的PC tools。
Ø Ø 编辑程序:编辑程序能够为用户提供一个良好的书写环境。如EDLIN、EDIT、写字板等。
Ø Ø 调试程序:调试程序用来检查计算机程序有哪些错误,以及错误位置,以便于修正,如DEBUG。
Ø Ø 诊断程序:诊断程序主要用于对计算机系统硬件的检测和维护。能对CPU、内存、软硬驱动器、显示器、键盘及I/O接口的性能和故障进行检测。

⑷ 数据库管理系统

数据库技术是计算机技术中发展最快、用途广泛一个分支,可以说,在今后的各项计算机应用开发中都离不开数据库技术。数据库管理系统是对计算机中所存放的大量数据进行组织、管理、查询有效提供一定处理功能的大型系统软件。主要分为两类,一类是基于微型计算机的小型数据库管理系统,如FoxBase和Foxpro;另一类是大型数据库管理系统。

8. 应用软件

应用软件是指在计算机各个应用领域中,为解决各类实际问题而编制的程序,它用来帮助人们完成在特定领域中的各种工作。应用软件主要包括:为解决各类实际问题而编制的程序,它用来帮肋人们完成在特定领域中的各种工作。应用软件主要包括:
⑴ 文字处理程序:文字处理程序用来进行文字录入、编辑、排版、打印输出的程序,如Microsoft Word、Wps2000等。
⑵ 表格处理软件:电子表格处理程序用来对电子表格进行计算机、加工、打印输出的程序,如Lotus、Excel等。
⑶ 辅助设计软件:软件开发程序是为用户进行各种应用程序的设计而提供的程序或软件包。常用的有AutoCAD、Photoshop、3D Studio MAX等。另外,上述的各种语言及语言处理程序也为用户提供了应用程序设计的工具,也可视为软件开发程序。
⑷ 实时控制软件:在现代化工厂里,计算机普遍用于生产过程的自动控制,称为“实时控制”。例如,在化工厂中,用计算机控制配料、温度、阀门的开闭;在炼钢车间,用计算机控制加料、炉温、冶炼时间等;在发电厂,用计算机控制发电机组等。这类控制对计算机的可靠性要求很高,否则会生产出不合格产品,或造成重大事故。目前,PC机上较流行的软件有FIX、InTouch、Lookout等。
⑸ 用户应用程序;用户应用程序是指用户根据某一具体任务,使用上述各种语言、软件开发程序而设计的程序。如人事档案管理程序、计算机辅助教学软件、各种游戏程序等。

三,计算机硬件和操作系统怎么衔接的

1. 什么是BIOS?

一台可以正常使用的电脑,除了齐全的硬件,还要有完善的软件,两者是相辅相成的,硬件指的就是硬件,很多朋友以为软件指的就是我们使用的操作系统,其实电脑主板上面还有一个系统,这也就是我们说的BIOS系统,这个系统我们一般情况下用不到的,正常是在安装系统,硬件超频的时候才能用得到,BIOS其实是英文Basic Input Output System的缩写,意思是基本输入输出系统,它是电脑启动时加载的第一个软件,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序。

BIOS是计算机硬件与操作系统的接口,BIOS的全称为Base Input Output Sytem,叫基本的输入输出系统,BIOS既属于软件又属于硬件,它的主体是程序和数据,本质是软件,而用来存储它的Flash ROM芯片才是硬件。

2. 如何衔接?

  1. BIOS首先POST加电自检 检测主板及CPU
  2. 检测内存
  3. 检测显卡
  4. 然后根据BIOS的设置,来从硬盘、光驱、软驱来引导系统
  5. 检测硬盘的MBR(主引导记录)信息
  6. 搜索硬盘中的活动分区
  7. 根据MBR(主引导记录)信息引导进入操作系统

总结一句简单的话,就是

接入电源之后,检查各个硬件是否可用,然后根据一个BOOT程序(一套标准规则)来读取操作系统的代码,找到Main启动函数并执行,然后操作系统就运行起来了,操作系统通过驱动直接操作硬件,然后向上暴露接口,供软件使用,使软件直接操作硬件资源。

四,计算机网络

此文转载自:https://www.cnblogs.com/zyx110/p/11891335.html

1. 计算机网络概述

时代不同了,大家现在生活都好了,家家户户基本都有电脑,而且我们都习惯了使用电脑办公,打打游戏,聊聊天等等。那我们一起来想一个场景:如果没有了网络,我们是不是就不能使用电脑进行聊天了呀。那网络到底是如何帮助我们来完成网络聊天的?下面我就跟大家聊聊计算机网络到底是怎么回事儿。

了解我的读者都知道,我习惯先用自己的语言解释,后说官方定义。这回我和以往反着来,先说官方定义,再解释:

计算机网络是由通信介质将地理位置不同的且相互独立的计算机连接起来,实现数据通信与资源共享。

我们假设有两个独立且毫不相关的计算机,一台在青海,一台在河南,想要进行数据传输(聊天),没网是不行的。这个网指的就是互联网( Internet )。这个 Internet 它是一个通信协议。什么是协议?打个比方,就好比我们打电话,在中国,中国有十几亿人,地大物博,全国各地都有自己的方言,还有些地方使用自己的民族语言,这时候想要良好的沟通就必须使用一个统一的标准,就是普通话。大家都讲普通话,沟通起来就没有问题了。那如果是不同国家进行沟通呢?我们可以选择使用英语进行交流,那英语就是全世界国家通用的一个标准,计算机就好比是分布在全世界各个角落的人,计算机之间通话也要找一个统一的标准,这个标准就是 Internet 标准,又叫做 Internet 协议。

2. 网络介绍及隔壁老王的故事

先给大家讲一个虚构版隔壁老王的故事:

有一个人叫隔壁老王,他有一个爱好就是看电影。有一天,这个隔壁老王想看一部电影,可是电脑里面存储的电影太多了,他费了老大劲才从里面找到,觉得很不爽。于是他想,我能不能把所有电影做个分类,把同一种类型的电影放在同一个文件夹下,然后把所有的文件夹整合在一起,自己写个浏览器软件,把文件夹信息放到浏览器上,到时候找电影的时候就好找了,只要找到相应的文件夹直接点进去就能找到电影了。老王说干就干,没多久就把所有的文件夹整理好了,然后把所有文件夹放到同一个页面上,到时候他想点哪个就点哪个,So easy!(那些网站可能就是这样来的)

这回出来一个新人物,就叫小王吧(不是小王八),老王就是住在小王隔壁,有一天小王看到老王电脑上有那么多电影,就跟老王商量,能不能在他电脑上也弄个跟老王一样的,让他也看看。老王也不是个小气的人,好东西就是要分享的嘛,想都没想就答应了,给小王说在你电脑上插根线接到我电脑上,然后下载我这个软件,直接访问我的电脑就行了。小王很高兴,他马上回家按老王说的做,没多久他的电脑上也能看老王电脑上的东西了。有了小王,就还会有小张,小李,互相插根网线,他们都能互相共享电影了。这样,局域网也就产生了,就比如在一个公司或者一个学校用的网络,都称为局域网。那学校有很多呀,不同的学校用的局域网是不同的,不同的城市也有不同的局域网,以局域网为单位,散布在一个区或一个城市的各个局域网加一起叫城域 网,然后全世界所有城市的城域网加一起就叫广域网。

过了一段时间,老王去小王家,看到小王电脑里的电影比自己的还多,而且还好看,然后老王跟小王说,把你的这些电影给我一份吧,我也想看看。不用想,小王肯定立马答应了,说你自己弄吧,想看哪个随便看。姜还是老的辣,老王想到一个好办法,他跟小王说,我再找一台电脑,把我俩电脑上的资源全部放到那台电脑里,我俩只要在那个电脑上插根线连到自己电脑上,就都能访问那台电脑上的东西了,这样岂不是很方便。小王一拍脑门,呀!我咋就没想到,那还不赶紧的。老王另外找了一台电脑,然后他俩把自己的电脑和那台电脑用线连起来,再把自己电脑里的所有资源全传进那台电脑中,最后他俩就能共享资源了。(那台电脑就是服务器)

总结一下就是:

  • 网络按地域分类:根据参照物不同、类型不同分为
  • 局域网:一个公司、一个家庭、一个学校······
  • 城域网:一个地区、一个城市······
  • 广域网:一个国家、全世界······

3. 互联网协议是如何分布和设计的

我在上面说了 Internet 协议,互联网协议按照功能的不同,分为 osi 七层, tcp / ip 五层, tcp / ip 四层协议。如下图:

osi 的七层协议体系结构的概念清楚,理论也比较完善,但它既复杂又不实用, ISO 制定的 osi 协议参考模型的过于庞大、复杂招致了许多批评。于此对照,由技术人员自己开发的 TCP / IP 协议获得了更为广泛的应用。因此,我们只需要弄明白 TCP / IP 五层协议 就能了解和明白计算机最底层的通信是怎么回事。

4. TCP/IP五层协议

如图,从最下方的物理层到最上方的应用层,对于我们用户而言,最直接的是应用层。从上到下每一层都依赖于下一层,所以我从最下一层开始给大家讲解:

注意:每一层都运行着一个特定的协议,共同组合成互联网协议

(1)物理层

物理层主要是由双绞线、光缆、电缆、无线电波组成,其作用很简单,就是连接不同的计算机,并传递底层电信号,高电压: 1 ,低电压: 0 。

(2)数据链路层

我们从物理层上接收或者发送单纯的 0 、 1 是没有意义的,为什么呢?想想哈,我想给女朋友发送一句话:“你好漂亮”,那我们要把“你好漂亮”转换成 01 之后,交给网卡,网卡就懵逼了,发给谁 ??? 不知道。那怎么办?必须要确定数据发给谁。就像我们的快递一样,是不是在外层包装上有商家地址和个人地址,这样我们不管是发还是收,都能准确定位了。网络传送数据也一样,我们就在数据前面加上目标地址,为了能接收到回信,也要把自己的地址也加上。但是,如果数据和地址放在一起,又乱了,比如,我给你一堆 01 ,1010101000101010101 ,你也分不清哪里是数据,哪里是地址。这时我们就要对要发送的 01 进行分组,规定前面 xxx 位是地址,后面 xxx 位是数据,并且,大家想互相都能通信,就必须都遵守这样的规则(协议),这个协议叫以太网协议。在以太网协议出现之前,各个公司都有自己的分组规则,后来都统一使用以太网协议了。

以太网协议规定:一组电信号构成一个数据包,叫帧,每一帧分为报头( head )和数据( data ) 两部分。

  • 报头(head):固定 18 个字节
  • 发送者/源地址: 6 个字节
  • 接收者/目标地址: 6 个字节
  • 数据类型: 6 个字节 数据( data ):最短 46 个字节,最长 1500 字节 数据包的具体内容(发送给女朋友的话/快递货物)

以太网协议中的地址叫 MAC 地址, MAC 地址是每台计算机唯一的物理地址,是被写在网卡上的。以太网协议规定,每一台接收和发送数据的设备必须要装有网卡,负责发送和接收数据的设备,发送端和接收端的地址,指的就是网卡的地址,即 MAC 地址。

MAC地址

MAC 地址是每个网卡在出厂的时候,由各个厂商直接烧录在网卡上的,而且,这个地址必须是全世界唯一的。 MAC 地址是由 12 位 16 进制的数字表示(前六位是厂商编号,后六位是流水线号),这样不同的厂商之间就不会产生冲突了,自己生产自己的就好了。

交换机

在这给大家介绍一个东西,我们说两个电脑要通信要先连根线,但是如果电脑多了之后,电脑间通信连的线也就多了,这样太乱了,我介绍的这个东西就是交换机,它是负责组件局域网,研究的是 MAC 地址,它有什么用你看下面图片中的接口就知道了

有了 MAC 地址,以太网就可以进行工作了.理论上讲,我们可以和世界上的每一台连接了互联网的计算机进行通信了,此时通信的方案是:广播

广播又是怎么一回事?其实广播的方式很原始,基本通信就是靠吼。就像你想跟女朋友求婚一样,你会大喊:“ xxx ,嫁给我吧”,旁边能听到这句话的人有很多,但是只有你女朋友会回复你。其他人会把你当傻逼一样看待。没错,广播就是这样进行通信的。首先组织好了一个数据包之后,把这个数据包通过电信号发出去,这时整个网络上所有的人都会收到你发的这条数据,然后看看这个数据是不是自己的。如果不是就当他不存在,如果是,就接收。虽然效率低点,但毕竟能通信了。

广播

广播带来什么问题呢?如果是在一个小的网络环境里。比方说,你们宿舍几个人,一起玩 CS ,没问题,你喊一嗓子,你室友也能回应你,也就效率低点。但是如果你连接到全世界的互联网上,还使用广播的方式来通信,就不是效率问题了,而是一个巨大的通信灾难。全世界 60 多亿人,每个人吼一嗓子,每个人发送一条信息,那每个人都会收到 60 多亿条信息,网络瞬间瘫痪,这种问题被称为广播风暴,那如何解决呢?

(3)网络层

首先,我们要了解一个事情,世界大网络(广域网)是由一个一个的互相隔离的小型局域网(子网)组成的,不同的局域网之间使用路由来连接。

路由器

上面说的交换机是负责组建局域网,研究的是 MAC 地址,而路由器是负责组件广域网,研究的是 IP 地址,这个 IP 地址下面我再解释。

刚才说的广播,只能在一个局域网内进行通信,不可以在大网络上进行广播,有了路由器,就避免了广播风暴的问题。每个局域网被称为一个广播域,局域网和局域网之间使用路由的方式进行通信(向不同的广播域/子网发送数据包),用路由器把一个局域 网里的所有计算机划分成一个个子网。

现在大家先想一想生活中,如果是之前说的广播,就相当于在一间教室里你正在上课,你要给某个女孩传纸条,那你要在纸条外面写上你和你要传的女孩的名字,再在里面写上你要写的话,写好后折起来,你和女孩的名字在外,内容在内,然后让同学一个一个帮你传,每个同学在传的时候都会看外面写的名字,如果不是他,就继续传,直到传到的人是你写的那个女孩为止。那这间教室就相当于一个局域网。好,现在我们要实现局域网和局域网之间的通信,比如此时位于青海的你要给河南的朋友送东西,你不可能用广播的方式了,你只能快递,这个青海和河南以及还有很多不同的省份是我国的土地划分中的一部分,每一个省也可以看作是一个个局域网,那在网络中,我国就相当于广域网,那不同的局域网是如何划分的呢? MAC 地址是没办法区分的,因为 MAC 地址上只有厂商的流水号,这就引出我要说的网络层,网络层引出了一套新的地址来区分不同的局域网/子网,这一套地址就是网络地址。

规定网络地址的协议叫 IP 协议,它定义的地址叫 IP 地址。其实跟我国的省份名差不多,继续说送快递,你要把送的东西包装好,在外面写上你自己的地址和省份地址,还有朋友的地址和省份地址,交给青海的快递公司,然后青海的快递公司转交给河南的快递公司,最后由河南的快递公司分配给你朋友,你朋友就收到快递了。在这有两点需要注意:

  • 你要同时写两个地址,自己的地址( MAC 地址)和省份地址( IP 地址),这样就能确定所要 接收和发送人的具体的位置了。
  • 青海的快递公司和河南的快递公司就相当于路由器
子网掩码

在这给大家普及一下子网掩码,我们上面说有了 IP 地址和 MAC 地址,我们就能让任何计算机之间进行通信了,那现在再想想,如果我要用我的计算机给另外一台计算机实现通信,我是不是要判断要通信的计算机是否和我的计算机在同一个 IP 地址中,相当于上面例子中我和我要送东西的朋友是否在一个省,这个时候就需要用子网掩码,我拿着我的 IP 地址和对方的子网掩码通过计算,判断是否在同一个 IP 地址下,如果在同一个IP 地址下,我可以用广播的形式进行通信,如果不在同一个 IP 地址下,我可以先把数据传给我方的路由器,再由我方的路由器把数据传给对方的路由器,最后由对方的路由器把数据传给要接收数据的计算机。这样说,再联系上面已经说过的,我想不难理解了。

IP地址

目前我们普遍使用的是 IPV4 ,它规定,一个网络地址由 32 位二进制组成,把 32 位平均分成四份,每一份 8 位, 8 位最大能表示的数据是 255 ,所以IP地址的范围:0.0.0.0255.255.255.255.

一个IP地址分为两部分,分别是网络位和主机位

网络位用来标识不同的子网主机位用来标识子网下主机的编号

为什么要分两部分呢?很简单,就好比你想写信给你的女朋友,假设你女朋友的地址是西宁市平安路128号,那么网络位就会直接找到西宁市,主机位帮你找到你的女朋友。

网络位和主机位是如何划分的?使用子网掩码来划分。子网掩码和IP地址差不多,都是由32位二进制数来表示,子网掩码也分为网络部分和主机部分,网络部分由1组成,主机部分由0组成。

那说了这么多,IP协议是如何发送数据的?协议规定,IP协议使用IP数据包进行发送 数据。IP数据包同样把数据分为了两部分,head和data,并且在发送数据的时候,直 接用IP数据包直接装载以太网的data部分。

head:长度为 20 到 600 字节

data:最长为 65515 字节

而以太网数据包的“数据”部分,最长只有 1500 字节,因此,如果IP数据包超过了 1500 字节,它就需要分割成几个以太网数据包,分开发送了。

再回顾一下啊,以太网的头是包含了自己的 MAC 地址和目标 MAC 地址的,那如何查 找目标 MAC 地址呢?前辈们弄了一个叫 ARP 协议的东西专门来解析目标 MAC 地址。 它是如何工作的?首先,它是数据链路层的东西,在我们发送一个数据包的时候是包含着对方的 IP 地址的。例如我(172.13.4.58)想发送一条数据给女朋友(172.13.4.90),首 先,我得先拿到女朋友的MAC地址才可以通信。此时,我们会先计算一下我和女朋友 是否在一个子网内(子网掩码)

在一个子网内,直接广播发送一个数据包

子网内的计算机发现了这个包之后会返回一个数据包并且带有 MAC 地址,这样就通过 IP 地址找到了目标主机的 MAC 地址,接下来就可以进行数据传输了。

不在一个子网内,单纯的用广播就不行了,因为广播只是针对自己内网而言。那怎么办,此时会把数据包发给网关,由网关发给其它路由,这样在整个万维网里就可以找到你想要的那个计算机的 MAC 地址了。

总结

  • ARP 就是通过 IP 地址来查找 MAC 地址的一套固定协议,它是数据链路层的内容。
  • 网络层的意义:定义了子网, 区分各个局域网
  • IP 地址:网络地址
  • 子网掩码:计算是否是同一个子网

(4)传输层

到目前为止,前三层内容已经可以进行数据传输了。但是,我们的一台计算机上可以 一次性运行多个网络应用程序,比如, QQ 、微信 、 LOL 三个软件一起运行,都要进行网络传输,但是就前面学习的这三层内容,是没办法区分开数据是要发送给哪一个 软件的。那怎么办?引入第四层,传输层,传输层定义了端口的概念,每一个网络应 用程序占用一个网络端口,不同的程序就用端口把数据隔离,两两互相不影响。

  • 端口:应用程序和网卡的关联编号
  • 传输层:建立端口到端口的通信。
  • 传输层有两种协议: TCP 和 UDP

TCP协议

TCP 协议:可靠传输, TCP 数据包没有长度限制,理论上可以无限长,但是为了保证网络的 效率,通常 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包不必再分割。

TCP 头放的主要是源端口和目标端口

UDP协议

UDP 协议:不可靠传输,“报头”部分一共只有 8 个字节,总长度不超过 65535 字节,正好放 进一个 IP 数据包。

其实和邮信是一样的,写好地址,写好接收人,直接装进信封里,丢进邮箱里就不用你管了,对方什么时候收,收没收到,你不知道。

(5)应用层

用户使用的都是应用程序,均工作于应用层,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式。对于用于而言最直观的就是应用层。

应用层:规定应用程序的数据格式

例: TCP 协议可以为各种各样的程序传递数据,比如 Email 、 WWW 、 FTP 等,那么, 必须有不同协议规定电子邮件、网页、 FTP 数据的格式,这些应用程序协议就构成了“应用层”。

以上是对TCP/IP5层协议的解读,总结一下:

发送数据其实就是一个封装数据的过程

最后从物理层发出,对方接收到了之后再自下而上一层一层打开拿到数据,以上内容就是一个网络传输的大致过程,其中还有好多细节没有阐述,但大家知道和了解以上内容,对开发而言足够了。

posted @ 2022-08-25 14:45  你樊不樊  阅读(221)  评论(0编辑  收藏  举报