网络初始+网络通信的基础知识

一)网络的发展历史:

独立模式/单机模式:最初的计算机是在单机模式下使用的,此时的计算机也是没有办法连接网络的,也就是说我们的计算机之间是相互独立,没有办法进行设备之间的通信的

网络互连:随着网络的发展,需要越来越多的计算机之间进行相互通信,共享软件和数据,就是通过多个计算机来完成传输数据,协同工作来完成业务,于是就出现了网络互连,网络互连本质上是网络数据传输,及计算机之间通过网络来进行通信传输数据,也被称之为是网络通信;

根据网络互连的规模的不同,又分为局域网和广域网

局域网和广域网区分的主要网络的覆盖面,广域网比局域网的网络覆盖面更加的广泛,比如全世界最大的广域网就是因特网,再来缩小范围,只有一个城市组成的网络,就是一个局域网,网络的覆盖面是相对的,两者并没有一个明确的界限;

一)局域网:

局域网也被称之为是Loacl Area NetWork,简称为是LAN,局域网是本地,局部组建的一种私有网络,局域网把一些设备通过路由器交换机来连接到一起,注意这个相邻设备不能连接的太远,使得局域网内部的主机能够更方便的进行网络通信,局域网又被称之为是内网,局域网和局域网之间在没有进行连接的情况下,是不可以进行网络通信的;

局域网:把两台主机或者多台主机给连到一起,是Local Area Network,简称LAN,就是在一个具体的区域构建出来的网络;

局域网里面的主机是可以进行比较方便的进行网络通信,又被称之为内网,局域网和局域网之间在没有进行连接的情况下,是无法进行通信的;

1)在上面我们使用两根线把三个主机给进行连接了起来,这三个主机就构成了一个局域网,其实就是说拿一根网线,把两个网口咔咔一直连,这两台主机就可以进行相互通信

2)咱们日常使用的电脑正常情况下都是一个网口,但是也是有的主机是带有多个网口的

3)上面的这种组网方式是非常费网线,也是非常费网口的,比如说要把这些主机连在一起,就需要有多根网线,也是需要有多个网口,三个主机,就用三根网线,那如果要是78十台主机,那么就需要用多少网线呀?况且上面的主机1和主机3也是需要通过网线来进行连接的,虽然上面只通过网线直连的方式能够使局域网之间进行网络通信,但是不会是用这种方式组建局域网

1)当我们进行一半组建局域网的时候,都会使用一些转发设备,比如说交换机和路由器

我们的一个交换机上面是带有有很多的网口, 把这几台电脑向网口上面进行插入,我们借助这个交换机,就组成了一个局域网

2)使用路由器组建一个局域网:下面的这些主机都是通过一个个的网线与我们的路由器进行相连,组成了一个局域网,这是我们日常中最常见的情况;

 

 这种也是可以的

3)实际情况下,我们是没有人想通过集线器来进行组网的,因为我们的集线器相当于是把一根网线给分叉了

在我们这里面分出来的两个叉,两个叉是不可以一起用的,因为当我们是用一个的时候,另一个就不好使了,所以说相互之间就会很干扰;

交换机和路由器的路由器的区别:

1)咱们的交换机上面的网口都是对等的,都是一样的口,效果就是说把插在交换机上面的设备组成一个局域网,这一个局域网里面内部的主机就可以进行相互访问了

2)路由器这里面其实有两类端口,一部分是LAN口,一个是WAN口,其中我们插在LAN口上面的设备,在一个局域网里面,然后我们通过WAN口连接到另外一个局域网里面

3)咱们的交换机是把若干个设备组建到一个局域网里面,路由器则是连接了两个局域网,连接到LAN口的设备是一个局域网,连接到WAN口的又是一个局域网;

1)就可以视为下面的路由器是上面的一个路由器的局域网里面的一个设备,咱们的路由器一般会有一个WAN口,一般会有一个,四个或者8个WAN口,用于连接计算机或者下一级的路由器或者交换机来进行连接组成局域网的;

2)咱们上面所讨论的区别,仅仅限于传统的交换机和路由器,但是实际上,真实的交换机和路由器之间的界限已经越来越模糊了,咱们路由器的很多功能,交换机也有而我们交换机的某一些功能,路由器也有,他们的功能也变得越来越强大了,就不仅限于传统的数据转发这里面了;

