网络概述

如题所述

第1个回答  2022-06-11
什么是网络?

网络一般分为2种,局域网和广域网。

        局域网(local area network,LAN,私网,内网):局域网是结构复杂程度最低,目前应用最广泛的计算机网络,它仅仅是在同一地点上经网络连在一起的一组计算机。

        城域网(MAN)介于LAN和WAN之间。

        广域网(wide area network,WAN,公网,外网)它是影响广泛的复杂网络。WAN由两个以上LAN构成,这些LAN间的连接可以穿越30mile以上的距离。大型的WAN可以由各大洲的许多LAN和MAN组成。最广为人知WAN就是Internet,它由全球成千上万的LAN和WAN组成。

网络协议?

        协议就是规则,在计算机网络中我们不同系统不同设备的数据传输也需要有一套系统的规则来约定。计算机之间的通讯协议叫TCP/IP协议(族),族的意思是,这里面有许多的协议。

        在早期的计算机网络中,都是由各自的厂商自己规定一套协议,IBM,Apple和microsoft都有自己的网络协议互不兼容,为了把全世界所有的设备(计算机,手机,路由等等)都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。因为互联网协议中包含了非常多的协议标准,但是 最重要的就是2个协议一个是TCP一个是IP协议 ,所以大家把互联网的协议简称TCP/IP协议。

        TCP协议,根据功能不同分不同的层。理论上有7层,但我们实际应用时候一般按4层来开发。

全世界几十亿台电脑连接在一起进行通讯,上海某一块网卡发出的信号在洛杉矶另一块网卡居然能接收到信号,但两者实际上根本不知道对方的物理位置。这不是很神奇的事情吗?

互联网的核心是一系列协议,总称“互联网协议”。它们对电脑如何连接和组网,做出了详尽的规定。 理解了这些协议,就理解了互联网的原理 。

互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。 应用层——传输层——网络层——链接层——物理层

每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"(protocol)。互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"(Internet Protocol Suite)。 它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。

实体层:

电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。这就叫做"实体层",它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性, 作用是负责传送0和1的电信号。

链接层:

        单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?它在"实体层"的上方,确定了0和1的分组方式。

        以太网协议: 早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做 "以太网" (Ethernet)的协议,占据了主导地位。以太网规定, 一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data) 。"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。如果数据很长,就必须分割成多个帧进行发送。

        MAC地址: 上面提到,以太网数据包的"标头",包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。 网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址 。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

        广播: 首先一块网卡怎么会知道另一块网卡的MAC地址把数据包准确传送到接收方?它不是把数据包准确送到接收方,而是 向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方 。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"。

        链接层有了以 太网协议对数据包的定义 、 网卡的MAC地址 、 广播的发送方式 ,就可以在多台计算机之间传送数据了。

