多台计算机已经用网线连接起来了,那怎么通信呢?
直接通过这条网线传递数据就行,只不过现在是一个发其余的都能接收到,要让目标计算机能接收,那就得标识下目的地址是啥,所以以太网的数据帧格式是这样的:
除了数据外,额外加上了目的地址、原地址等信息。
这样每台计算机接收到网络传过来的数据之后,判断下是否目的地址是自己,是就接收,否则丢弃。这样就实现了网络通信。
这就是一个网络了?就这么简单?
这确实是一个小型网络,但还不完善。如果多台计算机同时发消息怎么办,数据不就混在一块了?
所以要做是否冲突的检测,现在以太网用的方式是这样:想要通过网络发消息时,先检测下网络中有没有电信号,没有的话就发,有的话就等待 1.x 秒,x 是随机的,如果到了时间还有冲突,那就等待 2.x 秒、4.x 秒、8.x 秒,通过这样的方式来避免冲突,实现准确的通信,这叫做“指数退避”。
这样确实不会冲突了,但是还有问题,如果计算机连了很多,虽然能准确的通信,但时不时就冲突的话效率也太低了。
能不能减少冲突呢?
连在一起的以太网的计算机因为是广播通信的,所以可能可能冲突,这叫做一个“冲突域”。如果能把大的冲突域给拆小,那不就能减少冲突的概率了?
这就是交换机做的事情了:
几台电脑之间加一个交换机来隔开,这样传输消息的时候,如果是同一个小网段内的通信,会直接传给目标计算机,不会传到其他网段里去,本网段没有该 mac 地址的时候才传到其他网段,这样就把大的网络分成了一个个小的网段,减少了冲突的概率,提高了网络传输效率,这就是交换机的意义。
这样,我们就组建了一个以太网。
互联网
现在一个个的网络都是分散的,不管是以太网,还是用电信网络连接的网络,或者是卫星连接的网络电脑ip切换,那自然有需求把这些分散的网络给连接起来,这就是互联网,也就是把网络连接起来的网络。
互联网也有很多,比如军队的各种网络会建立一个互联网,教育的各种网络会建立互联网,互联网和互联网之间还可以连接,最大的互联网就是因特网 internet,大到全世界的很多网络都会连入的那种。但也有的互联网是不接入 internet 的,比如军用的互联网。
那这些网络之间是怎么标识和连接的呢?
标识网络自然就需要编号,并且网络内的主机也需要编号,也就是需要指定网络号 + 主机号,这就是 IP 地址。
IP 地址最开始是 32 位的,叫做 IPv4(后来扩充成了 128 位的,叫做 IPv6)。
比如这样就是一个 IPv4 的地址:
11010010010010011000110000000100
为了好记电脑ip切换,我们把它分为了四段,每段 8 位,就成了这样:
210.73.140.2
这分为 4 段的 32 位地址里有网络号也有主机号。如果把第一段当作网络号,那剩下的三段就是主机号,可以标识 1600 多万台计算机,如果把前两段当作网络号,那可以标识 6 万多台计算机,如果把前三段当作网络号,那只有最后一段用于标识主机,可以标识 254 台计算机。这样就分为了 ABC 三类网络。
讲完了 IP 地址,再回来讲最大的互联网 internet。
internet 是连接全球很多网络的互联网,那自然有个主干网,然后下面接入各个国家的网络。每个国家都有专门的接入 internet 的网络提供商(ISP internet service provider),比如中国有联通、移动、铁通等 ISP,由他们接入 internet,我们再接入他们的网络。
那网络之间是怎么连接的呢?
就是通过路由器,路由器连接多个网络,负责根据 IP 地址选择把数据传到某个网络。
很多同学分不清路由器和交换机的区别,其实很好区分:交换机是网络内部隔离冲突域、提高网络效率用的,根据 mac 地址转发消息。路由器是负责在不同的网络之间转发数据,根据 IP 地址确定网络和主机然后转发。
IP 地址里记录了网络号和主机号,所以根据网络号就能确定是哪个网络,那怎么根据主机号确定哪台主机呢?
在这个网络里广播一次不就行了?把 IP 地址传递给网络的每一台主机,如果是自己的,那就返回自己的 mac 地址,这样路由器就知道该把消息传给谁了。这种从 IP 到 mac 地址的查询过程叫做 ARP(Address Resolution Protocol 地址解析)协议。
至此,我们就完成了从 IP 到 IP 的通信,再上面的协议我们就比较熟了,也就是 TCP、HTTP 这些,这些是我们软件开发整天用的协议。
总结
计算机网络是分层的,OSI 体系结构分了 7 层,实际用的 TCP/IP 体系结构分了 4 层,为了学习方便我们还是作为 5 层来看。
分层的好处就是每一层都可以灵活的替换实现方案,比如只要你实现了 IP 到 IP 的通信,不管你是卫星连接的网络、电信连接的网络还是以太网,都可以,对上层的各种协议没影响。
卫星、电话网络等都是已有的网络,我们自己组建的网络一般都是按照以太网的方式,也就是一根网线连接所有计算机的方式,叫做总线式。
以太网内是广播通信的,为了避免冲突,会通过指数退避的方式来发消息,但这会降低传输效率,所以引入了交换机来隔离冲突域,也就把网络分成了不同的网段,交换机遇到同一网段的通信是不会传递到其他网段的,这样就减少了冲突的概率。
网络和网络之间连接起来就叫做互联网,互联网有很多种,全球最大的互联网是 internet,但也不是所有的互联网都在 internet 里,比如军用互联网就不会连入 internet。
internet 有主干网来连接各个国家和地区的网络,每个国家都有负责接入 internet 的互联网服务提供商 ISP,比如中国的联通、移动、铁通等运营商。
网络的标识是通过 IP,也就是网络号 + 主机号构成,然后由路由器负责通过 IP 来做网络之间的数据转发。
路由器实现转发要先根据 IP 种的主机号来查出 mac 地址,对应的查询协议叫做 ARP 协议,也是通过广播的方式实现的。
这样就实现了 internet 上任意两台主机的 IP 到 IP 的通信。
我们平时软件开发时用的 IP、TCP、HTTP、DNS 等协议,都是在这些基础之上实现的。网络层之下的知识,确实对我们开发没啥帮助,但了解下还是挺有意思的。
1、
2、
3、
4、
5、
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99