计算机网络入门概念理解

计算机网络入门概念理解

下面我来讲解一些关于网络的基础知识,这些知识有利于帮助我们今后学习TCP/IP协议相关知识打好基础。

诞生背景

首先从网络的诞生背景讲起。一开始计算机的运作是独立存在的(独立模式),每个计算机有各自的业务,用户需要在不同的计算机上执行特定的业务逻辑。用户采用卡带的方式将程序和数据输入计算机让计算机进行运算。之后出现了分时系统,分时系统具有“多终端,一主机 ”的特点,由于分时系统CPU时间片轮转的特性让用户有了“一人一机”的错觉。70年代后计算机日渐小型化,慢慢的出现了多台主机连接通信的技术,紧接着到80年代,互连多种计算机(包括超级计算机、PC等)的网络诞生。90年代后提出“瘦身”和“多供应商连接”的口号,电子邮件和万维网技术取得长足的发展。如今的社会已然是互联网的时代,甚至于一切皆“TCP/IP”连接。计算机在规模上从WAN(广域网)到LAN(局域网)。

协议

下面说一下协议相关的东西。
协议简单来说就是通信事物之间进行沟通的规则。由于计算机不具备人类的认知能力,所以要想实现计算机之间的通信,制定通信规则然后通信双方共同遵守该规则是通信的前提。这里提一下分组交换协议,后面要用到。分组交换是指将大数据切割成一个个包(Packet)进行传输的方法。注意切成包之后一定要在包上加上数据的源主机地址和目标地址、分组序号这些信息,即报文首部。注意一定要贴上这些东西,不然你怎么把数据发送出去,怎么让数据在目标地址那边把大数据凑出来?穿插了一下分组交换,下面继续前面刚刚提到的协议。协议开始是由各个厂家各自制定的,这样的结果就是用户只能使用同一个厂家的设备进行通信……后来ISO看不下去了,就制定了OSI标准协议(顺便给出了OSI参考模型)。虽然ISO给出的OSI协议最后并不流行,但是它提出了这种思想。今天TCP/IP协议正在一统天下。(注:TCP/IP不是ISO制定的,它是IETF制定的)

既然说到了分组交换,就把现代网络通信方式分组交换说一下吧。在这之前先说一下更加悠久的电路交换技术。先看一下下面这个图:

在电路交换技术中,计算机先通过电路交换机连接,此外还有另外一批计算机也通过电路交换机连接。如果计算机A与计算机F想要建立连接,怎么办呢?A与F通过中间的电路连接在一起。这样的方式不用多想存在许多弊端:不能同时并发通信,因为中间的电路每次只能给两台计算机通信用!于是人们想出了更加优秀的分组交换技术,看上图,就是将左侧的计算机需要发送的数据全部送到路由器里面切割成一个个的(Packet)然后缓存在路由内部,路由按照队列的方式将这些包发送出去。这样就解决了电路交换技术中的一些问题。但是它也有些毛病,比如当路由缓存满时可能溢出导致数据丢失或者无法发送的情况。

OSI参考模型

上面说到了ISO的OSI协议,后来它并没有被大量采用,不过ISO的OSI参考模型却成为今天网络体系结构的标准模型。让我们来看看这个是什么东东,为什么能影响力这么大?其实OSI参考模型就是将网络通信本来复杂无厘头的过程分成了7层(见下面),每一层都有它们各自管理的事情,相同层次之间可以使用协议通信,而不同层次之间又可以通过接口来通信。这个分层是如此的美妙,比如在这个系统内某一个层次发生更改或者拓展并不会影响到整个系统的特点,所以到今天它也一直在使用着。不过它也有一些劣势,像过分分层导致有些功能实现逻辑不得不重复实现。

