为什么要分层:
这个就和我们平常写程序一样,高内聚、低耦合。将网络进行分层我们就可以根据每一层的功能分开开发设计,将复杂的网络问题分解为更简单和清晰的小问题,方便设计、实现和标准化。无需在意其他层是如何实现的,再使用时只要调用其接口就好了。
假如某一时刻某一层的技术得到了大幅度进步,此时直接应用就好了,无需考虑其他层。这样也提高的网络设计的灵活性。
有哪些分层模型:
由图可得现在流传着三种模型,分别是OSI七层模型、TCP/IP五层模型和四层模型。
其中七层模型是国际化标准组织ISO为了使全世界不同体系结构的计算机能够互联,提出的模型。但是这个模型过于复杂,再某些层之间功能有些冗余,比较不实用,开发效率不高,所以没有被广泛采用。
而TCP/IP四层模型从结构上很明显的可以看出是OSI七层模型的简化版,但二者的核心是很相似的,虽然七层模型是官方提出,但由于四层模型于七层模型更早投入实际开发,所以现今再实际开发中按照的是四层模型。而七层模型几乎只出现在教科书中。
而此时那个TCP/IP五层协议的由来是七层和四层的结合体,因为四层贴近于开发,不易于理解,而七层又过于复杂,所以目前大多教学说的都是TCP/IP五层模型。
各个层的介绍:
我先说一下啊应用层、表示层和会话层。因为这三个层再TCP/IP模型中属于同一个应用层。
- 应用层:为计算机用户提供服务,因为再这一层就相当于接口了,用户可以之间访问网址调用他所提供的服务了,如http.baidu.com。
- 表示层:进行数据处理,接受到其他端传来的数据,要再这一层进行对数据的处理,让其能够使用。
- 会话层:管理(建立、维护、重连)应用程序之间的会话。两个程序进行数据传输要记录状态,例如session就是这层的应用。
会话层的功能是会话控制和同步,表示层是解决两个系统间交换信息的语法与语义问题,还有数据表示转化(转为主机无关编码),加解密和压缩与解压缩功能。很明显这两层在实际应用中很难保持统一性,应用通常会选择不同的加解密方式,不同的语义和时序,谈不上复用的东西作为协议的一部分自然是没有意义的,所以这两层的功能交给应用开发者作为应用层的一部分功能开发是比较合适的。这些功能可以根据不同的应用需求进行定制和选择。
因此,将这三个层归为一个层的好处是可以让应用开发者有更多的灵活性和自主性,不需要受限于固定的协议和标准。同时,也可以简化协议的复杂性和开销,提高网络的效率和性能。
- 传输层:为两台主机进程之间的通信提供通用的数据传输服务。也就是说两台主机间通过这一层的协议规定了发送端是如何发送数据,接受端要怎么接受数据,并将它还原,再这一层中最常见的协议就是TCP和UDP协议了。
- 数据链路层:再介绍网络层之前我先介绍一下数据链路层,数据链路层就是管理相邻节点之间的通信,因为两个主机一个在中国,一个在俄罗斯,不可能直接就是传输端直接传输数据到接受端,而是通过好多类似于中间节点进行转发。而这一层就是规定相邻节点之间的直接通信的数据传输格式,规则。
- 网络层:这个层路由和寻址(决定数据在网络中游走的路径),因为两节点之间的通信是经过很多节点转发的,此时这个第一个数据就会带着源ip还有目的ip在网络节点中寻找目的主机,这个寻找的过程就是由网络层的协议决定。
- 物理层:用物理手段为数据链路提供支持,给节点间传输比特流(01)
在一开始就只有真正的数据,然后一层层的往下,不断进行包装每一层的协议所需的内容,到了物理层传输。带接受方拿到数据包再根据协议进行拆包,最后拿到真正的数据。进行操作使用