1.OSI网络参考模型7层(参考:也就是说OSI网络实际中并不使用。)
自上而下为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
2.当今互联网广泛使用的是TCP/IP网络模型(4层),随着人们的不断实践后发现划分5层更加符合实际。
自上而下为:应用层、传输层、网络层、数据链路层。(物理层)
3.OSI模型的目的:解决主机之间的网络通讯。
4.应用层:
假设苹果用软件搭建了个网站,华为想要访问这个网站就需要通过软件应用。
用浏览器访问网站,两个应用具体需要如何进行交互就是应用层的事情了。
应用层并不是说你需要使用什么应用程序,而是应用如何沟通。
常见的应用层协议就是HTTP。
应用层是最接近用户的那一层。
5.物理层:
应用层不过是逻辑上把两个应用连通实际物理上的连通是需要物理层的。
我们要发送出去的数据在计算机里是无数的0和1。(0和1就叫做比特——bit)
物理层就要把这些比特用不同的媒介传输出去。(电,光,其它形式的电磁波来表示和传输信号)
数据从网络接口出去后会经过不同的网络拓扑。(并不知一条线走到底)
因此需要中继器和集线器这样的设备。
6.数据链路层:
信号要去到哪台设备是需要定向的。
在此层中,比特会被封装成帧->数据的名字。
在封装的时候会加上MAC地址。(物理地址)
网卡出厂的时候就有着全球唯一的MAC地址。
二层交换机(为了可以通过MAC地址对不同设备进行数据的传输)
比方说这里有一台交换机,连接多台主机,发送端发送数据的时候,交换机就知道了发送端MAC地址,如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去了,物理地址就是这样一跳一跳地进行传递。
另外因为物理层在传输0和1的时候可能会0变成1或者1变成0,会进行差错检测以及一定的差错纠正。
另外设备之间的传输能力以及接受能力也是个问题很可能这边“喷水”式传输,另一边“夹缝式”接受
因此需要流控制来避免这种不对称。
7.网络层:
互联网是一张大网,如果用MAC物理地址来作为唯一的寻址方法是不科学的。
比如同一个厂的网卡,两张网卡只差一个字母,但是距离相差很远,此时物理地址就很难做出迅速定位,就好比我知道你的名字却不是你在哪找不到你,因此需要IP地址进行寻址和路由选择。
IP(逻辑地址)端到端。
网络层的核心:路由器,地址管理。
包就是网络层里数据的名字,在封装为二层的帧之前就是包。(包被包含在帧里)
路由器根据保利的IP地址进行路由转发。
8.传输层:
如何让数据去到指定的软件服务上,就需要端口号作为地址来定位了。
客户端产生不用的端口号同时访问HTTP端口80也没问题,根据不同的源端口来做出响应就可以了。
在网络层端到端的基础上实现了服务进程到服务进程的传输。
段就是传输层里数据的名字,在封装成三层包之前就是段。(段被包含在包里)
传输层管理两个节点之间数据的传输,负责可靠传输和不可靠传输(TCP和UDP)
TCP允许应用把字节流变成多份段,而不是整个字节数据完整的发送出去。
传输层还有流量控制来确保传输速度,再加上错误控制来进行数据完整的接收。
9.会话层:
比方说登录网站,网站服务会保持你的登录状态不用每次都输入账号密码。(网站服务会管理和控制登录状态)
会话层还负责同步服务。(上次看电影突然停电了,在登录账号的时候就可以自动同步到上次看的时间段)
10.表示层:
负责转换(不同计算机的表示可能不同),也就是编码和解码。
数据往往还需要加密。(HTTPS就会对我们的数据进行加密和解密)
压缩也是这一层负责的。
11.总结:
1.应用层,表示层,会话层的数据统称为应用数据或者应用负载也可以叫上册数据。(报文)
2.
3.客户端发送数据(报文)—>来到传输层,加上端口号(源端口+目标端口),封装成段—>来到网络层,加上IP地址(源IP+目标IP),封装成包(不是同一个网络下的就要经过默认网关【客户机最初不知道默认网关的MAC地址就无法封装成帧】—>ARP协议进行广播,找到网关的IP对应的MAC地址,把包封装成帧(客户端MAC+目标MAC<—广播得到的))
假设现在当前网络有一个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去“人手一份”,所以默认网关收到消息后查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机。
同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧(客户端MAC+网关MAC),默认网关就这样做出响应,这样原路返回,发送端就知道默认网关的MAC地址了。
现在就可以封装成帧<—源MAC+目标MAC{【(报文)客户端口+目标端口—>段】源IP+目标IP—>包},并且发送数据,比特流到了默认网关的时候解封为帧,发现是送给自己的那解封为包,查看到目标IP地址是在另一网络中的就会进行路由转发,最终到达了目的网络,如果目标的网关知道目标IP地址和MAC地址是哪台主机封装成帧,就可以直接发送过去了
如果不知道也还是可以用ARP广播就好了,目标主机收到包确认是自己的IP地址以后解封查看段,可以发现源和目标端口号用目标端口号给到指定的应用程序,应用程序处理好以后就可以按照源的信息做出响应回去的原理也是一样的。