3)咱们的交换机是连接同一个局域网,而我们的路由器是横跨两个不同的局域网

1)比如说咱们的路由器支持三层转发,咱们的交换机也是可以支持三层转发,咱们的交换机是用来组建一个单独的局域网,但是咱们的路由器也是由一种模式,让咱们的LAN口和WAN口都是统一的,也可以组建成一个局域网,相互之间进行一些代替;

2)我们通过路由器交换机组建起来的都是一个局域网,两台设备插在一起是一个局域网,你N台设备插在一起又是一个局域网,甚至你通过路由器,把一些局域网连接起来还是一个局域网,哪怕你把一个城市的网络都连接起来,还是一个局域网;

3)我局域网和广域网之间是没有明显的界限的,我们认为比较大的局域网,就可以称之为广域网,一个国家的网络,就可以认为是广域网,全世界最大的广域网,就叫做因特网;

二)广域网:

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

三)组件网络的设备:

最初局域网之间的设备只是简单的使用网线, 集线器和网口来进行简单的连接, 这种方式也比较古老了, 可以想象如果大范围的使用这种方式来进行网络连接明显是不可取的; 所以随之又有了交换机, 将一些电脑都连接到这一台交换机上就能实现这些计算机之间的通信, 这就算是组成了一个简单的局域网, 但此时还不能进行跨局域网通信, 所以又有了路由器, 路由器可以把两个局域网给连起来, 生活中更常见也是通过路由器进行组网, 路由器上有LAN口与WAN口, 设备插在LAN口的设备组成了一个局域网, 路由器再通过WAN口连接广域网, 实现网络通信, 现在的wifi本质上就是一个无线路由器

主机,路由器,交换机,集成器都是实现TCP/IP协议的哪几层

对于一台主机,他的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器,它实现了从网络层到物理层,也就是TCP/IP协议的下三层;

对于一台交换机,它实现了从数据链路层到物理层;

对于集成器,只实现了物理层;

事实上,并不是这样,因为在今天,交换机和路由器的概念已经很模糊了,像一些好的交换机和路由器,往往也会实现一些传输层和以应用层的内容;

举个例子:QQ会传输很多的信息,这些消息就是通过路由器和交换机来转发的;路由器和交换机可能会解析这个数据包,提取出用户发送的信息是什么

 

网线
电脑1——————电脑2,此时这样的两台电脑,就处于局域网中了,由此可知局域网中可以是两台电脑相连                                                                                                                                 

1)但是此时有多台电脑相连,连的机器多了就会变得非常复杂,两台机器进行相连会消耗更多的网线和网口, 因此我们引入了交换机,可以将所有的机器,都连到交换机中相连;

                

3)当然,如果交换机中的可以连接的机器已经满了,此时就需要更多的交换机来和其他机器相连,而交换机之间就会用到路由器

但是在今天,现代的交换机和路由器已经没有明显的区别了                                                    广域网:如果把一个城市或者一个国家甚至全世界的网络连接起来,就构成了一个广域网,本质上来说,广域网其实就是一个很大的局域网;                                                                      

二)网络通信基础: 

IP地址和和端口号在网络通信中用于标识不同的主机和同一主机下不同的进程.

一:IP地址:

1)IP地址主要是表示主机在网络上面的位置,其他网络设备的,例如路由器的网络地址,简单来说,IP地址用于定位网络主机的网络地址,就像我们送快递一样,需要知道对方的收货地址才可以把包裹送到目的地,描述了网络上一台主机的位置;

2)MYSQL是由一个服务器和客户端组成的程序,客户端和服务端是通过网络来运输的,客户端找到服务器就是以IP地址为根据的,我们在计算机中,常常使用一个32位的整数来表示这个IP地址,但是实际上这个32位的整数往往比较大,肉眼看起来比较不方便,为了可以更好的表示需要进行标记,因此引入了一个更好的表达方式:点分十进制,使用三个.把这个32位的整数分成四个部分,每个部分都是一个字节一个字节的整数,每个部分的范围就是0-255;

