Linux中的网络功能概念介绍(一)

  在操作系统中,进程之间的通信是用ipc(内存基本通信)以及内存共享shm来实现本地的通信,那么如果跨主机间通信或者说是不同之间的主机用rpc(远程过程调用)以及socket套接字,用一个主机在socket中写数据,另一个主机在socket之间读数据,以实现进程通信的最终目的。

  在网络功能出现之前,基本都是用电话线来通信,发送数据基本都是靠着那根线,要是先坏了可能就无法发送数据,所以美国的军方就有那么一种设想,如果未来世纪大战时,我的数据的发送不要靠着一条线,或者如果说这个线路断了,那么数据自动判断走另一条线路,最后输出到目的地。

  计算机之间的通信数据是流式数据,所谓流式数据是指,在我的本地计算机中的文件抽成一条一条的丝通过介质的传输输送到对方的目标主机上,目标主机自动将这些流式数据拼凑起来再由计算机内部转化成我们人类看得语言。

  我们现在使用的主要还是以以太网为主,是施乐公司的Park实验室发明了,并无偿给了全人类。

  两台计算机彼此之间连接起来,这种连接是靠借助于某种介质(分为有线和无线),无论是用哪一个到另一端都要转换成电磁信号,彼此协商多长时间为一个信号,这种商定称之为协议。

  主机A发送给主机B,主机A在比之前的网络发送信号时,把信号广播出去,C、D看到不是他们的信号就不理了,但是B看见了会返回数据发送给A,主机A发送的信息首部叫报头,真正的信息在报文的后面,B数据返回给A之后,获得了B的地址A就可以直接通信,再也不用广播寻找B,不过要是找C主机的话,就得重新发一次广播了。

  我们有多种的线路拓扑图,有总线型、星型、环形等

  以上可以用总线型来实现网络之间的通信,但是有个问题,就是都是在同一链路上,如果A要想给B主机发数据,C和D想通信的话肯定会造成冲突,为什么?因为都在一个线路上,而造成线路冲突的地方我们也叫它为冲突域,所以我们就得搞一个线路仲裁机制,要实现线路仲裁,就先标识主机,标识主机的机制叫MAC,我们称为硬件MAC地址,这种地址是唯一性的,并且不可更改,但是问题依然没有解决,就是A和B发数据被别人用了怎么办?

  CSMA/CD(载波监听,多路访问/冲突检测),主要A要发信号时先探测一下这个线路是否有忙,如果不忙的话立即向外发送信号,且边发边听,过程中有冲突的话,则立即停止,等待一段时间后再次探测,如果A、C探测没有都发出去冲突了,都会等待一段时间延迟随机再次发送,过一段时间,A再次探测,如果其它主机没有占用的话,就边发边监听,因为发报文还是有冲突,有冲突的话,就会往后退,过一会再次探测,使用这种机制的通常为以太网。

  还有一种线路仲裁,就是以环形为主。

  这种线路仲裁就是形成(环形)环状结构,在线路中会有一个令牌环,如果没有主机发送数据的话,这个令牌环就会在这些主机上游走,那个主机想要发数据就会把那个令牌环拿过来,用完之后释放出来让令牌环继续在线路上游走,注意:只有持有令牌环的主机才能外网发送信号。

  另一种是星型,它使用的是在一个中心设备上有很多的接口,每个接口连接一台主机,早期用的HUB接入的时候非常简单,因为里面还是一根线,和总线型差不多。

  但如果接入的设备越来越多,说明冲突也会越来越多,搞得谁发就冲突,谁也干不成,还有就是线路过长就会失去作用,因为传输的信号总归来说是有限的,当完成到已经让接收方无法识别的时候,这个信号意味着就失去作用了,如果这样的话,可以使用中继器,把传输信号放大,向目标进行传输,存放传输的主机过多,可以用CSMA/CD,但是巨多的话,则冲突也会巨多,我们要找一个隔离设备,比如A和C在同一范围内,B和D在另一范围内,A向C主机发送信号时,这个设备不会转到主机B,同样也是如此,但如果A和B通信时,则就把信号转发给另一个范围到主机B中,这个设备就叫做网桥。

  在网桥内有一张表,里面记录了主机和接口,那如何获得的呢?网桥会广播到各个主机来获取MAC地址,具有自动学习的一个能力,当A发送到C主机时,网桥不知道C在哪儿,但知道A在那个接口上,C接收看到,回应这个报文的时候,C的源、目标地址也有了,这时候网桥也记录了C的源地址。

  如果这个网桥上有很多接口,而每个接口只能接一台主机,这个网桥内部是一个交叉网络,找个空闲的线路,所以A和B能通信,C和D也能通信,而且工作在全双工的模式下,整个网络可以有效的利用起来,而这个设备就是交换机,表里面的数据也是定时清理的,如果还有冲突,就切成更小的范围,但这种平面地址也是有限的,平面地址叫物理地址,当A要想从交换机以外的设备通信的话,就将要靠逻辑上的地址进行通信,这个逻辑就叫IP地址,当一个主机交换机通信能够通过中间的那个设备,所以中间那个设备是标记网络不同的设备,中间设备看的是逻辑地址是什么,用IP地址来标记网络,用1.0可以为一个范围,2.0为一个范围,转发不同的网络通过这个设备来转发,这个接口叫做网关,而在不同网络之间可以转发数据的设备叫路由器,整个就是把交换网络的报文接下来转到另一个交换网络(中间设计到MAC的转换)只要不在同一网络需要转发出去到另一个网络中,而这种转发就需要借助于路由器,每一个PC上都有一个默认网关,而这个网关就是路由器的IP地址,对于路由器的另一端接口也是PC网关的转发非本地网络通信,如果本地通信则不需要网关,相同的网用网卡上和IP通信,IP可以转为MAC地址。所以报文在前端中有源IP、目标IP、源mac、目标mac。

