一、分层模型
1.1 分层的思想
分层模型是一种用于开发网络协议的设计方法。而分享思想本质上讲就是把节点间通信这个复杂问题分成若干相对
简单的问题逐一解决每个问题对应一层。每一层实现一定的功能,相互协作即可实现数据通信这个复杂任务。
1.2 OSI参考模型与TCP/IP协议簇
IOS七层参考模型
- 国际标准化组织(ISO)
- 1984年颁布了开放系统互联(OSI)参考模型
- 一个开放式体系结构,将网络分为七层
分层 | 功能 |
---|---|
应用层 | 网络服务与最终用户的一个接口 |
表示层 | 数据的表示、安全、压缩 |
会话层 | 建立、管理、中止会话 |
传输层 | 定义传输数据的协议端口号,以及流量控制和差错校检 |
网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
数据链路层 | 建立逻辑链接、进行硬件地址寻址、差错校验等功能 |
物理层 | 建立、维护、断开物理链接 |
口诀:应、表、会、传、网、数、物
(注:第一层是物理层、第二层是数据链路层……第七层是应用层)
应用层:网络服务与最终用户的一个接口
人机交互窗口,把人的语言输入到计算机当中。例如,在微信对话框输入你想发的内容
在应用层,TCP/IP定义了许多协议,如HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)等。
表示层:数据的表示、安全、压缩
将接收到的数据翻译成二进制数组成的计算机语言,并对数据进行压缩和解压、数据加密和解密等工作
会话层:建立、管理、中止会话
管理是否允许不同机器上的用户之间建立会话链接关系
传输层:定义传输数据的协议端口号,以及流控和差错校验
将上层数据分片并加上端口号封装成数据段,或通过对报文头中端口识别,实现网络中不同主机上的用户进程之间的数据通信
传统上,TCP/IP有两个传输层协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP协议传输更加稳定可靠,UDP协议传输效率更高。
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择
将上层数据加是哪个源和目的方的逻辑(IP)地址封装成数据包,实现数据从源端到目的端的传输,建立数据链路,当发现数据错误是,可以重传数据帧。
IP是主要的协议,其余四个ARP(地址解析协议)/RARP(逆地址解析协议)/ICMP(国际控制报文协议)/IGMP(国际组管理协议)都是围绕这个展开的。
数据链路层:建立逻辑链接、进行硬件地址寻址、差错校验等功能
将上层数据加上源和目的方的物理(MAC)地址封装成数据帧,MAC地址是用来表示网卡的物理地址
物理层:建立、维护、断开物理链接
报文头不合上层数据信息都是由二进制数组成的,物理层将这些二进制数字组成的比特流转换成电信号在网络中传输
TCP/IP参考模型
TCP/IP五层模型对应的一些常见协议
二、数据传输过程
2.1 数据封装与解封装过程
2.1.1 数据封装过程
当上层数据到达传输层的时候,传输层会对上层数据进行分片、封装。封装成一个TCP的头部(封装成叫数据段),TCP头部包含源端口和目标端口。
数据包会继续存到网络层,到网络层会在原有的基础上面再去封装一个IP头部(封装成叫数据包),IP头部包含源地址和目标地址。
数据段会继续存到数据链路层,到数据链路层会在原有的基础上再去封装一个MAC头部(封装成叫数据帧),MAC头部包含源MAC地址和目标MAC地址。
数据帧会继续存到物理层,到物理层后会变成“比特(Bits)流”。
具体如下图:
2.1.2数据解封装过程
在物理层先将比特流转换成二进制数据,并将数据送到数据链路层;
在数据链路层查看MAC地址,如果数据报文的目标MAC地址是自己的MAC,数据的MAC头部就会被拆掉,并将剩余的数据送至上一层(如果目标MAC不是自己的,终端设备就会丢弃数据);
网络层与数据链层路层类似,网络层将核实目标IP地址是否与自己的IP地址相同,从而确定是否送到上一层(是就拆掉IP头部,否就丢弃数据);
传输层首先要根据TCP头部判断数据段送往哪个应用层协议或应用程序,然后将之前被分组的数据段重组,再送往应用层;
在应用层这些二进制数据将会还原成发送者所传输的最原始信息;
具体如下图: