OSI模型以及各层的作用
开放式系统互联参考模型,简称OSI模型,将进程间的通信抽象出了层的概率,定义了网络互连的七层架构,其实,不论是OSI参考模型还是TCP/IP模型,分层的本质是通过分离关注点而让问题简单化。
- 物理层:参考模型中的最底层,物理层的主要功能是利用传输介质(网线、无线电波)为数据链路层提供物理联接,负责数据流的物理传输工作。物理层传输的基本单位是比特流,即0和1
- 数据链路层:将比特组合成字节,再将字节组合成帧,基于mac进行物理地址寻址
- 网络层:把从传输层接收到的数据报文封装成包再向下传送到数据链路层,并通过路由选择算法为数据包选择最适当的路径
- 传输层:实现两个用户进程间端到端的可靠通信,在数据传输的过程中可能会出现各种异常,比如数据包丢失、数据损坏等等,传输层就承担了保证数据传输正确的功能,如流量控制、数据重发等,主要协议有TCP、UDP
- 会话层:建立、维护、管理会话连接
- 表示层:对数据进行编解码、解压缩、加解密
- 应用层:面向用户的一层,也可视为为用户提供常用的应用程序,例如电子邮件,上网浏览等网络服务都是应用层程序。
OSI模型的传输过程
从发送端来看数据的封装过程自顶向下,每层都会在原始数据前添加一串属于自己的协议头,数据经过以上从上向下的七层框架的加工,一串0、1组成的二进制流诞生了,根据物理层是光纤、电缆、还是空气,二进制流转化为光信号、电信号、电磁波信号在物理介质(物理层)里传输,经过若干个中继交换机(链路层)的交换、经过若干个中继路由器(网络层)的转发,最终到达数据的终点后开始进行数据的解封装,每层剥离了相应的协议头后向上传递,最终到达应用层。
举个发送邮件的例子
- 应用层:首先需要选择邮件应用比如163邮箱,或者qq邮箱,outlook等邮件应用
- 表示层:邮件编辑好后,点击发送,这时候它会将需要传输的数据进行编码,加密,压缩等操作
- 会话层:数据准备好后,邮件马上就需要进行发送,这里实际上就是建立了一个邮件发送者何接收者之间的会话,它是一个概念性质的,比如发送后如果执行撤销可以中断会话
- 传输层:传输层会对五层数据包进行进一步的封装,为该数据包添加一个TCP/UDP头部,其中含有源端口号和目的端口号,源端口号就是邮件应用的端口号
- 网络层:拿到传输层的数据包后,网络层会对该数据包添加一个IP包头,其中包含了目的地网络地址,用于指示沿途的路由器,再发送出去
- 数据链路层:当上三层的数据包到了数据链路层,同样的给数据包加上头部(MAC地址)和尾部(FCS)封装成帧
- 物理层:二层的数据帧包会被转化成一段连续的比特流,然后以电脉冲的形式传输到指定的交换机(数据链路层)
- 在传输过程中可能会遇到很多的中间节点,不断的经过路由器,交换机进行中转,最终到达接收端,经过层层解封装后展示在对方的收件箱。 ![image-20200915193326015]
TCP/IP 参考模型
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,TCP/IP协议是协议栈的统称。对互联网互联网中各部分进行通信的标准和方法进行了规定。IP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。因此,有时也称 TCP/IP 为网际协议群。
根据TCP/IP协议归纳总结制定了TCP/IP参考模型,将OSI参考模型简化成了4层,将会话层,表示层,应用层合并成了应用层。数据链路层和物理层合并成了网络接口层。
TCP/IP 协议的报文
我们知道数据在向下传输的过程中,每一层都会上层的原始数据前添加一串属于自己的协议头,所以每层协议的关键就是协议头的组成内容
数据链路层:数据链路层数据一般称作为以太帧常见的报文如下
FCS帧校验序列:通过循环冗余算法生成的帧检验序列(FCS),用来进行差错检验,保证数据的一致性,简单理解类似MD5校验,先根据算法对数据生成校验码,校验时对收到的数据用同样的算法进行校验比对,如果不一致说明数据有丢失或者出错。
IP:包含源ip地址和,目的ip地址
TCP:包含源主机端口号,目的主机端口号
持续更新。。。