网络通信的基本过程

介绍:

网络通信呢是一个非常复杂的过程。对于这种比较负责的问题,我们通常采用分层来解决,每一层负责自己的工作,以及定义后相互使用的接口。采用这种方式,将一个大的问题细分为小的、目标更加确定的小问题。这种思想,在其他一些地方,都是非常有用的。我举个例子吧,mvc框架,将一个笼统的大问题进行了细分,前端界面层、控制层、业务逻辑层、dao层、数据库层,这样进行分解,将问题细分,有利于开发大型软件,同时分工更加明确。有兴趣可以去深入研究。

下面我们一点一点来分析通信的过程,当然这也仅仅时大体的过程,想要有更深入的理解,需要每一部分都去深入思考。

大体过程:

1.信道部分

想要和其他计算机通信,最不能缺少的就是传输的通道了吧。这个肯定要有,全球互联网能够实现,是在通信信道领域发展到达了一定程度的结果。

信道划分一下:1.有线传输。2.无线传输。 相信这一点大家都是清楚的。 有一点,我们需要注意,网络通信中传输的都是电磁波。而电磁波的传播速度呢,都是接近或等于光速。可以说传播的速度非常的快。

现在有线传输光纤占了很大一部分。无线传输呢,我个人认为是以后的发展的趋势。

传输中还有一些像频分复用,时分复用,码分复用等。有兴趣的话,可以去自己了解。

2.信道传输接口,内容等的标准

有了能够通信的基础还是不够啊。这么多种传输的信道,传输的载体都不一定相同。因此,我们要制定标准来使这些不同的信道都能够进行通信。这其实也就是一种分层。通过指定统一的接口,像RJ-45水晶头。信道怎么发展,用什么传输都无所谓,只有遵循这个接口标准,就能通信。

3.局域网的建立

有了下层接口的通信,我们可以将目标放于如何构建计算机之间的连接了。

有线传输的话,如果每台计算机之间都有连一条网线,这工程量,怕是…,太大,而且也不实际。因此,提出了星型结构(还有许多其他的结构)。这里我们就要提出局域网的重要支撑部件----交换机。通过将所有计算机连接到局域网上。先不讨论是怎么实现的,单说这种接口相对于每台计算机之间都有连线节省了很多。

既然所有主机都连接在交换机上,那么我们主机要发送到数据首先会传到交换机,然后经交换机传给目标主机。问题就在于交换机怎么知道我们要发送给谁。为了能够区分不同的主机,硬件厂商们生产网卡的时候,会在网卡的bios芯片内写入全球唯一的一组数——MAC地址,用以区分不同的主机。这样的话,源主机发送数据的时候写上对方的MAC地址,交换机能够进行识别,并且能够发送给目的主机就可以了。

原理是这么个原理,但还是有许多问题要实现。比如,交换机识别出了MAC地址,但是目的主机在哪里呢,怎么发给他呢。所以,交换机不光要有能够识别MAC地址的能力,还要有学习的能力,知道相应的MAC地址,通过那个端口发送。这就是,交换机的自学习能力。

当我们发送给同一个局域网内另外一台主机发送信息的时候,我们假设交换机里面是空的。数据到达交换机,识别出MAC地址,就会记录下来,将MAC地址与交换机上的接接收数据的端口号建立关系,存储在转发表上。交换机上有很多端口,用来插水晶头的。以后发送时,识别出目的MAC地址是这个,就会从这个端口发送出去。接着上面说的,接受到了数据包,识别出了包中的MAC地址,但是转发表中没有对应关系啊,。这时,交换机就会以广播的方式,给局域网内所有的连接到交换机的主机发送信息(当然不包括发送过数据来的主机),进行询问,这个MAC地址是谁的,如果对应的主机在局域网内,就会回应,交换机接受后将信息存入转发表中。如果目的主机不在局域网内,我们后面再说。

通过上面的方法,我们这个小型网络上的主机就可以相互通信了。当然,如果自己喜欢尝试,也可以自己弄一个小网络。这样的小网络,不连入互联网中,相对来说更加安全。银行经常就采用这种方式。

现在社会呢,讲究万物互联,这些上面的这种小网络之间也是需要相互联系的啊。下面,我们介绍是如何联系的。

4.构建互联网的思考

这一部分算是最复杂的了。

