这篇文章是阅读了《图解TCP/IP》之后的读书笔记,纯手打整理的,所以网上不会有其他重复的内容,需要转载时也麻烦告知我,谢谢。
OSI-RM协议体系
通过上图,我们可以一目了然地了解OSI-RM体系中的七层结构,每层的功能,数据格式以及相关的常见协议和技术。
那么为什么我们要设计这样一个协议体系呢?
分层协议体系的设计思路:将网络通信这个复杂的大问题拆分为小问题
- 层与层彼此独立,互不干扰 —— 出现故障方便逐层排查定位
- 对于网络通信系统中的修改影响范围收敛在当前协议所在层中,不会影响到全局
- 相邻层之间通过统一的接口进行交互,如此下层的实现细节对上层屏蔽,上层只需专注于本层逻辑即可
- 通信双方遵守对等通信原理:相同层级才会使用相同类型的协议,彼此才能互相理解并且处理对方的消息
协议层级分类
- 通信子网 - 低三层(物理层/数据链路层/网络层):面向通信
- 定义了如何在网络通信中打通一条数据传输的通道(通过IP和Mac地址进行寻址)
- 对高四层屏蔽了数据通道的细节(数据是如何通过路由器/网桥转发的,传输介质是电磁波还是光缆)
- 资源子网 - 高四层(传输层+会话/表示/应用层):面向用户,定义了端到端之间的用户数据通讯
构建网络平台的网络设备间的通信,比如路由器根据IP转发Packet数据包,仅需要通过低三层
用户间的通讯需要通过所有层,发送端从上到下调用服务,接收端从下到上处理消息
数据封装和协议头
发送数据时,发送端的每一层 (除了物理层)都要添加属于本层的协议头(协议尾),一般包含本层需要的信息及下一层的类型:
- 数据链路层:Dest/Src的MAC地址 + 网络层的协议类型(IP或ARP) + 循环冗余校验(协议尾,用CRC校验数据帧的完整性)
- 网络层:Dest/Src的IP地址+传输层的协议类型(TCP或UDP)
- 传输层:Dest/Src的Port号
接收数据时:逐层解封装,读取本层协议对应的数据进行处理,并根据下一层的类型调用下一层对应的接口进行处理
TCP/IP协议体系
基本概念
- 应用层:OSI的应用层+会话层+显示层
- 传输层:OSI的传输层
- 网络连接层:OSI的网络层
- 网络访问层:OSI的物理层+数据链路层
注1:由于物理层和数据链路层差别较大,所以比较科学合理的方式是将它们分开,即常见的TCP/IP五层协议:应用层,传输层(TCP/UDP),网络层(IP),数据链路层,物理层
注2:TCP/IP协议体系和OSI-RM体系的区别
- OSI-RM体系的主要设计目标为尽可能地适用于所有类型的计算机网络,为一种理想化的结构
- 比如一些公司如Cisco私有的协议也可使用OSI-RM体系,但是并不与Internet兼容
目前的Internet互联网就是基于TCP/IP协议体系结构而形成的世界范围的通信网络
TCP/IP五层结构类比发快递
物理层:负责网络通信的物理传输,类似于各类道路
- 不同的传输介质:电磁波,光缆可以类比于不同类型的道路比如铁路,公路,泥巴路等等
- 物理传输从集线器到主机:类似于从配送站到具体用户的最后一公里配送
数据链路层:负责在局域网内,通过MAC地址进行消息转发
- 局域网类似于城市内 ,通过城市内具体的地址(MAC地址)找到具体的配送站(冲突域的集线器)
网络层:负责跨局域网的传输,通过IP地址进行路由选择和消息转发
- 路由选择类似于通过城市的地址找到下一个市级中转站(路由器) ,通过一个个市级中转站的中转最终到达目标城市
传输层:负责管理端到端之间的可靠数据传输,常见的有TCP和UDP协议
- 类似于快递的任务管理系统,不关心具体的配送细节(通信子网的通信细节),只关心整体用户到用户(端到端)的可靠递送流程
应用层:负责接受用户的应用程序对于网络的调用
- 类似于快递员从用户手中接收快递(报文)准确递送