互联网数据传输原理 |OSI七层网络参考模型
OSI七层网络参考模型
应用层:产生网络流量的程序
表示层:传输之前是否进行加密或者压缩处理
会话层:查看会话,查木马 netstat-n
传输层:可靠传输、流量控制、不可靠传输
网络层:负责选择最佳路径、规划ip地址
数据链路层:帧的开始和结束、透明传输、差错校验
物理层:接口标准、电器标准、如何更快传输数据
需求:我们在家里计算机访问百度
1.物理层:需要网线,网卡
2.数据链路层:设备是网卡和交换机,我们访问出去时需要经过局域网交换机,而经过局域网交换机需要通过物理地址寻址MAC
3.网络层:我们的电脑和百度服务器之间在不同的网络,所以不同网络之间的路径选择需要通过IP地址来决定
4.传输层:传输时,需要遵守一定的协议(TCP稳定,UDP速度快)和协议的端口号来传输
5.会话层:建立连接到断开连接整个完整的过程需要会话层去控制
6.表示层:负责将我们的数据①翻译为二进制数据加密–②压缩(为了传输速度)–③百度服务器进行解压缩–④解译解密
7.应用层:经表示层翻译后,在我们的计算机可以进行输入,交互的界面(终端)中表现出来
所以不同网络之间的路径选择需要通过IP地址来决定
应用层是最接近用户那一层
1.物理层
实际上的物理连通是需要物理层的
物理层就是把比特用不同的媒介传输出去,可以用电,用光或者其他形式的电磁波来表示和传输信号,
数据从网络接口出去以后
会经过不同的网络拓扑
并不是一条线走到底,需要中继器和集线器这样的设备
但还是不够
2.数据链路层
信号要去到那台设备是需要定向的,因此需要高一点的网络模型,所以在数据链路层这里,比特会被封装成帧,帧就是这一层表示数据的特殊名字
封装的时候加上MAC地址 ----也就是物理地址
封装的时候加上MAC地址 ----也就是物理地址
为了可以通过mac地址对不同设备进行数据的传输
发送端发送数据的时候,交换机就知道了发送端的MAC地址,如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去
物理地址就是这样一跳一跳地进行传统
另外因为物理层在传输0和1的时候,可能0变成1,1变成0,会进行差错检测,以及一定的差错纠正,另外设备之间的传输能力以及接收能力也是问题
可能一边喷水式传输,一边夹缝式接收,因此需要流控制来避免这种不对称
我们知道互联网是一张大网,如果用mac物理地址来作为唯一的寻址方法是不科学的
3.网络层
比如我和你买了一个厂出的网卡,差别就只有一个字母,但是距离位置十分遥远,物理地址就会很难做出快速定位
相当于我有你的名字,但我不知道你在哪里,找不到你,
因此需要IP地址来进行寻址和路由选择,IP这样的逻辑地址就是实现端到端的基础,而不是物理地址那样跳到跳传输
说到路由选择,也就是路由器也是网路层的核心
包就是网络层里数据的名字,在封装为第二层的帧之前就是包,路由器根据包里的IP地址进行路由转发,地址管理和路由选择就是这一层的核心
4.传输层
虽然有MAC和IP地址可以抵达对方主机,但是对方主机可能运行着无数多个软件进程,
假设我用谷歌和火狐浏览器同时登录网站,如何让数据去到指定的软件服务器上,就需要用到端口号作为地址来定位了,比如客户端这里生成不同的端口号,即时同时访问HTTP端口80也是没问题的,根据不同的源端口号来作出响应就可以了,所以传输层(运输层)在网络层的端到端基础上,实现了服务进程到服务进程的传输
段就是传输层里的数据的名字,在封装为三包之前就是段
传输层管理两个节点之间数据的传输,负责可靠传输(TCP协议)和不可靠传输(UDP协议)
可靠传输(TCP协议):允许把字节流变成多份段,而不是整个字节数据完整发送出去,
传输层还有流量控制来确保传输速度,在加上错误控制来进行数据完整的接收
5.会话层
不用每次都输入账号和密码,当然网站服务会管理和控制登录状态,会话层还负责同步服务
再次登录账号的时候
6.表示层
表示层负责这样的转换,也就是编码和解码,数据往往还是需要加密。
比如说HTTPS(SSL/TLS)就会对我们的数据进行加密和解密
另外我们也会对文件进行瘦身—压缩 ,压缩也是这一层负责的
7.应用层
应用层,表示层和会话层的数据统称为应用数据,或者应用负载,也可以叫上层数据或者报文
地址来说,有端口号,IP逻辑地址和MAC物理地址
就传输功能来讲,有服务进程和服务进程,端到端,跳到跳
了解各层作用,现在可以把全部进行关联起来
-
客户端要发送数据,也就是报文
-
报文来到了传输层,加上端口号,封装成段
-
段来到了网络层,加上IP地址(源IP+目标IP地址),封装成包(这里的包是含有目标IP地址的,知道数据要发送到哪里,但因为目标IP地址不是同一个网络下的,要发送到其它的网络,就需要经过默认网关)
-
现在出现了一个问题,客户端最初不知道默认网关的MAC地址,没有办法封装成帧,
这个时候就可以用ARP协议进行广播,找到网关的IP对应的MAC地址,把包封装成帧,
源MAC地址填写自己的,目标MAC地址填广播地址
假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了
交换机收到广播后就帮忙发送出去,人手一份,
所以默认网关收到消息后,查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机,
同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,
默认网关就这样做出响应,这样原路返回,发送端就知道默认网关的MAC地址了。
现在就可以封装成帧,并且发送数据,
比特流到了默认网关的时候,解封为帧发现是发送给自己的,
在解封为包查看到目标IP地址是在另一个网络中的,就会进行路由转发,最终到达了目的网络。
如果目标的网关知道目标IP地址和MAC地址是那台主机,封装成帧就可以直接发送过去了,
如果不知道也还可以用ARP喊下街就好。目标主机收到包确定是自己的IP地址以后,解封查看端就可以发现源和目标端口号,用目标端口号给定指定的应用程序,
应用程序处理好后,就可以按照源的信息作出响应,回去的原理也是一样的