有了上面局域网的通信方法。我们是不是也可以这样构建互联网呢,将一个上面的局域网算作一个主机,每个这种网络都有一个像MAC地址一样唯一标识的符号。然后通过像交换机这种转发的硬件工具进行识别转发呢。这样就能够发送到相应的局域网了。

到了局域网,再通过MAC地址就可以发送到目的主机了呢。

上面的这种方法,原理上讲的通哈。那么我们就按照这种方式来进行实现试试。

这里呢,我们给每个网络一个网络号,全球统一。转发的工具呢,在网络中叫做路由器Router,识别网络号,并进行转发。

这样好像可以哈。但是,要想这样通信的话,就要像上面局域网的连接方式一样,所有的局域网都连接到router上,全球那么多的这种网络,怎么可能全部连接到这一个路由器上呢。又有人说了,我们也可以按照这种方式,将所有连接到路由器上的这些局域网当作一个整体,给他分配一个统一的符号,然后再有个转发的工具不就可以了吗?嗯,理论上可以的。但是实际的互联网结构不是这样的,但大体也是差不多的,确实是按照这种思想来的。那么我们考虑一下,为什么这种方式没有实践成功呢?

1.第四部分构建互联网的开头,我们说通过网络号发送到局域网内,然后通过MAC地址,找到目的主机。但是呢,在构建局域网的部分,没有获得其他局域网内主机MAC地址的方法啊,所以行不通。

2,局域网内需要MAC地址区分主机,局域网通过网络号区分不同的局域网,继续分的话会有更多的标识。每次传输一个数据的时候包含这么多的信息。先不说怎么包含的,就这么多的信息要占数据包的多少空间,太过于复杂,不切实际。

因此呢,这种方法行不通过。

5.实际互联网的构建

刚才说的第一个问题:送到了相应局域网了,但是没有MAC地址,我们加上不就可以了吗?

第二个问题的解决方法呢:层数过多的话,每层都需要一个标识,解决办法是把这些标识整合在一起呗。

通过一串32位的标识,来表示不同的局域网,以及不同局域网构成的更大的网络的标识,都用此来标识。

这中32位的标识被称为IP地址。

举个例子:10.40.225.12 这个标识,32位表示 00001010 00101000 11100001 00001100,我们可以通过划分多少位来表示局域网。 划出后面2位 这样的话,这四个局域网的标识位 1。00001010 00101000 11100001 00001100 2。 00001010 00101000 11100001 00001101 3。 00001010 00101000 11100001 00001110 4。 00001010 00101000 11100001 00001111,然后用去掉后两位的00001010 00101000 11100001 000011 来表示这四个局域网构成的更大的网络。

这样的话,每个局域网都有唯一的表示了,并且不同局域网构成的更大网络也有标识了。

接下来就是像交换机一样作用的转发工具了 ---------路由器。

功能和交换机类似,但比交换机功能更加高级。

也拥有学习的能力,并且相邻路由器之间还可以进行相互交换学习。

路由器里面会用相应数据结构记录下网络中所有局域网,也就是本网络的拓扑结构。

如果网罗变大了怎么办呢,所以我们会将网络划分,划分成一个一个的区域,让路由器仅记录一个区域里面的局域网。

只要多了,我们就划分呗。这样的话,最后整个地球的局域网全部就联通起来了。多么宏伟的计划以及实现啊。

当然里面还有非常的细节。有兴趣可以花时间区详细了解。

5.互联网构成的目的

我们费劲千辛万苦构建成功的网络肯定是有用的,什么作用的,传输数据呗。

数据传给谁呢,电脑啊,电脑里面的什么呢?进程啊!!这才是最终的目的,将数据传输给相应的进程。

当时一个电脑中运行着这么多的进程,给哪一个,怎么给,这都是问题啊。

这还不好办啊。既然网卡、局域网都有唯一的标识,我们给每个进程也一个唯一的标识不久行了吗?对,就是这样,这个叫做端口号,用一个和ip地址一样长的标识来存储。这样,我们就可以送到相应的进程了哦。进程呢,通过socket函数在内存中创建了一块内存空间,然后所有通过网络发送给他的数据全部放到这里面,然后自己取走使用即可。这种方式也是进程间通信的方式之一。

嗯,这样的话,网络通信完成了,网络通信的最终目的也就达到了,最终实现了,全球互联的程度!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值