一、 什么是OSI参考模型?
1.1 简介
OSI(Open System Interconnect),即开放式系统互联参考模型。是由国际标准化组织在1985年发布的网络标准框架。该架构体系为世界网络标准。也就是说。从一台电脑通过网络连接到另一台电脑之间的所有协议 标准等必须遵照osi参考模型标准进行传输数据。共分为7层从下至上分别为:物理层(Physical Layer
)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。每一层的功能都是不一样的。
![](https://i-blog.csdnimg.cn/blog_migrate/4ebfbb1ff898ce234a441c035555065a.jpeg)
1.2各层作用
先从物理层开始说吧
物理层:
大家听名字就能听出来。这一层肯定是做物理连接。可能有些小伙伴会问?什么是物理连接呢?电脑和电脑之间用线连起来。这就算物理连接。他的主要功能就是用各种通信介质(双绞线、同轴电缆、光纤等)将通讯设备连接起来。它的传输单位是比特流。常用的设备有:网卡,双绞线,同轴电缆,光纤等。
![](https://i-blog.csdnimg.cn/blog_migrate/df76218187820eefc76878548095435b.jpeg)
数据链路层:
链路层是什么呢?链路分为物理链路以及逻辑链路。物理链路通常是指真正存在的网络链路。比如:电脑和交换机之间使用一根双绞线连着的。那么这台电脑和交换机之间既存在一条物理链路。逻辑链路通常是指在物理链路之上。通过一些协议或者方法使之能够通信的链路。比如说你的电脑和你家路由器之间是用一根线连着的。你同时可以看电影,聊QQ,上i春秋。这就是在物理链路上建立的逻辑链路。OSI参考模型规定:在此层将把物理层的比特流转换成链路层帧进行传输。本层可以指定了一个内网的拓扑结构。并提供了硬件寻址。常用的设备有二层交换机。常见的一些协议有ARP RARP ICMP等。
![](https://i-blog.csdnimg.cn/blog_migrate/1ab4e238d86d8bac5673ad088d7ac89d.jpeg)
网络层:
网络层是为传输层提供服务的。同时在此层就有了ip的概念。该层的作用是解决数据如何传送的问题。好比你站在一个十字路口 想去别人家但是有好几种的方法。同时此时是在晚高峰时期。有的路很堵,过不去,但是路径很短。有的路很宽松,没几个车。但是行走的距离很远。这时候你应该会打开一些地图软件。根据地图选择的最优路径来走。网络层的作用也是类似于这个流程。他会根据网络的情况。通过路由算法。来算出最优路径,供数据传输。分为静态路由和动态路由。静态路由就是规定好了。谁必须走哪条路。动态路由就是根据一些动态路由协议(RIP,OSPF,BGP)来自动选择最优路径。比较有代表意义的网络设备就是路由器(你家的路由器功能可没有专用路由器的功能多)还有三层交换机(就是二层交换机多了个路由功能。省着再买个路由器了)。
![](https://i-blog.csdnimg.cn/blog_migrate/05ef7a58a061c817686a58275749df5c.jpeg)
传输层:
到传输层。就有了端口的概念了。数据通信到这里也就结束了。该层作用是提供了主机程序之间端对端之间的服务联系。按端口号寻址。这就犹如你的远房表哥来到了你的城市,想找你叙叙旧。他给你打了个电话。说他在XXX酒店1702号。当你根据导航找到这个酒店(即网络层)你会去找他的房间(即传输层)在跟他叙旧。如果说他没告诉你房间号。你还能找到他吗?当然不能了。。。
言归正传,传输层的设备笔者只听说过并没有见过。即四层交换机。听说可以端口转发。即把一个端口转发给另一个端口。这种操作我并没有在交换机里面见过。。。此层就两个协议。一个是
TCP
(传输控制协议),另一个是
UDP
(用户数据报协议)。
会话层:
会话层。主要功能是负责建立会话以及销毁会话。什么是会话呢?可以理解成打电话就是会话。从接听开始到结束。这就是一个会话的过程。
表示层:
此层由于作者脑洞不够大真无法解释。。。
应用层:
该层为OSI参考模型的最高层。此层提供了我们可以直接使用的东西。比如说网站 APP应用等。该层协议很多。可能每天都会诞生一个新的协议。例如:http(超文本传输协议)、ftp(文件传输协议)、DNS(域名系统)等等。作用是直接面向于用户。。
二、 什么是内网?什么是外网?
2.1内网
内网,又称局域网(LAN)是指在特定的区域内由各种网络设备以及终端与服务器组成的网络。通常是半封闭式的,即内网可以访问外网。而外网却无法访问到内网,但通过虚拟专用网络技术(微屁恩)可以在公网上连接到内网上。通常一个公司,学校,政府部门。都有一个内网。
![](https://i-blog.csdnimg.cn/blog_migrate/8e2e4a4a452e57b4ba2424f0efe042fd.jpeg)
2.2外网
外网,又称广域网(WAN)即在公网上每个人都可以访问其他人的资源。Internet(因特网)是世界上最大的广域网。
![](https://i-blog.csdnimg.cn/blog_migrate/263a7881377dbf760a34163f1294c88d.jpeg)
三、数据的封装与解封装
由于互联网之间数据要进行传输。中间经过各种协议 设备 变化。由此繁衍出数据的封装与解封装。在此。笔者给大家简单的介绍
一下数据在osi参考模型中的封装与解封装。
前文已经介绍了osi参考模型。在此本人拿访问新浪网进行举例,在访问新浪网的同时。网络数据包是如何走的。
首先。访问http://www.sina.com.cn/。的第一个数据包是向DNS服务器(114.114.114.114)请求该域名的ip地址。
。
![](https://i-blog.csdnimg.cn/blog_migrate/f5c99fc0b2136241601f22c88e10c1d9.jpeg)
请求过后。DNS服务器会回应一个ip地址(新浪的ip地址)返回给本机
![](https://i-blog.csdnimg.cn/blog_migrate/ad01dd825c3b9d78146c0a2fb6c45eb9.jpeg)
浏览器会随机生成一个端口 用于与网站服务器80端口进行通信。并封装成四层tcp协议 并开始进行TCP的三次握手。
![](https://i-blog.csdnimg.cn/blog_migrate/dfd55f801469cf03514956304af3b4b5.jpeg)
第一次握手:首先我们的客户端先发出一个同步请求(SYN,seq=0,ACK=0)。用于试探一下对方服务器端口是否开启。并进入监听模式。如果开启。对方会回应一个SYN+ACK的包(SYN,seq=0,ACK=1)。一次握手完成
Ps:换位思考一下这个这个同步请求。如果说进行TCP SYN一次的话。对端会回应一个SYN+ACK的包。那么 如果说我们一次性发非常多的TCP SYN请求包,对端会怎样呢?当然。如果对端是服务器的话,应该不会有太大的问题。如果说对端是一个路由器,或者说配置较弱的防火墙。那么。并发数过大的TCP SYN包发给路由器或防火墙可能会直接导致该设备死机甚至重启。这也就是TCP SYN攻击的原理与危害。
![](https://i-blog.csdnimg.cn/blog_migrate/efa977341858264869d0c231d0cf469e.jpeg)
第二次握手:同步请求包发送过去了,且服务端收到了同步请求包。SYN+ACK的包就从新浪传回来了。即客户端发起连接且服务器同意连接(SYN,seq=0,ACK=1)。一般只要是端口开放,服务端会肯定同意连接的。二次握手完成。
![](https://i-blog.csdnimg.cn/blog_migrate/6570b562cb70a6f25fb2424da6ab3524.jpeg)
第三次握手:当客户端收到了服务器发送的二次握手,即:SYN,seq=0,ACK=1.客户端还要再次发送一个确认的包即:ACK=1.同时,此TCP连接进入建立状态。即可以发送http请求。
那么问题又来了。我是怎么和新浪的这个IP地址进行通讯的呢。到这步我们已经追寻着osi参考模型。我们已经从应用层走到了传输层了。
当然。我们还要继续往下走。。。从我家走到新浪
如果我没猜错的话,你家的网应该是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/be367a6372b84cc2e74ddf6a4177d1fc.jpeg)
如果说你家200几年就有网的话。你家的网应该是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/6ff94e52f88aafbbfeaf8b1818f16b06.jpeg)
运营商里面应该是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/44bf655c06c31afbcd61546c13a3f68f.jpeg)
对端的新浪应该是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/25faa427902622d7efebe795e461bccd.jpeg)
加在一起应该是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/15add41e21bfa12f1f4e86715c8cc1f0.jpeg)
左边的区域是新浪 中间的区域是ISP(运营商) 右边的区域是你家。从我家走到我们市的市级运营商。再从你们市的市级运营商走到省级运营商,再从省级运营商走到别的省。这就涉及到一个路由的路径选择。
![](https://i-blog.csdnimg.cn/blog_migrate/82d75a7e7c58eb01d4e0bbcfb92957b1.jpeg)
事实上网络远远要比我话的这个图复杂。如果说我想从北京走到广东。可能有很多条路径。从北京和广东有一条直连光纤。还有一条从北京走到上海从上海走到广东的一条光纤。那么从我家到新浪该怎么走呢?
事实上这个问题我们可以不考虑。考虑这个问题简直是杞人忧天。我们每年都要交网费。这个问题应该运营商来考虑怎么走合适。通常省和省之间的联系与运营商和运营商之间的路由是用bgp(边界网关路由协议)来做的。确保每个自治域之间都能互通。且如果说某个节点出现了故障。他可以自动计算出其他的最优路径来走。这也就是当年为什么中美的海底光纤断了,而中美网络还可以正常通信。
转载: https://bbs.ichunqiu.com/thread-33469-1-1.html