原创文章,作者:刘 祥宇,如若转载,请注明出处:http://www.178linux.com/60553

(1)
上一篇 2016-11-23 20:38
下一篇 2016-11-23 21:04

相关推荐

  • N26_第三周

    1、列出当前系统上所有已经登录的用户的用户名。同一个用户多次登录,只显示一次 [root@node1 ~]# who |cut -d ‘ ‘ -f 1 | sort-u root zhh   2、取出最后登录到当前系统的用户的相关信息 [root@node1 ~]# id `last | head -1 | cut -d&#…

    Linux干货 2017-05-26
  • OSI模型与TCP/IP协议栈

         OSI模型:     使用OSI模型的意义:      简化教学     加快发展速度     确保技术的互操作性     简化模块化设计  &nbs…

    2017-08-20
  • 文本编辑器vim概述与应用示例

    文本编辑器vim概述与应用示例 文本编辑器概述 vim编辑器是一种易用、功能强大的文本编辑器,可以基于三种不同的模式对文本进行编辑,包括编辑模式、输入模式和末行模式。 编辑模式 模式转换 i 表示在光标所在处插入 a 表示在光标后方插入 o 表示在光标所在处的下一行插入 O 表示在光标所在处的上一行插入 I 表示在光标所在行的行首插入 A 表示在光标所在行的…

    Linux干货 2017-08-06
  • 马哥教育网络班22期第6周课程作业

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; %s@^[[:space:]]\+@# 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; %…

    Linux干货 2016-12-05
  • kickstart+http+dhcp+tftp实现centos7的无人值守安装

    环境:IP: 172.16.0.11 centos 7.2 一. tftp 安装tftp服务端和客户端 [root@localhost ~]# yum -y install tftp tftp-server 启动tftp [root@localhost ~]# systemctl start tftp.socket [root@localhost ~]# s…

    Linux干货 2017-06-03
  • 第六周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;          cp/etc/rc.d/rc.sysinit /tmp/     &nbs…

    2017-09-04