@乐 的学习资料
网络工程(hcia)笔记3
数据的封装与解封装
OSI / RM —— 开放式系统互连参考模型
由国际化标准组织(ISO)发布的用于参考的标准模型
意义:
- 降低网络复杂度,便于学习
- 标准化
- 解耦,弱化各层次之间的联系。
类似于我们在前面给PC的通信过程所划分的五个层次
层级 | 名称 |
---|---|
第五层 | 应用层 |
第四层 | 表示层 |
第三层 | 网络层 |
第二层 | 介质访问控制层 |
第一层 | 物理层 |
OSI 七层模型
在 OSI / RM 中,该过程被划分为了七层 —— OSI 七层模型
应用层 | 连接用户与服务或应用 | 抽象语言 => 编码 |
---|---|---|
表示层 | 数据的转换,加密,压缩 | 编码 => 二进制 |
会话层 | 建立,维护 应用与服务器之间的联系(会话) | |
传输层 | 实现端到端(应用与应用)的传输,定义协议和端口号 | 封装端口号 |
网络层 | 基于IP地址进行逻辑寻址(根据源目IP找路径建联) | 封装源目IP |
数据链路层(介质访问控制层(MAC)+逻辑链路控制层(LLC)) | 控制物理层进行实际的数据传输 | 二进制 => 电信号 |
物理层 | 进行实际的数据传输 | 电信号传输 |
知名端口号
协议 | 端口号 |
---|---|
HTTP(超文本传输协议) | 80 |
HTTPS(HTTP+SSL/TSL(网络安全协议)安全传输协议) | 443 |
DHCP{动态主机配置协议) | 67 68 |
DNS(域名解析系统) | 53 |
FTP{文件传输协议) | 20 21 |
TFTP(简单文件传输协议) | 69 |
Telnet{远程控制协议) | 23 |
SSL(安全远程控制协议)Telnet+SSL/TSL | 22 |
TCP/IP参考模型(因特网使用的参考模型)
TCP/IP协议是多种协议的统称,是一个协议簇。其中以TCP协议和IP协议最为重要,所以称这个协议簇为TCP/IP协议
虽然TCP/IP模型和OSI参考模型分层略有不同,但实际上的每层功能是一样的,因此不做过多介绍。
PDU(协议数据单元)
对于每一层的数据,我们都需要不同的单位,以便于我们去分辨和称呼,因此,我们引入== PDU(协议数据单元)这个概念
TCP/IP参考模型 | PDU |
---|---|
应用层 | 报文 |
传输层 | 数据段 |
网络层 | 数据包 |
数据链路层 | 数据帧 |
物理层 | 比特流 |
封装与解封装
我们知道,数据的传输是按照我们划分的层,去逐层传递的,它在每一层中都会被做不同的处理,并被加入各层的一些标志性信息,最后完成数据的打包,我们称该过程为——封装
反之,打包好的信息被接收后会逐层拆封,我们称之为——解封装
封装
解封装
我们知道,TCP/IP模型本质上一个协议簇,那么,在数据的封装与解封装过程中,PC只是做出了封装与解封装的预指令,实际上来执行的是每层的一个个协议(这不是我们在白纸上看到的文件,而是一个类似于应用,具体去提供服务的东西),不同的传输类型 不同形式的数据,使用不同的协议
协议
层 | 协议 |
---|---|
传输层 | TCP, UDP协议 |
网络层 | IP协议 |
数据链路层 | 以太网协议 |
以太网协议
以太网Ⅱ型帧(封装后数据帧的结构)
Preamble | 前导符 |
---|---|
Type | 上层协议类型(即该用何种协议解封装) |
FCS | 帧检验序列,检验数据的完整性 |
TCP协议 —— 传输控制协议
TCP协议头部(数据的头)
第一行 | 封装源目端口 |
---|---|
序号 | TCP传输时会将数据分段,序号用于依次标识每个字节,以便于拆封的数据重组 |
确认序号 | 回复时使用,例:收到分段后序号为0~300的数据段,回复确认序号为301的数据段,表示我已收到,你继续发剩下的 |
首部长度 | 标识头部的长度,为”选项“而存在的,不看选项,头部固定长度为20个字节 |
保留位 | 保留,无用位 |
URG | 紧急指针标志位,该为置1,该数据加急处理 |
ACK | 确认标志位 |
PSH | 该位置1,接收该数据的应用应立即清空缓存区 |
RST | 该位置1,直接断开连接,重新建连 |
SYN | 该位置1,请求建联 |
FIN | 该位置1. 请求断连 |
窗口 | 实现流控,标注自己的缓存大小,对端会据此控制数据的发送速度 |
校验和 | (协议必备)用各自独特的算法来对数据段的长度求和,检验数据完整性 |
紧急指针 | 指针偏移量 |
三次握手,四次挥手
三次握手
注:两次不可靠,三次没必要
四次挥手
不一定是四次挥手
UDP协议 —— 用户数据协议
UDP协议头部
只管发完,不做检验
TCP 和 UDP 的比较
TCP | UDP |
---|---|
建联后传输(面向连接) | 不建联 |
实现流控 | |
可靠 | 不可靠 |
数据分段 | 数据不分段 |
占的多,传得慢 | 恰恰相反 |
IP协议 —— 因特网协议
IP协议首部
类比于TCP协议学习
- 4位版本:确定IP v6还是IP v4
- TOS:”3位优先级权字段(现已被忽略),4位TOS字段和1位保留字段(必须置0).4位TOS字段分别表示:最小延迟,最大吞吐量、最高可靠性和最小费用,其中最多1个能置为1。“
- TTL:生存时间,给定一个初始值,该数据包每被路由器转发一次,TTL - 1 当TTL减到0时,路由器不再转发该数据,而会直接丢弃
MTU:最大传输单元,即数据链路层最大可承载字节数=1500字节
MSS: 最大传输段,真正在传输层传输的最大数据(排除各种协议的头部)= 1460 = 1500 - 20(TCP头部) - 20(IP头部)
4. 16位标识:MTU的存在使得数据包的传输的字节数受限,所以我们往往需要继续对数据包进行分片,减少每个数据包的字节长度,此时IP的16位标识就相当于TCP分段时的标识.
5. 三位标识位:
第一位:reserved bit 保留位,不启用
第二位:don’t fragment 不分片 – 标识这个数据包是否被分片,置 1 表示未分片,置 0 表示分片
第三位:more fragment 更多片 – 表示如果分片,这是否是最后一片,置 1 表示后面还有,置 0 表示这是最后一片
6. 13 位片偏移(fragment offset): 通过前两个标识,只能将一个数据包分出的片集结起来,但是没办法还原成完整的数据包,所以这一位会标识每个分片后的数据包偏移量,比如分片后的第一个数据包,偏移量为 0,第二个偏移量是第一个的字节数+1 这样就能够根据偏移量拼成完整的数据包