3)一般都希望网络上的每个主机的IP地址都不一样,但是实际上并不是这样的,IP地址都不够用,还是会有多个主机来共用一个IP地址的,因此会根据实际情况来进行地址的复用;

4)IP本质上就是一个32位的二进制整数, 通常被分割为4个 “8位二进制数” (也就是4个字节), 如: 01100100.00000100.00000101.00000110; 进二而把这4部份在转化为10进制来表示(即 “点分十进制”), 得到100.4.5.6这一串数字

 二:端口号:咱们的端口号本质上来说就是使用2个字节的无符号整数0-65535

1)在网络通信中,IP地址有利于表示网络主机地址,端口号用于标识主机中发送数据,接收收数据的进程,简单来说:端口号用于定位主机中的进程,它是用来表示一个主机上面的一个具体的应用程序,因为我们的一台主机上面是有着很多的应用程序的

2)这就类似于发快递时,不光需要确定收货地址(IP地址),还需要指定收货人(端口号),当一个主机收到一个具体的数据的时候,要把这个数据交给那个程序来处理,这是就是来通过端口号来区分的;

3)当一台主机收到具体的请求数据的时候,要把这个数据交给哪个应用程序来进行处理呢?就通过端口号来进行访问,就是说,每一个访问网络的应用程序都要有一个自己的端口号;

4)每一个访问网络的程序,都需要有不同的端口号,端口号是一个范围是0-65535的数字,进程可以通过来绑定一个端口号,来发送和接受网络数据;

5)两个不同的进程,不可以绑定同一个端口号;但是一个进程可以绑定多个端口号;如果第一个进程绑定了一个端口号,第二个人进程也尝试绑定这个端口号的时候,就会绑定失败

MYSQL的默认端口号就是3306;但是我们的计算机内部来进行存储一个IP地址,本质上还是使用32位的整数来进行存储的     

三)客户端VS服务器

客户端:主动发起请求的一方

服务器:接收请求的一方         

客户端给服务器发送的数据叫做请求,服务器给客户端返回的数据叫作响应    

客户端和服务器的交互方式:

1一问一答。客户端发送一个请求,服务器返回一个响应;

2一问多答。客户端发送一个请求,服务器返回多个响应;

3多问一答。客户端发送多个请求,服务器返回一个响应;

4多问多答。客户端发多个请求,服务器返回多个响应;

注意:咱服务器程序在进行启动的时候,就需要进行绑定一个端口号,客户端来进行访问                                                                             

四)计算机网络分层:

4.1)什么是协议:

协议:本质上来说就是约定,发送方发送出来的数据是什么样子的格式,咱们接收方收到的数据要按照对应的格式来进行解析,协议是网络通信中最为核心的概念, 想要进行有效的通信, 需要明确通信双方间的协议, 这里的协议可以理解为约定, 本质上就是对数据发送的格式做出约定, 通信双方分别按照这个约定去构造数据和解析数据.

1)协议,是网络约定的总称,网络协议是网络通信及网络通信运输,经过的所有网络设备都必须遵从的一种约定,发送方发的数据,接收方可以正常地进行理解,规则,例如如何建立连接,如何互相共识等;

2)要描述一次通信,往往包括:是通过一个五元组来描述的,五元组源IP,源端口,目的IP,目的端口,协议类型;

3)类似于写Java代码,如果光通过一个类来描述所有功能,这就会比较困难,为了更好地解决这个问题,又要把问题拆分,分成多个类,如果还是更复杂,就在创建一些包,把一些功能类似的类放到包里面;

网络通信是一个比较复杂的过程, 需求场景复杂了, 我们所需要实现功能也就复杂了, 而如果这里的协议太复杂了, 那么我们的学习, 使用, 理解的成本和维护成本都会非常高, 所以使用协议更好的办法就是把一个复杂的大协议给拆分成若干个相对简单的小的协议, 每个协议负责一小部分的工作,在这些小的协议中, 某些协议之间起到的功能和作用是相似的类似的, 于是我们就将这些小协议分层(分类)

咱们的网络通信,本质上就是说传递的是光信号和电信号,通过光信号的频率,就是高频率还是低频率,以及电信号的电平,高电平和低电平来表示0和1,通过高低电平就可以把一串0和1都给他发送过去

