OSI七层模型




七层网络结构:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
通常也做五层 应用层、传输层、网络层、数据链路层、物理层(实体层)
引伸问题:TCP/IP协议与http协议的区别:
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“咱们在传输数据时,能够只使用(传输层)TCP/IP协议,可是那样的话,若是没有应用层,便没法识别数据内容,若是想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有不少,好比HTTP、FTP、TELNET等,也能够本身定义应用层协议。WEB使用HTTP协议做应用层协议,以封装HTTP 文本信息,而后使用TCP/IP作传输层协议将它发到网络上。”安全术语TCP/IP表明传输控制协议/网际协议,指的是一系列协议。“IP”表明网际协议,TCP和UDP使用该协议从一个网络传送数据包到另外一个网络。把 IP想像成一种高速公路,它容许其它协议在上面行驶并找到到其它电脑的出口。 TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其余协议的,它们却有一个显著的不一样:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另外一个端点,而UDP不提供任何这样的保证。
HTTP(超文本传输协议)是利用TCP在两台电脑(一般是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
-
物理层
实体层。若是咱们的电脑须要联网,那么首先须要网线(光缆、电缆、无线电波,WIFI,网线)等方式均可以,主要规定网络传输的一些电器特性,做用是传输0和1这样的电信号。由于单纯传输0和1是没有意义的,全部引出了数据链路层。

(1)数据通讯的基础知识:


(B站韩立刚老师16课时)
-
数据链路层
多少个电信号算一组,每个信号位有什么意义,即在实体层的基础上肯定了0和1的分组方式,也就咱们常说的以太网协议。以太网规定一组电信号构成一个数据包,咱们将它叫作帧, 每一个帧又分为如下两个部分:

其中head称之为标头(固定长度18byte)、data(46byte~1500byte)即数据。标头包含了数据包的说明项(如发送者、接受者、数据类型等),若是数据的长度大于最大长度即1518的话,数据就不得不分为多个组发送。
① 回到一个问题,标头的中的发送者和接受者是根据什么标识的呢? 数据包必须从一块网卡传输到另一个网卡上面,而每个网卡就会有一个地址,即数据包的发送地址和接收地址,(也称之为Mac地址)每个网卡在出厂的时候都会有一个全世界惟一的Mac地址,长度为48Bit。 一般使用12个16进制数来表示。(如:14:5c:89:96:44:c1)注意:(有的软件能够更改计算机的Mac地址)前6个16进制数是表明厂商的编号,后6个表明厂商的网卡流水号。
②广播: 以太网数据包必须知道接收方的Mac地址才能将数据发送,在知道Mac地址的状况下是怎样发送的呢?以太网中并非将数据包一对一准确地传输到方法,而是采用一种广播的形式,向本网络的全部计算机发放,让每台收到数据的计算机自行判断是否是接收方。以下图中,1号计算机向2号计算机发送数据包,同一个网络中的3,4,5也接受到这个包,它们读取包头找到接收方的Mac地址,而后与自身Mac地址对比,若是都相同就接受该包,不然就丢弃。

同一子网中用广播的形式还可行,可是若是不是属于同一子网,全球有成百亿计算机,若是不一样子网之间仍然以以太网广播形式发送数据,显然是不现实的,因此不属于同一子网络的话就有了路由的方式发送数据。路由的意思即如何向不一样的子网络去分发数据包,遗憾的是Mac地址只与厂商有光,和网络环境无关,这就致使了网络层的诞生。
-
网络层
网络层引入了一套新的地址,让咱们可以区分不一样的计算机是否在同一子网内,这个地址即网址。因而计算机就有了两个地址,一个就mac地址,一个就是网络地址,两种地址之间没有任何联系,mac地址绑定在网卡之上,网络地址由管理员分配的,网络地址肯定计算机所在的子网络,mac地址负责将数据包发送到子网络中的目标网卡上。逻辑上就能知道是先处理网络地址而后处理mac地址的。由此又引入了ip协议。
①ip协议定义的地址叫作ip地址,目前普遍使用ipv4, ipv4中一个ip地址由32个二进制位组成,习惯分为4段10进制数字,(192.168.0.1)范围(0.0.0.0~255.255.255.255)互联网上的每一台计算都会分配到一个ip地址,一个ip地址分为两部分 ,假设192.168.0表明网络,后面一个3表明主机。同一子网的网络部分必然相同,事实上一个给一个ip地址我么是没法准确判断哪一个部分为网络部分,(能够是前面24为,也能够是前面的16位),那么如何准确判断两个计算机是否属于同一子网络呢?就必须用到子网掩码,子网掩码表示子网络特征的参数,形式上相似ip地址(32位二进制数字),其网络部分所有是二进制1,主机部分所有是二进制0.因而假如一个ip地址的前24为表示网络部分,后8为表示主机部分的话,它的ip地址就为11111111-11111111-11111111-00000000,用10进制表示为225.225.225.0
②ip数据包:根据ip协议发送的数据就叫ip数据包,ip的数据包也分为标头和数据两个部分,部分以下左图所示:其中一定包含了ip的地址信息,实际上ip数据包是直接放入以太网数据包的数据部分的,因此不用修改以太网的规格,这就是互联网分层结构的一个好处,上层的变更不会涉及下层的结构。因而以太网的数据包能够看作以下右图所示:标头(20-60个byte)主要包含版本号,长度,ip地址等信息。data(最大65515byte)因而当data的大小超过了以太网数据最大值的时候,就会将ip分割为多个以太数据包发送出去。一般发送数据状况下,对方的ip地址是已知的,可是mac地址不得而知,因而就有了ARP协议的存在。

③ ARP协议:假设存在2台计算机,当两个计算机不属于同一子网络的时候,无法知道对方的mac地址,只能将数据包传送到两个子网络链接的网关处理,当两个主机在同一个子网络的时候就可使用ARP协议获得对方的mac地址,ARP协议是怎么运作的呢?ARP协议发出一个数据包(也包含在以太网的数据包中)此包中包含了查询主机的ip地址和对方的mac地址。(此mac地址是用临时的6组16进制的数字表示一个广播地址)因而所在子网的每台主机都会收到该数据包,收到以后就会取出该包里面的ip地址,而后和本身的ip地址作一个比较,若是是相同的话就作回复,并上报本身的mac地址。若是不相同就丢弃该包。有了ARP协议以后,就能够获得同一个子网络内的主机mac地址。而后把数据发送至任意主机。 引出一个问题:咱们在上网的时候同时打开了多个程序,(如浏览器和qq聊天),当咱们接受一个数据包的时候,数据包是如何知道它是属于哪一个程序的呢?因而就引入了一个参数:端口。
④端口:每个数据包发送到主机的特定端口上,因此不一样的程序会取到本身的数据,端口好都是0~65535之间的整数。正好16个二进制位。其中0-1023端口是系统占用的,(本地启动一个80端口可能会提示权限不够)
-
传输层
传输层的功能就是创建端口到端口之间的通讯,相比之下,网络层是主机与主机之间的通讯,只要肯定主机和端口就能够实现程序之间的交流。因此unix系统中,把主机加端口叫作套接字(socket)有了它以后就进行网络编程了。网络编程的两个协议:
①UDP协议:格式就是在数据前面加上端口号。UDP数据包也由标头和数据包组成,以下左图:标头部分定义发出的端口和接收端口,data部分为具体的内容。而后将整个UDP的数据包又放到ip数据包的数据部分,前面说过ip数据包又是放到以太网数据包中的,因此整个以太网数据包又成了下面右图样子:UDP标头部分只有个字节。总长度不超过65535字节,正好能够放进一个ip数据包。优势:简单易实现。缺点是可靠性差。因而引入了TCP协议。

②TCP协议:能够理解为有确认机制的UDP协议。每发出数据包都进行确认,若有遗失就重发。TCP有三次握手。能够保证数据不会丢失,缺点是过程实现复杂,消耗资源大,TCP数据包没有长度限制,一般限制不超哥ip数据长度。确保单个的tcp包不被分割。 TCP数据包是面向链接(如打电话先拨号创建链接)UDP是无链接的。即发送数据以前不须要创建链接。

-
应用层(全部能产生网络流量的程序)
因为互联网是开放的网络架构,数据的来源五花八门,因此须要事先约定一些格式,否则根本没有办法解读。应用层的做用就是规定应用程序的数据格式。

回到下图:图中1号计算机须要与4号计算机通讯,因为1和4不在同一个子网内,因而先须要将数据包发送给子网1 的网关(geteway)也能够理解为路由器,网关1经过路由协议发现4计算机处于2关内,因此网关1会将数据发送给网关2而后由网关2再将数据发送给4号计算机。1号计算机要将数据发送给网关1的话,必须知道网关1的mac地址,因此数据包的目标地址分两种状况:
1:当通讯的计算机属于同一个子网络,只须要知道对方的mac地址和ip地址便可。
2:当通讯双放不在同一个网络。 须要知道网关的mac地址和对方计算机的ip地址。

(1)动态ip地址:计算机开机以后自动分配到一个ip地址, 不会被别人设定,使用的协议叫DHCP协议(属于应用层的协议,创建在UDP协议之上因此其整个协议的数据包结果以下:)此协议规定:在每个子网中,有一台叫作DHCP服务器的计算机专门负责此网络内的ip地址。因此有新的计算机加入到子网中,必须向DHCP服务器发送一个DHCP请求数据包,去申请一个ip地址和相关的网络参数。

经典面试题:访问网络的过程:



在浏览器中输入url,而后改url会通过DNS(DomainNameSystem)解析而获得服务器的ip地址。
以下图所示:蓝色为交换机,右边为服务器,左边为客户计算机,m开头表示mac地址,15.0.0.2表示ip地址。在数据传输的过程当中间,ip地址决定了数据包最终到哪里去,mac地址决定数据在路由器中怎么走。
因为数据在传输过程当中数据包后面携带的mac地址一直是原mac地址和目标路由器的mac地址,因此它是变化的,服务器在拿到数据的时候是不可能知道客户端的mac地址的,可是能够知道ip地址。

数据封装的过程:



OSI模型对计算机网络故障排错的指导意义
网络排错应该由底层往高层排查,应为高层是基于底层实现的。
1.物理层故障,首先查看链接状态,发送和接受的数据包是否正常。
2.数据连路程故障, MAC冲突, ADSL欠费, 网速没有办法协商一致, 计算机链接遇到所悟的VLAN
3.网络层故障 配置错误的IP地址,子网掩码、或网关、路由器没有配置到达目标网络的路由
4.应用层故障,应用程序配置错误
文章详细介绍了OSI七层模型,包括应用层、传输层、网络层、数据链路层和物理层,并阐述了TCP/IP协议与HTTP协议的关系。TCP/IP协议关注数据在网络中的传输,HTTP协议则关注数据的包装。在数据通讯过程中,物理层规定了网络传输的电器特性,数据链路层处理数据包的分组,网络层通过IP地址区分不同子网。TCP协议提供可靠的数据传输,而UDP协议则不保证数据传输的可靠性。应用层如HTTP协议则规定了数据的格式,使得应用程序间能进行通信。
2938

被折叠的 条评论
为什么被折叠?