网络层:

        IP协议

        以太网协议依靠MAC地址和广播方式 若两台计算机在同一个子网内(合理,否则一台计算机发送数据,互联网上每一台计算机会收到一个包,但这样自网内计算机都会收到数据包,效率还是太低),发送数据。

        必须找到一种方法,能够区分MAC地址是否属于同一个子网。如果是同一个子网络,就采用 广播方式发送 ,否则就采用" 路由 " 方式发送 。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)遗憾的是, MAC地址本身无法做到这一点,它只与厂商有关,与所处网络无关。

        于是出现了网络层,他的作用是 引进一套新的地址,使得我们能够辨别计算机是否属于同一个子网络 ,这套地址就叫 网络地址 (简称网址)。   MAC地址是绑定在网卡上的,网络地址是管理员分配的,网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包传送到该子网络内的目标网卡,否则就用路由方式发送。

        IP协议,规定网络地址的协议就叫IP协议,它所定义的地址就叫IP地址。目前广泛应用的是IP协议第四版,简称IPv4,这个版本规定,网络地址由32个二进制位组成。互联网上的每台计算机会被分配一个IP地址, 通过IP和子网掩码可以计算出网络地址和主机号,若两个IP的网络地址相同,主机号不同则处于同一子网中。

        所以IP协议的作用主要是,1、 为每一台计算机分配一个IP地址 。2、 确定哪些地址在同一个网络 。        

        IP数据包

        根据IP协议发送的数据包,就叫IP数据包。IP数据包直接放进以太网数据包的"数据部分",因此完全不用修改以太网的规格。这就是互联网分层的好处,上层的变动不涉及下层的结构。

        ARP协议

        因为IP数据包是放在 以太网数据包 里发送的,所以我们必须知道 同时知道对方的 MAC地址 和 IP地址 。 通常情况我们是知道它的IP地址,但不知道MAC地址 。所以我们需要一种机制,能够从IP地址得到MAC地址。

        第一种情况, 两台主机不在同一个子网络 ,那么事实上得不到对方MAC地址,只能把数据包传送到两个子网连接处的“网关”, 让网关去处理 。

        第二种情况, 如果两台主机在同一个子网络 ,那么我们可以用ARP协议,得到对方MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询的IP地址,在对方MAC数据栏填入"FF:FF:FF",表示这是一个“广播地址”, 他所在子网络的每一台计算机会收到这个数据包,从中取出IP地址,与自身的IP地址比较。如果两者相同,就作出回复,向对方报告自己的MAC地址,否则就丢弃这个包 。

        ARP协议, 帮助我们得到同一个子网中的主机的MAC地址,可以把数据包发送到任意一台主机之上了。

传输层

        有了MAC地址和IP地址,我们已经可以让网络上任意两台主机建立通信。接下来的问题是,同一台主机上有许多程序都需要用到网络,比如一边浏览网络一边qq聊天,当一个数据包从互联网发来时候,我们 需要一个参数确定这个数据包到底供哪个程序(进程)使用 ,这个参数就叫 “端口”, 它其实是 每一个使用网卡的程序的编号, 每个数据包发送到主机特定的端口,所以不同的程序就能取到自己所需的数据。

        “端口”是0~65535之间的一个整数,正好16个二进制位。0~1023的端口被系统占用,用户只能选用大于1023的端口。不管聊天还是浏览网页,应用程序会随机选用一个端口,然后与服务器的响应端口联系。

         "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。 因此,Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

        UDP协议

        现在我们必须在数据包中加入端口信息,这就需要新的协议 。最简单的实现叫UDP协议,它的格式几乎就是在数据前面加上端口号,也是由"标头"和"数据"两部分组成。"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

        TCP协议

        UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

        为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为, 它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了 。

         因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

        TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

应用层

        应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

         "应用层"的作用,就是规定应用程序的数据格式。

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

        这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

        网络通讯就是交换数据包,发送数据包需要知道两个地址 1、对方MAC地址。2、对方IP地址。 但若两台电脑不在同一个子网中,就无法知道对方MAC地址(在同一个子网中,若接收方确定IP符合会向对方报告自己的MAC地址),必须把数据包通过网关A(需要知道网关A的MAC地址)转发。网关通过路由协议,发现目标IP位于子网络B中,又把数据包发给网关B,网关B再把数据包转发给相应主机。

        我们上网需要我们填写4个参数(太专业对用户不友好、如果IP不变其它电脑不能使用这个IP,不够灵活),本机IP地址、子网掩码、网关IP、DNS的IP。大多数用户使用“ 动态IP地址上网 ”,计算机开机后自动分配一个IP地址,它使用的协议是 DHCP协议。 它规定,每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。

        我们输入了www.google.com,首先通过DNS协议我们得到域名对应的IP地址,通过子网掩码(计算出该IP的网络地址)判断我们是否在同一子网,如果不在同一子网,我们通过我们子网的网关(得知道网关IP,然后由请求网关IP得到网关MAC,再通过网关转发)。浏览网页用的是HTTP协议。TCP数据包需要设置端口(根据TCP协议),然后TCP数据包嵌入IP数据包(根据IP协议),最后嵌入以太网数据包(根据以太网协议)。经过多个网关转发,谷歌服务器收到以太网数据包。

        
相似回答