通络通信

网络详解:

网络的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)
zhongzhong
上一篇 2016-09-02
下一篇 2016-09-02

相关推荐

  • Linux入门之计算机组成及其功能

    计算机基础以及Linux基础

    2018-03-06
  • 文本编辑器:vim 基础篇

       VI:Visual Interface,是一种文本编辑器,还是全屏编辑器。   VIM:Vi IMproved,vi的增强版,vim是模式化的编辑。 VIM的三种模式:        编辑模式(命令模式,默认模式)       插入模…

    Linux干货 2016-08-18
  • Linux 基础以及相关基础命令

    1.计算机的组成 计算机由5大部分组成,cpu(运算器,控制器)输入单元,输出单元,内存。  运算器:负责数据的运算  控制器:负责各主件之间的协调控制  输入单元:指令的输入  输出单元:计算结果的输出  内存:为cpu需要运算的数据提供存储 2 linux 常见的发行版   Debian :ub…

    Linux干货 2016-09-14
  • 马哥教育网络班21期+第五周课程练习

    1. 显示/boot/grub/grub.conf中至少以一个空白字符开头的行 [root@hadoop ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2. 显示/etc/rc.d/rc.sysinit文件中以#开头,后面至少一个空白字符,而后又有至少…

    Linux干货 2016-08-05
  • DNS常用配置解析反向解析

    什么是域名解析库文件?     是指将我们访问的域名解析成IP返回给本主机,然后本机拿着解析后IP去访问服务器,而解析格式就放在域名解析库文件中。DNS解析分为正向解析和反向解析    正向解析就是将域或域名解析成对应的IP地址,反之则相反,通过IP解析成域名 &nbs…

    Linux干货 2017-05-31
  • N22-​Linux系统的基础命令

                                     Linux系统的基础命令 命令的语法通用格式:# COMMAND OPTIONS  ARGUMENTS COMMA…

    Linux干货 2016-08-15

评论列表(1条)

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

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