下面我们一起来看看协议中7层各自的功能。博主以一个场景为例来介绍7层功能,欢迎吐槽。以小明向小红发送电子邮件为例。小明写好了一封邮件“早上好”,填好了小红的Email地址,然后点击“发送 ”按钮,应用层就开始摩拳擦掌了。应用层利用协议先在数据的前端附加一个首部(标签)信息,包括邮件内容“早上好”和收件人小红的信息。这些信息会在小红的应用层中被分析保存,此外还存在异常处理。小明的应用层把数据处理后传到下面的表示层去。为什么要有表示层捏?试想一下,小明的电脑他使用Outlook来发邮件,小红的电脑使用网页版来收文件,假设这两个软件的编码格式不同,如果直接进行收发会出现怎样的情况?当然是乱码咯。所以就要有表示层来解决这种情况,在发送方将数据转换成网络通用的标准数据格式,然后在接收方将这些特定格式的数据再次解码为本地的编码格式,这样就没有乱码问题了。注意表示层也会附加首部信息。好了,现在经过两层的处理,数据传到了会话层。这一层又是干嘛的呢?一封邮件看不出来它的作用,我就再举例吧。小明发完“早上好”又发了一封“吃了没”,会话层的作用就是解决建立连接,按照什么顺序发送的问题的,但是它不发送。比如说,建立一次连接发送“早上好”然后断开,再建立一次连接发送“吃了没”再断开;或者建立一次连接同时发送“早上好”“吃了没”。确定怎么建立连接,怎么发送是这一层的问题,这是连接管理层。接下来会话层会把数据继续传递至下一层,传输层以下就是真正发挥网络传输的地方了。上面的数据传到传输层,传输层就确定小明的主机与小红的主机是否连接了,没有连接就建立连接,通信完毕就断开连接。此外传输层会判断数据是否完整地到达了小红的主机,如果没有就重新发一遍。可以看出传输层具有保障数据可靠性的功能。经过了传输层,我们的连接就建立了。然而它并不会真的把数据发送出去,这就要下面的网络层和数据链路层来处理了。网络层是指从原地址到目标地址数据通信的过程,是整个通信的过程。而数据链路层是指传递过程中的中转站传递(见下面)。就好比小明的邮件要传到一个个别的设备最终才能到达小红的主机上。

最后一层是物理层,顾名思义,就是通过物理介质来实现数据传递的层级。这是通信的根本,没有物理介质通信不可能实现。在这一层里数据从0,1转换为电压或者脉冲光传递,通过MAC地址来实现传递。

经过这么漫长的步骤,小明终于把数据发送了出去。那么小红是怎么接收数据的呢?其实就是上面过程倒叙一遍啦。小红的主机从物理层开始不断将小明发送来的数据进行反向解码,从而一层层剥离最终得到想要的数据。关于OSI参考模型需要在今后的学习中不断更新理解,这里可能存在偏差。

传输方式

上面列举了小明和小红的通信过程,我们称之为面向有连接型连接,因为双方都建立了连接后才进行的通信。此外还有面向无连接型通信,UDP大家都知道吧,发送方就是一个劲地发,不管别人是否接收。这种方式有什么好处呢?它可以让处理变得简单,你发就行,我接收就行,不用去执行建立通信那一套东西。
其实上面的两种传输方式是一种分类,此外还有根据接收端数量来分类的方式,分为单播、广播、多播和任播*。这不难理解(见下图)

注意:多播和任播的客户端全体拥有同一个地址。

地址

说了这么多终于说到地址了。上面的通信过程必须有地址才能实现。地址具有两个重要的特性:唯一性层次性。唯一性不多说了,在同一个通信网络中地址必须唯一指定,不然怎么通信……说说层次性,层次性是指地址中能够实现快速定位的能力。比如从一个电话号码可以看出用户的国家、省市、区名。IP地址由于其拥有网络号和主机号而拥有层次性。两个相同网络号的IP地址的主机的组织结构、提供商类型和地狱分布集中。而MAC地址不具有层次性。
下面说说寻址的问题。
网络传输过程中的节点会根据分组数据的地址判断是从哪个网卡发出来的,MAC寻址会参考地址转发表,IP寻址会参考路由控制表,具体寻址参考下面这张图,一目了然。

网络的构成要素

上面讲了这么多,最后从宏观上,从现实中来感知一下网络的存在吧。网络的物理设备组成包括:网卡、中继器、网桥/2层交换机、路由/3层交换机、4-7层交换机、网关还有电缆。计算机通信是通过线缆来完成的,线缆的传输速率(又称带宽)指单位时间传输的数据量的多少。网络接口卡(NIC)有时也被称为网络适配器、网卡、LAN卡,是计算机连网的设备,具有独一无二的MAC地址。中继器处于物理层,是对电缆信号进行波形调整和放大然后继续传输的设备。可以认为集线器每个端口都是中继器。网桥(又称二层交换机)负责在数据链路层中的数据帧的重构、错误数据帧丢弃和传输数据帧。(维基百科上解释为> “橋接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。”)
路由(又称三层交换机) 处于网络层,根据IP地址连接两个网络对分组报文进行转发,此外还有网络安全和分担网络负荷的功能。网关负责从传输层到应用层的数据进行转换和转发的设备。互联网邮件与手机邮件之间的转换服务。互联网与手机之间设置了一道网关,网关负责读取完各种不同的协议后,对它们逐一进行合理的转换,再将相应的数据转发出去。代理服务器也是网关的一种,称为应用网关。个人对于中继器、网桥、路由的理解就是数据传输从底层硬件逐渐往上层的管理设备。

