你们好,我是泰斗贤若如,一个专一于用大白话讲解技术的号主,此次给你们分享计算机网络原理的相关知识,我自认为文章内容已经很通俗易懂了,祝您阅读愉快!浏览器
时代不一样了,你们如今生活都好了,家家户户基本都有电脑,并且咱们都习惯了使用电脑办公,打打游戏,聊聊天等等。那咱们一块儿来想一个场景:若是没有了网络,咱们是否是就不能使用电脑进行聊天了呀。那网络究竟是如何帮助咱们来完成网络聊天的?下面我就跟你们聊聊计算机网络究竟是怎么回事儿。服务器
了解个人读者都知道,我习惯先用本身的语言解释,后说官方定义。这回我和以往反着来,先说官方定义,再解释:微信
计算机网络是由通讯介质将地理位置不一样的且相互独立的计算机链接起来,实现数据通讯与资源共享。网络
咱们假设有两个独立且绝不相关的计算机,一台在青海,一台在河南,想要进行数据传输(聊天),没网是不行的。这个网指的就是互联网( Internet )。这个 Internet 它是一个通讯协议。什么是协议?打个比方,就比如咱们打电话,在中国,中国有十几亿人,地大物博,全国各地都有本身的方言,还有些地方使用本身的民族语言,这时候想要良好的沟通就必须使用一个统一的标准,就是普通话。你们都讲普通话,沟通起来就没有问题了。那若是是不一样国家进行沟通呢?咱们能够选择使用英语进行交流,那英语就是全世界国家通用的一个标准,计算机就比如是分布在全世界各个角落的人,计算机之间通话也要找一个统一的标准,这个标准就是 Internet 标准,又叫作 Internet 协议。tcp
先给你们讲一个虚构版隔壁老王的故事:编辑器
有一我的叫隔壁老王,他有一个爱好就是看电影。有一天,这个隔壁老王想看一部电影,但是电脑里面存储的电影太多了,他费了老大劲才从里面找到,以为很不爽。因而他想,我能不能把全部电影作个分类,把同一种类型的电影放在同一个文件夹下,而后把全部的文件夹整合在一块儿,本身写个浏览器软件,把文件夹信息放到浏览器上,到时候找电影的时候就好找了,只要找到相应的文件夹直接点进去就能找到电影了。老王说干就干,没多久就把全部的文件夹整理好了,而后把全部文件夹放到同一个页面上,到时候他想点哪一个就点哪一个,So easy!(那些网站可能就是这样来的)。学习
这回出来一个新人物,就叫小王吧(不是小王八),老王就是住在小王隔壁,有一天小王看到老王电脑上有那么多电影,就跟老王商量,能不能在他电脑上也弄个跟老王同样的,让他也看看。老王也不是个小气的人,好东西就是要分享的嘛,想都没想就答应了,给小王说在你电脑上插根线接到我电脑上,而后下载我这个软件,直接访问个人电脑就好了。小王很高兴,他立刻回家按老王说的作,没多久他的电脑上也能看老王电脑上的东西了。有了小王,就还会有小张,小李,互相插根网线,他们都能互相共享电影了。这样,局域网也就产生了,就好比在一个公司或者一个学校用的网络,都称为局域网。那学校有不少呀,不一样的学校用的局域网是不一样的,不一样的城市也有不一样的局域网,以局域网为单位,散布在一个区或一个城市的各个局域网加一块儿叫城域 网,而后全世界全部城市的城域网加一块儿就叫广域网。 网站
过了一段时间,老王去小王家,看到小王电脑里的电影比本身的还多,并且还好看,而后老王跟小王说,把你的这些电影给我一份吧,我也想看看。不用想,小王确定立马答应了,说你本身弄吧,想看哪一个随便看。姜仍是老的辣,老王想到一个好办法,他跟小王说,我再找一台电脑,把我俩电脑上的资源所有放到那台电脑里,我俩只要在那个电脑上插根线连到本身电脑上,就都能访问那台电脑上的东西了,这样岂不是很方便。小王一拍脑门,呀!我咋就没想到,那还不赶忙的。老王另外找了一台电脑,而后他俩把本身的电脑和那台电脑用线连起来,再把本身电脑里的全部资源全传进那台电脑中,最后他俩就能共享资源了。(那台电脑就是服务器)spa
总结一下就是:计算机网络
我在上面说了 Internet 协议,互联网协议按照功能的不一样,分为 osi 七层, tcp / ip 五层, tcp / ip 四层协议。以下图:
osi 的七层协议体系结构的概念清楚,理论也比较完善,但它既复杂又不实用, ISO 制定的 osi 协议参考模型的过于庞大、复杂招致了许多批评。于此对照,由技术人员本身开发的 TCP / IP 协议得到了更为普遍的应用。所以,咱们只须要弄明白 TCP / IP 五层协议 就能了解和明白计算机最底层的通讯是怎么回事。
如图,从最下方的物理层到最上方的应用层,对于咱们用户而言,最直接的是应用层。从上到下每一层都依赖于下一层,因此我从最下一层开始给你们讲解:
注意:每一层都运行着一个特定的协议,共同组合成互联网协议
物理层主要是由双绞线、光缆、电缆、无线电波组成,其做用很简单,就是链接不一样的计算机,并传递底层电信号,高电压: 1 ,低电压: 0 。
咱们从物理层上接收或者发送单纯的 0 、 1 是没有意义的,为何呢?想一想哈,我想给女友发送一句话:“你好漂亮”,那咱们要把“你好漂亮”转换成 01 以后,交给网卡,网卡就懵逼了,发给谁 ??? 不知道。那怎么办?必需要肯定数据发给谁。就像咱们的快递同样,是否是在外层包装上有商家地址和我的地址,这样咱们无论是发仍是收,都能准肯定位了。网络传送数据也同样,咱们就在数据前面加上目标地址,为了能接收到回信,也要把本身的地址也加上。可是,若是数据和地址放在一块儿,又乱了,好比,我给你一堆 01 ,1010101000101010101 ,你也分不清哪里是数据,哪里是地址。这时咱们就要对要发送的 01 进行分组,规定前面 xxx 位是地址,后面 xxx 位是数据,而且,你们想互相都能通讯,就必须都遵照这样的规则(协议),这个协议叫以太网协议。在以太网协议出现以前,各个公司都有本身的分组规则,后来都统一使用以太网协议了。
以太网协议规定:一组电信号构成一个数据包,叫帧,每一帧分为报头( head )和数据( data ) 两部分。
以太网协议中的地址叫 MAC 地址, MAC 地址是每台计算机惟一的物理地址,是被写在网卡上的。以太网协议规定,每一台接收和发送数据的设备必需要装有网卡,负责发送和接收数据的设备,发送端和接收端的地址,指的就是网卡的地址,即 MAC 地址。
MAC 地址是每一个网卡在出厂的时候,由各个厂商直接烧录在网卡上的,并且,这个地址必须是全世界惟一的。 MAC 地址是由 12 位 16 进制的数字表示(前六位是厂商编号,后六位是流水线号),这样不一样的厂商之间就不会产生冲突了,本身生产本身的就行了。
在这给你们介绍一个东西,咱们说两个电脑要通讯要先连根线,可是若是电脑多了以后,电脑间通讯连的线也就多了,这样太乱了,我介绍的这个东西就是交换机,它是负责组件局域网,研究的是 MAC 地址,它有什么用你看下面图片中的接口就知道了
有了 MAC 地址,以太网就能够进行工做了.理论上讲,咱们能够和世界上的每一台链接了互联网的计算机进行通讯了,此时通讯的方案是:广播
广播又是怎么一回事?其实广播的方式很原始,基本通讯就是靠吼。就像你想跟女友求婚同样,你会大喊:“ xxx ,嫁给我吧”,旁边能听到这句话的人有不少,可是只有你女友会回复你。其余人会把你当傻逼同样看待。没错,广播就是这样进行通讯的。首先组织好了一个数据包以后,把这个数据包经过电信号发出去,这时整个网络上全部的人都会收到你发的这条数据,而后看看这个数据是否是本身的。若是不是就当他不存在,若是是,就接收。虽然效率低点,但毕竟能通讯了。
广播带来什么问题呢?若是是在一个小的网络环境里。比方说,大家宿舍几我的,一块儿玩 CS ,没问题,你喊一嗓子,你室友也能回应你,也就效率低点。可是若是你链接到全世界的互联网上,还使用广播的方式来通讯,就不是效率问题了,而是一个巨大的通讯灾难。全世界 60 多亿人,每一个人吼一嗓子,每一个人发送一条信息,那每一个人都会收到 60 多亿条信息,网络瞬间瘫痪,这种问题被称为广播风暴,那如何解决呢?
首先,咱们要了解一个事情,世界大网络(广域网)是由一个一个的互相隔离的小型局域网(子网)组成的,不一样的局域网之间使用路由来链接。
上面说的交换机是负责组建局域网,研究的是 MAC 地址,而路由器是负责组件广域网,研究的是 IP 地址,这个 IP 地址下面我再解释。
刚才说的广播,只能在一个局域网内进行通讯,不能够在大网络上进行广播,有了路由器,就避免了广播风暴的问题。每一个局域网被称为一个广播域,局域网和局域网之间使用路由的方式进行通讯(向不一样的广播域/子网发送数据包),用路由器把一个局域 网里的全部计算机划分红一个个子网。
如今你们先想想生活中,若是是以前说的广播,就至关于在一间教室里你正在上课,你要给某个女孩传纸条,那你要在纸条外面写上你和你要传的女孩的名字,再在里面写上你要写的话,写好后折起来,你和女孩的名字在外,内容在内,而后让同窗一个一个帮你传,每一个同窗在传的时候都会看外面写的名字,若是不是他,就继续传,直到传到的人是你写的那个女孩为止。那这间教室就至关于一个局域网。好,如今咱们要实现局域网和局域网之间的通讯,好比此时位于青海的你要给河南的朋友送东西,你不可能用广播的方式了,你只能快递,这个青海和河南以及还有不少不一样的省份是我国的土地划分中的一部分,每个省也能够看做是一个个局域网,那在网络中,我国就至关于广域网,那不一样的局域网是如何划分的呢? MAC 地址是没办法区分的,由于 MAC 地址上只有厂商的流水号,这就引出我要说的网络层,网络层引出了一套新的地址来区分不一样的局域网/子网,这一套地址就是网络地址。
规定网络地址的协议叫 IP 协议,它定义的地址叫 IP 地址。其实跟我国的省份名差很少,继续说送快递,你要把送的东西包装好,在外面写上你本身的地址和省份地址,还有朋友的地址和省份地址,交给青海的快递公司,而后青海的快递公司转交给河南的快递公司,最后由河南的快递公司分配给你朋友,你朋友就收到快递了。在这有两点须要注意:
在这给你们普及一会儿网掩码,咱们上面说有了 IP 地址和 MAC 地址,咱们就能让任何计算机之间进行通讯了,那如今再想一想,若是我要用个人计算机给另一台计算机实现通讯,我是否是要判断要通讯的计算机是否和个人计算机在同一个 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 地址了。
到目前为止,前三层内容已经能够进行数据传输了。可是,咱们的一台计算机上能够 一次性运行多个网络应用程序,好比, QQ 、微信 、 LOL 三个软件一块儿运行,都要进行网络传输,可是就前面学习的这三层内容,是没办法区分开数据是要发送给哪个 软件的。那怎么办?引入第四层,传输层,传输层定义了端口的概念,每个网络应 用程序占用一个网络端口,不一样的程序就用端口把数据隔离,两两互相不影响。
TCP 协议:可靠传输, TCP 数据包没有长度限制,理论上能够无限长,可是为了保证网络的 效率,一般 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包没必要再分割。
TCP 头放的主要是源端口和目标端口
UDP 协议:不可靠传输,“报头”部分一共只有 8 个字节,总长度不超过 65535 字节,正好放 进一个 IP 数据包。
其实和邮信是同样的,写好地址,写好接收人,直接装进信封里,丢进邮箱里就不用你管了,对方何时收,收没收到,你不知道。
用户使用的都是应用程序,均工做于应用层,你们均可以开发本身的应用程序,数据多种多样,必须规定好数据的组织形式。对于用于而言最直观的就是应用层。
应用层:规定应用程序的数据格式
例: TCP 协议能够为各类各样的程序传递数据,好比 Email 、 WWW 、 FTP 等,那么, 必须有不一样协议规定电子邮件、网页、 FTP 数据的格式,这些应用程序协议就构成了“应用层”。
以上是对TCP/IP5层协议的解读,总结一下:
发送数据其实就是一个封装数据的过程
最后从物理层发出,对方接收到了以后再自下而上一层一层打开拿到数据,以上内容就是一个网络传输的大体过程,其中还有好多细节没有阐述,但你们知道和了解以上内容,对开发而言足够了。
呼~~~好累呀!终于写完了。
看懂的朋友点个 再看 点个 赞 呗,并在留言区留下你的脚印!