通络通信

网络详解:

网络的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

相关推荐

  • Homework Week-11 加密、CA及DNS

    1、详细描述一次加密通讯的过程,结合图示最佳。 ——————————————————————&#…

    Linux干货 2016-11-01
  • Linux计划任务

    计划任务 Linux任务计划、周期性任务执行 • 未来的某时间点执行一次任务:     at     batch:系统自行选择空闲时间去执行此处指定的任务 • 周期性运行某任务:      cron at任务 …

    Linux干货 2016-09-10
  • 软链接,硬链接区别

    软硬链接涉及文件系统inode, 区分于inode号,硬链接inode号与链接文件相同,且创建链接不占空间.而软链接占名称字节个空间,且inode号与链接文件不同; 两者查找inode号命令都可查找inode号,命令为ls -i,如需查找本目录要加d; 在创建链接环境上,硬链接只能在同分区创建一个,不能跨分区创建;而软链接可以跨分区创建多个链接文件且可以多个…

    Linux干货 2016-10-20
  • smb

    练习: 创建一个共享ftp,路径为/var/ftp/pub;要求仅centos和gentoo用户能上传;此路径对其它用户不可见; [root@node1 ~]# yum -y install samba [root@node1 ~]# vim /etc/samba/smb.con…

    Linux干货 2016-10-23

评论列表(1条)

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

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