网络通信与TCP/IP五层模型


文章目录
一、网络通信
1.通信标识
1.1五元组
源IP、目的IP、源端口、目的端口、协议类型 确定一次唯一的网络通信
唯一性
每个Socket对应连接一个唯一的五元组:
”new Socket(目的IP, 目的端口)、源IP-本机、源端口-操作系统空闲分配、创建TCP连接“ 是一次唯一通信
1.1.1IP地址
标识设备在网络中的唯一位置;IPv4格式 由点分4个 8bit位的十进制数 组成
1.1.2端口号
区分应用,标识 应用单层占据的网络通信端点
1.1.3协议类型
标识载荷 由上层哪个协议遵守而成的数据包
一次单类:
在传输层 有无连接的传输方式 分隔单开在两类通信中
1.2MAC地址
MAC地址是网络硬件的 唯一标识符
2.网络范围
2.1局广域网
局域网:单个路由器内部创建的网络
广域网:多个路由器连接组合的网络
2.2本地子网
IP能本地访问的本地子网的网络地址 = IPv4 & 网1主0
网1主0
2.2.1子网掩码
采用IPv4格式 整体的32位呈 先网络前缀的连续1-对应划分IP的网络位、后接口标识符的连续0-对应划分IP的主机位
2.2.2前缀长度
/网络位 的位数划分IP的网络位 与剩下的主机位
2.3默认网关
默认网关 访问的本地子网 重合叠在 IP设备的本地子网内,共地地发接设备IP,是用于帮转的接壤出口IP
3.通信交接
两个IP出机的本地子网重合互通 —> 直接通信
两个IP出机的本地子网没有重合 —> 网关转发
3.1共地发接
IP出机访问共地一发一接
3.2接力转发
IP设备 自访最广本地 地通信驻内网关访他的最广本地 地转发
4.网络设备
4.1网线、光纤、WiFi
在 物理层传输物理信号
4.2网卡
在 物理层+数据链路层转化信号:
转化物理信号与二进制数据
| 1 | 0 |
|---|---|
| 高电平 | 低电平 |
| 高频光 | 低频光 |
| 高频电磁波 | 低频电磁波 |
4.3交换机
在 物理层+数据链路层二层转发:
物理层接收物理信号转化成帧 and 数据链路层 分用校验、封装填装设置的目标MAC
4.4路由器
在 物理层+数据链路层+网络层三层转发:
物理层 接收物理信号转化成帧 and 数据链路层 分用校验 and 网络层 分用不拆读取目的IP 路由下一跳IP 解析下一站MAC
4.5防火墙
在 传输层安全防护:
按规则过滤上传的某源端口访问、下传的某目的IP前往
二、协议分层
1.各层作用
| 应用层 | HTTP报文->贴说明书的货物 |
| 传输层 | 端口号->单类货物间的进入门号;协议类型->顺丰/中通 |
| 网络层 | IP地址->发往的站点地址 |
| 数据链路层 | MAC地址->与快递员的交接地点 |
| 物理层 | 物理信号->司机的运输传送 |
2.分层特点
| 任务多位 | 单位轻捷 |
| 单位铺蚀,扔传交流 | 单位互独 |
3.行动轨迹
数据包 = 头部 + 载荷,头部置理载荷,载荷装载现作数据
← 主数据流程并行辅助控制流程 →
4.数据演化
网卡 反序列化
物理信号 <—> 二进制数据 ⇌ 数据包参数
转化 序列化
数据包参数 序列化成 头部的二进制数据封装进 二进制数组
头部的二进制数据 反序列化成 数据包参数分用出 二进制数组
参数多配,二进制数组还薄
参数装↓裹数据包 拆数据包↑参数卸
参数剩少,二进制数组已厚
5.TCP/IP五层模型
5.1物理层
转化物理信号与二进制数据
5.1.1封装
5.1.1.1二进制帧转物理信号
- 网卡接收指针指向的数据链路层数据包的字节数组
- 拆成每字节8位的二进制比特流
- 01转化成能在介质中运送的电子/光/电磁波的物理信号
- 送网线/光纤/WiFI的硬件后传输
5.1.2分用
5.1.2.1物理信号转二进制帧
- 网卡接收物理信号
- 解码还原成二进制帧
5.2数据链路层
局域网内前访设备、损坏检测
5.2.1协议
以太网有线传输、802.11无线传输
5.2.2数据包
| 帧 = 帧头 + 网络层数据包 + 帧尾 | |
|---|---|
| 以太网帧头 | 源+目的MAC地址、网络层IP/ARP协议类型 |
| 802.11帧头 | 帧控制字段、持续时间、4个MAC地址、序号控制 |
| 网络层数据包 | IP包/ARP报文 |
| 帧尾 | 校验和 |
5.2.3封装
5.2.3.1填装
按照以太网协议:
- 对以太网帧头填装传下来的源MAC,目的MAC、协议类型
- 对以太网帧尾填装校验和
5.2.4分用
5.2.4.1校验
- 校验帧尾的校验和确认数据有无传输损坏,校验和出错则上传网络层 查看载荷协议类型 如果是TCP就发起ARP重传请求
- 对比帧头的MAC地址 确认数据有无发对
5.3网络层
局域网内瞄选设备、网络诊断
5.3.1协议
IP标识主机、ARP解得MAC、ICMP网络诊断
5.3.2数据包
| IP包 = IP包头 + 传输层数据包 | |
|---|---|
| IP包头 | 版本、首部长度、源+目的IP、TTL生存时间、传输层TCP/UDP协议类型、校验和 |
| 传输层数据包 | TCP段/UDP报文 |
| ARP报文 = ARP报头 + ARP数据体 | |
|---|---|
| ARP报头 | 硬件类型、协议类型、硬件地址长度、协议地址长度、请求/响应操作类型 |
| ARP数据体 | 源+目的IP、源+目的MAC地址 |
5.3.3封装
5.3.3.1填装
按照IP协议 对IP报头填装传下来的源IP,目的IP、TTL、协议类型
5.3.3.2路由
- 按照IP协议 不拆地读取IP报头的目的IP
- 路由本地路由表匹配出下一跳IP
- 按照ARP协议 解析下一跳IP出目的MAC
5.3.3.3传参
解析出的目的MAC、本机网卡的MAC为源MAC下传直到数据链路层
5.3.3.4拆片
MTU 限制传输层数据包作载荷的长度 会拆分IP分片
5.4传输层
设备里照选应用、建立传输
5.4.1协议
TCP面向连接的可靠传输、UDP无连接的不可靠传输
5.4.2数据包
| TCP段/UDP报 = 包头 + 应用层报文 | |
|---|---|
| TCP包头 | 源+目的端口号、序列号、确认号、控制位、窗口大小、校验和 |
| UDP包头 | 源+目的端口号、报文总长度、校验和 |
| 应用层报文 | HTTP/HTTPS/FTP/MySQL协议报文 |
5.4.3封装
5.4.3.1建立传输
- 调用SocketAPI接收应用层数据包 建立TCP的有确认机制、有序、有连接、数据完整、速度慢的可靠传输(文件传输、聊天、HTTP请求、数据库连接)
- 调用DatagramSocketAPI接收应用层数据包 建立UDP的无确认机制、无序、无连接、数据残缺、速度快的不可靠传输(视频、语言、直播)
5.4.3.2填装
按照TCP协议 对TCP报头填装系统分配空闲端口的源端口、下传的目的端口、序列号、确认号
5.4.3.3TCP拆段
TCP 限制应用层报文作载荷在MSS最大段长度内拆分TCP分段 以避免IP分片
(UDP 一次接收完整应用层报文 付交给IP分片)
5.4.4分用
5.4.4.1校验
- TCP保证可靠:
下传参数指令 原路径反发源IP填本机、目的IP填对方的ACK确认报文 保证数据的可靠传输 - 序列号:
检查序列号正确无数据丢失
5.4.4.2照交
根据目的端口 把载荷交给对应应用
5.5应用层
应用里处置数据
5.5.1协议
| HTTP/HTTPS | 网页访问+接口调用 |
| DNS | 解析域名 |
| FTP | 文件传输 |
| SMTP/POP3 | 邮件发送+接收 |
| MySQL协议 | 数据库连接 |
| 应用内部协议 | 构造结构化数据 |
5.5.2数据包
应用层报文 = 处置报头 + 结构化数据(载荷)
| HTTP请求报文 = HTTP请求头(请求行+请求头部字段) + 空行分隔符 + HTTP请求体 | |
|---|---|
| HTTP请求行 | 请求方法、请求URL、HTTP版本 |
| HTTP请求体 | 可选的表单、JSON、文件等业务数据 |
| HTTP响应报文 = HTTP响应头(状态行+响应头部字段)+空行分隔符+HTTP响应体 | |
|---|---|
| HTTP状态行 | 状态码、状态描述、HTTP版本 |
| HTTP响应体 | 必选的HTML页面、JSON、图片、视频等返回的业务数据 |
5.5.3封装
5.3.3.1填装
- 按照应用内部协议构造结构化数据 填装载荷
- 按照HTTP协议构造网页访问参数 填装报头
5.3.3.2传参
- 按照DNS协议解析域名出目的IP、操作系统配置的本机内网IP为源IP下传直到网络层
- 在应用里输入的目的端口下传直到传输层
