OSI七层参考模型(主要就是为了解决主机之间的网络通信)
- 应用层:负责应用程序间进行沟通
- 表示层:数据的表示,安全,压缩
- 会话层:会话的建立,管理,断开
- 传输层:通过协议端口号定义对方上层服务,流量控制,差错校验
- 网络层:通过Ip地址进行逻辑寻址
- 数据链路层:通过物理地址(MAC)进行寻址,差错检验
- 物理层:将比特流(二进制数据)通过物理介质传输出去
具体过程:
- 物理层:应用层只不过是逻辑上把两个应用连接起来,实际物理上的连通是需要物理层的,我们要发送的数据在计算机中无非是无数的0和1,物理层把这些比特用不同的媒介传输出去,可以用电,用光或者其他形式的电磁波来表示和传输信号。 数据从网络接口出去以后,去经过不同的网络拓扑,并不是一条线走到底,因此需要中继器和集线器这样的设备,这样还不够信号要去哪台设备是需要定向的
- 数据链路层:数据链路层这里会把比特封装成帧,封装时会加上mac地址(物理地址),网卡出厂有着全世界独一无二的mac地址为了能通过mac地址对不同的设备进行数据传输,就出现了交换机,一台交换机连接多台主机,发送机发送数据时,交换机就知道了发送端的mac地址,如果交换机此时也知道接收端的mac地址就可以把数据直接发过去了。但是物理层在传输0/1时,可能0变成1或者1变成0,那么此时就会进行差错检测和差错纠正。
- 网络层:互联网是一张大网,只用mac地址进行寻址不科学,如果mac地址的字母只差一个并且距离非常远,物理地址很难做出快速定位(相当于我知道你的名字,但是不知道你住哪里,找不到你)因此要IP地址进行寻址和路由选择(Ip-逻辑地址就是实现端到端的基础了)而路由选择:也就是说路由器也是网络层的核心。包就是网络层里面数据的名字,路由器根据包里面的Ip地址进行路由转发,地址管理和路由选择就是这一层的核心。
- 传输层:虽然有Mac与Ip地址可以抵达对方主机,但是对方主机可能运行着无数个软件的进程比如google与fix同时登录网站,如何让数据到指定的软件服务上?,需要用到端口号作为地址进行定位,比如客户端这里生成不同的端口号,即使同时访问http端口80也没问题,根据不同的原端口去进行响应就可以了。段是传输层里数据的名字所以传输层在网络层端到端的基础上实现服务进程到服务进程的传输。传输层管理两个节点之间数据的传输:负责可靠传输和不可靠传输
可靠传输:tcp tcp允许应用把字节流变成多份段,而不是整个字节数据完整的发送出去
不可靠传输:udp
传输层还有流量控制来确保传输速度再加上错误控制进行数据完整接收
- 会话层:登录某个网站,网站服务可以保持你的登录状态不用每次都输入账号和密码,网站服务会管理和控制登录状态,会话层还负责同步服务。
- 表示层:不同计算机的内部的各自表达方式可能不太相同表示层来负责这样的转换,也就是编码和解码。数据往往还需要加密和解密(比如说https会对我们的数据进行加密和解密),文件瘦身压缩。
- 应用层:负责应用程序间进行沟通
互相关联
-
客户端要发送数据也就是报文,
-
报文来到传输层加上端口号(源端口和目标端口),封装成段,
-
段来到网络层加上IP地址封装成包(这里包是含有目标Ip地址和源Ip地址),
-
毕竟你要知道数据发送到什么地方,但是因为目标IP地址不是同一个网络下的,要发送到其他的网络就要进行默认网关,
-
但是客户端主机最初并不知道默认网关的Mac地址没有办法封装成帧,这个时候就可以用ARP协议进行广播,找到网关IP对应的MAC地址,把包封装成帧,源MAC地址填自己的目标MAC地址填广播地址。
-
假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了
-
交换机收到广播后就帮忙发送出去,人手一份,所以默认网关收到消息查看帧发现发送端的MAC地址在解封它里面的IP地址,就把客户端MAC与IP关联为一台主机,
-
同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,默认网关就这样做出响应,原路返回,发送端就知道默认网关的MAC地址了,
-
现在就可以封装成帧并且发送数据,比特流到了默认网关之后,解封为帧,发现是发给自己的,在解封为包看到目标IP地址是在另一网络中的,就会进行路由转发,最终到达目的网络
-
如果目标的网关知道目标IP地址和MAC地址是哪台主机,封装成帧就可以直接发送过去了。如果不知道可以用ARP广播一下,目标主机收到包确认是自己的IP地址之后,解封查看段可以发现源和目标端口号,用目标端口号给到指定的应用程序,应用程序处理好了之后,就可以按照原的信息作出响应,回去的原理也是一样的。