时间: 2024-08-28 07:35:25

计算机网络入门概念理解的相关文章

Log4j 入门概念理解

Log4j入门 1.添加Log的目的:   监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作   跟踪代码的运行轨迹,作为日后审计的依据   担当继承开发环境中的调试器作用,向文件或控制台打印代码的调试信息. 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类的操作.  2.Log4j是Apache 的一个开放源代码项目,它是一个开源的.轻量级的.用于日志管理的框架.我们可以用它控制日志信息输送的

深度学习入门必须理解这25个概念

深度学习入门必须理解这25个概念 2017年05月22日 21:11:51 Star先生 阅读数:30013 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/pangjiuzala/article/details/72630166 神经网络基础 1)神经元(Neuron)--就像形成我们大脑基本元素的神经元一样,神经元形成神经网络的基本结构.想象一下,当我们得到新信息时我们该怎么做.当我们获取信息时,我们一般会处理它,然后生成一个输出.类似地,在

Java入门——深入理解Java三大特性

Java入门——深入理解Java三大特性 本Blog内容: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法(getter,setter),如果不想被外界方法,我们大可不必提供方法给外界访问. 封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码. 可以对成员变量进行更精确的控制.(在setter方法中进行实际意义的校验) 总结:控制属性访问权限,不是你想改就能改.容易修改属性类型.精确控制属性的取值范围. 继承 继承是使用已存在的类

指针的入门和理解

/* ============================================================================ Name : TestPointer.c Author : lf Version : Copyright : Your copyright notice Description : 指针的入门和理解 一个程序载入内存时,系统会为变量和函数均分配内存,所以每个变量和函数都有其对应的内存 地址. 所以在C语言中有一个很常见的操作&就是用来取地

实现HTTPS系列第四弹之【TLS ,SSL等概念理解】

博文说明[前言]: 本文将通过个人口吻介绍TLS ,SSL,PKI等相关知识,在目前时间点[2017年5月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 1.第一弹:实现HTTPS系列第一弹之[http,https,www,web等概念简介] 博文链接:http://watchmen.blog.51cto.com/6091957/1922919 2.第二弹:实现HTTPS系列

php入门微理解

1.php是什么?(来自百度百科) php:Hypertext preprocessor(超文本预处理器).一种开源脚本语言.主要用于web开发. 2.与其他语言的关系 介于HTML和C/C++,Java,C#等语言之间.通常需要相应脚本解释器才能运行. 3.工作原理 通过web服务器(IIS or Apache)和php引擎程序解释执行完成.(工作过程和原理如下图,来自互联网) 4.asp/php/jsp的前景分析 Asp.net应用广泛 但前景未卜 php发展稳定 前景乐观 待遇略低 jsp

基本概念理解(二)

基本概念理解 1.bool类型表示真值true和false.可以将算数类型的任何值赋值给bool独享.0值算数类型表示false,任何非0的值都表示true(为什么经常搞反,汗!).也可以直接用false或者true给bool型变量赋值. 2.C++建议每个内置变量都进行初始化.虽然这样做不是必须的,但是会更加容易和安全. 3.和其它变量不同,除非特别说明,在全局作用域中声明的const变量是定义该对象的文件的局部变量.此变量只存在于那个文件中,不能被其它文件访问. 通过指定const变量为ex

java学习----入门概念

1.关于java语言的基本概念 java,面向对象,跨平台,适合分布式计算,解释型语言,具有多线程处理能力和较高的安全性. JVM (java virtual machine) java虚拟机, 能够运行java bytecode的虚拟机,是java平台的一部分.JVM屏蔽来与具体os相关的信息,使得java 程序只需生成在java虚拟机上运行的bytecode 当我们运行一个程序时,JVM负责将字节码转换为特定机器代码 何为虚拟机?即抽象化的计算机 java平台: 用java语言编写的软件赖以

Spring AOP入门——概念及注意点

AOP是什么? AOP从功能上来说就是在执行某些业务逻辑的前后,可以允许你动态地添加一些操作(比如记录日志.或者是判断是否有权限等),这些操作的添加,完全不耦合于原来的业务逻辑,从而对原有业务逻辑完全是透明. 也就是说,这段操作和业务逻辑是完全分开的,它可能在项目中需要横切多个模块,且其自身也是一个独立的模块,贯穿了整个项目.我们完全可以根据需要启用或者停用这个功能. AOP的典型应用就是事务管理和日志. AOP中的概念 下面这些术语并不是Spring定义的.由于AOP中的术语不是那么形象,所以