1)这一串0和1到底是什么意思,就是及发送方式按照什么格式发送的,接收方才可以按照这个规则来进行解析,协议就是一种约定,只要我们进行了有效的约定,才可以进行通信;

2)我们在课堂上是通过英语还是通过汉语就是在使用不同的协议来进行通信,我们可以进行有效通信的前提是我进行发送的协议和你进行接收的协议都是一样的,双方都可以对上号,类似于电报的密码本一样;

4.2)协议分层: 

1)当前网络中涉及到的协议都是很复杂的,也很多;主要是因为网络太复杂,无法通过一个协议把所有的功能都包含进去,因此需要拆分出多个协议,再按照这些协议的定位在进行分类,于是就有了协议分层;

2)因为的网络通信这个过程,其实本质上来说就是很复杂,里面也包含了很多很多的细节,我们如果说只通过一个协议,来进行约定所有的细节,这个协议就会变得非常的庞大和复杂,更好地办法就是说把一个大的协议,拆分成多个小的协议,更简单的协议,咱们的每一个协议来进行负责一部分工作;

3)就和写代码一样,当我们写一个复杂的程序,不能指望说,一个文件把所有的代码都装进去,我们可以把这个代码拆分成多个更小的,更简单的文件,每一个文件负责一部分工作;

4)我们把一个代码拆分成多个模块,多个类,多个方法,我们就可以更好地进行维护,更好地进行理解,还可以进行灵活的替换里面的某一些部分,协议分层之后,我们就可以灵活地进行替换里面的每一层了;

在我们打电话的过程中,主要分成了两层协议:

1)语言层:打电话的两个人之间说了一些什么话

2)通信层:电话之间有线还是无线

4.3)TCP/IP五层模型:

1)OSI七层网络模型,此模型只在教科书中存在(在真实世界中不存在),实际情况下是下面的TCP/IP五层网络模型;

2)应用层,表示层,会话层是在应用程序里面的,统称为应用层,传输层和网络层是在操作系统内核里面进行的,数据链路层和物理层是在设备驱动程序和网络接口中;

3)也就是说,咱们的下面四层的代码逻辑都是由操作系统内核和驱动以及硬件都已经实现好了的,咱们程序员打交道最多的,还是应用层的协议;

其中物理层和数据链路层是通过硬件和驱动程序来实现的, 网络层和传输层是由操作系统内核实现的, 这四层都是现成的, 不需要我们去实现, 而我们也没办法去修改; 应用层是在应用程序中实现的, 也就是说, 一般和程序员打交道的是应用层, 这里的实现和我们自己写的代码息息相关, 再次要的就是需要关注一下传输层, 毕竟在应用层需要去调用传输层的API.

一)应用层:

1)应用层,针对特定应用的协议,表示层,固有数据格式和网络标准数据格式的转换,会话层,通信管理负责建立和断开通信连接

1.1)比如说我们的应用层,是针对特定应用的协议,比如说电子邮件使用电子邮件协议,远程登录使用它远程登录协议,文件传输使用文件传输协议

1.2)比如说我们的表示层,是故有的数据格式到网络标准的数据格式的转换,比如说接受不同形势的信息,比如说文字,图像,声音等等

1.3)比如说我们的会话层,会进行负责通讯管理,负责建立和断开通信连接

这里各层的协议越靠近物理层越接近硬件设备, 越靠近应用层就越接近用户; 各层的协议之间是不能跨层交互的, 上层协议会调用下层协议, 而下层协议在为上层协议提供服务

二:物理层:是指网络通信中的硬件设备

1)网线,网卡,比如说网线上面有水晶头,水晶头是一个小小的长方形,长是多少,宽是多少,厚度是多少,里面有几根线,每一根线是如何进行排列的?线里面是什么材质?这些事情我们都需要明文约定好

2)针对硬件设备的约定,其实本质上来说就是物理层所进行约定的范畴,需要保证所有的主机和网络设备之间都是相互进行匹配的,就是你这根网线,可以插到我的电脑上面,也是可以叉到别人的电脑上面,咱们的这个网口和水晶头之间,都是匹配的,这里面我们随便买一个路由器,随便买一个交换机,我们都是可以直接把网线插上的,不用担心网线和路由器插不上,因为这已经是物理层已经约定好了的,网孔尺寸,网线匹配

三:数据链路层:是完成两个相邻设备之间的通信的

相邻设备就是说用一根网线直接进行相连的两个设备

咱们的路由器和主机1是相邻的设备

咱们的路由器和主机2是相邻的设备

但是咱们的主机1和主机2不是相邻的设备,他们俩之间要经过路由器的转发

三)网络层:是来进行负责点到点之间的通信,点到点就是说网络中的任意节点到任意节点之间的通信,不一定是相邻了,更多是指不相邻的设备

我网络层就需要在这两个点之间规划处一条合适的路径,但是实际上我们的网络环境是非常复杂的,两个点之间的路线不止一条,我们的网络层就需要在两个点之间就需要进行规划出最合适的一条路线,就类似于高德地图为你导航

1)咱们的数据链路层是局部的,而我们的网络层是全局的路线,咱们首先要通过网络层规划出一条合适的路线,再通过数据链路层来进行负责两台相邻主机之间的通信,站在的角度是不一样的;

2)先进行考虑好全局的路线,再来规划好剩下的路线要如何慢慢的到达;

出发地:西安   目的地:内蒙古

1)网络层首先规划路线我们就需要进行规划,那一条路线是最优的,最优可能是指时间最短,成本最低,少换乘

西安--->北京----->上海------>内蒙古

西安--->江苏----->深圳------>内蒙古

西安--->通州----->镇江----->内蒙古

2)我们的网络层来负责这一件事情,网络层是可以根据用户的情况来进行选择哪一种情况是最优的

3)假设我路线规划好了,就选择第一种方案:

先考虑西安到北京怎么走,可以选择坐飞机,火车,到了北京之后,在考虑如何到白城,可以做汽轮,到了上海,还可以做毛驴车回家,这个过程是数据链路层做的工作;

四)传输层:是进行负责端到端之间的通信他是只进行关注起点和终点只是关注结果

只是来进行关注结果,不管数据到还是没到,不会关注过程,不会关注数据是走哪一条路进行转发的

1)比如说当我再进行传输快递的时候,我们就需要填写收件人地址和收件人姓名,商家就需要根据这个地址把快递发送给我,我和商家都是只进行关注结果,不会关注过程

2)快递公司要关注中间过程

1)我想在淘宝上买一件衣服,我就需要填写我的收件人的地址和电话,买家就发货,我和卖家只关心发货起点和终点,这就相当于传输层;
2)卖家把货交给快递公司,快递公司就会规划出一个具体的路线了,是经过上海走,还是经过北京走,这就相当于是网络层;
3)每一个地方专门有快递小哥来送货,经过一个又一个站点,这就相当于是数据链路层;什么铁道,公路,就是物理层;

咱们的数据链路层,网络层,传输层从下到上,逐渐向上封装程度越高,逐渐往上封装细节在隐藏,考虑的东西越来越宏观

下层协议给上层协议提供了一些功能支撑,而上层协议是依赖于下层协议的

比如说有一天我在网络上买了一个床刷子

商家站在传输层的角度来说,是在考虑这个东西能否发送到我的手上

快递公司,站在网络层规划路线 

快递小哥,站在数据链路层进行相邻接点传输

电动机、卡车,公路站在物理层来进行提供传输的基础

也就是说传输层,网络层,数据链路层不会关心数据是什么?更是干什么用的?

但是应用层就抱着一定的用途和目的来进行网络传输的

应用层:主要是进行负责应用程序之间的沟通

传输层:负责两台主机之间的数据传输,比如说TCP协议,能够确保数据可靠地从源主机发送到目标主机

网络层:负责地址管理和路由选择,比如说在IP协议中,我们直接可以通过IP地址来进行表示一台主机,并通过路由表的方式来进行规划出两台主机之间的数据传输的线路,路由器工作在网络层

数据链路层 :负责设备之间的数据帧的传送和识别
物理层: 负责光 / 电信号的传递方式。比如现在以太网通用的网线 ( 双绞 线 ) 、早期以太网采用的的
同轴电缆 ( 现在主要用于有线电视 ) 、光纤,现在的 wifi 无线网使用电磁波等都属于物理层的概念。
物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器( Hub )工作在物理层


                                                  

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值