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

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

文章目录

一、网络通信

1.通信标识

1.1五元组

1.1.1IP地址

1.1.2端口号

1.1.3协议类型

1.2MAC地址

2.网络范围

2.1局广域网

2.2本地子网

网1主0

2.2.1子网掩码

2.2.2前缀长度

2.3默认网关

3.通信交接

3.1共地发接

3.2接力转发

4.网络设备

4.1网线、光纤、WiFi

4.2网卡

4.3交换机

4.4路由器

4.5防火墙

二、协议分层

1.各层作用

2.分层特点

3.行动轨迹

4.数据演化

5.TCP/IP五层模型

5.1物理层

5.1.1封装

5.1.1.1二进制帧转物理信号

5.1.2分用

5.1.2.1物理信号转二进制帧

5.2数据链路层

5.2.1协议

5.2.2数据包

5.2.3封装

5.2.3.1填装

5.2.4分用

5.2.4.1校验

5.3网络层

5.3.1协议

5.3.2数据包

5.3.3封装

5.3.3.1填装

5.3.3.2路由

5.3.3.3传参

5.3.3.4拆片

5.4传输层

5.4.1协议

5.4.2数据包

5.4.3封装

5.4.3.1建立传输

5.4.3.2填装

5.4.3.3TCP拆段

5.4.4分用

5.4.4.1校验

5.4.4.2照交

5.5应用层

5.5.1协议

5.5.2数据包

5.5.3封装

5.3.3.1填装

5.3.3.2传参


一、网络通信

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网卡

物理层+数据链路层转化信号

转化物理信号与二进制数据

10
高电平低电平
高频光低频光
高频电磁波低频电磁波

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二进制帧转物理信号
  1. 网卡接收指针指向的数据链路层数据包的字节数组
  2. 拆成每字节8位的二进制比特流
  3. 01转化成能在介质中运送的电子/光/电磁波的物理信号
  4. 网线/光纤/WiFI的硬件后传输

5.1.2分用
5.1.2.1物理信号转二进制帧
  1. 网卡接收物理信号
  2. 解码还原成二进制帧

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填装

按照以太网协议:

  1. 对以太网帧头填装传下来源MAC,目的MAC协议类型
  2. 对以太网帧尾填装校验和

5.2.4分用
5.2.4.1校验
  1. 校验帧尾的校验和确认数据有无传输损坏,校验和出错则上传网络层 查看载荷协议类型 如果是TCP就发起ARP重传请求
  2. 对比帧头的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路由
  1. 按照IP协议 不拆地读取IP报头的目的IP
  2. 路由本地路由表匹配出下一跳IP
  3. 按照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校验
  1. TCP保证可靠:
    下传参数指令 原路径反发源IP填本机目的IP填对方ACK确认报文 保证数据的可靠传输
  2. 序列号:
    检查序列号正确无数据丢失

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填装
  1. 按照应用内部协议构造结构化数据 填装载荷
  2. 按照HTTP协议构造网页访问参数 填装报头

5.3.3.2传参
  1. 按照DNS协议解析域名目的IP操作系统配置的本机内网IP为源IP下传直到网络层
  2. 应用里输入目的端口下传直到传输层

Read more

【C++】踏上C++学习之旅(八):深入“类和对象“世界,掌握编程的黄金法则(三)(内含运算符重载和拷贝构造函数)

【C++】踏上C++学习之旅(八):深入“类和对象“世界,掌握编程的黄金法则(三)(内含运算符重载和拷贝构造函数)

文章目录 * 前言 * 1. 拷贝构造函数 * 1.1 为什么需要拷贝构造函数? * 1.2 拷贝构造函数的"概念"(内含语法) * 1.3 拷贝构造函数的"特性" * 2. 赋值运算符重载 * 2.1 运算符重载 * 2.2 赋值运算符重载 * 2.3 前置++和后置++重载 前言 在之前的文章中,相信大家已经对"类"这个面向对象的语法以及一些基本的用法已经掌握了,那么在本文中将会带着大家继续解读,"类和对象"世界别致的风景——“拷贝构造函数"和"赋值运算符重载”

By Ne0inhk
《 C++ 点滴漫谈: 二十七 》告别低效!C++ 输入输出操作你真的会用吗?

《 C++ 点滴漫谈: 二十七 》告别低效!C++ 输入输出操作你真的会用吗?

摘要 C++ 的输入输出系统是程序开发中的重要组成部分,涵盖数据交互、文件操作、格式化输出等多方面内容。本篇博客全面解析了 C++ 输入输出的基础知识,包括标准输入输出流的操作方法、文件输入输出的灵活应用、格式化工具的精确控制,以及异常处理与错误管理的关键技术。此外,我们深入探讨了高级输入输出技巧,如多线程日志记录、自定义流缓冲区等,并通过实际案例总结了最佳实践和常见问题的解决方法。这篇博客不仅适合初学者理解 C++ 输入输出的核心概念,也为经验开发者提供了优化性能和提升代码质量的实用指南。通过本博客,读者将全面掌握 C++ 输入输出的各个方面,构建稳健、高效的程序。 1、引言 在计算机编程中,输入与输出(Input/Output, I/O) 是程序与外界交互的桥梁,是几乎所有程序中不可或缺的一部分。从用户输入数据到程序处理,再到将结果输出给用户,这一过程在任何应用场景中都起着关键作用。在 C++ 中,输入输出不仅仅是数据的传递,更是体现语言强大功能和灵活性的关键领域之一。 与 C 语言中传统的 printf

By Ne0inhk
C++——stack与queue

C++——stack与queue

目录 引言 容器适配器 一、什么是容器适配器 二、底层容器的选择 标准库中的stack 一、stack的基本概念 二、stack的常用接口 三、stack的模拟实现 标准库中的queue 一、queue的基本概念 二、queue的常用接口 三、queue的模拟实现 标准库中的priority_queue 一、priority_queue的基本概念 二、priority_queue的常用接口 三、priority_queue的使用 结束语 引言 在之前的博客中,我们学习了栈(Stack)与队列(Queue)并尝试使用C语言实现其功能,同时我们在C++的学习中对STL中的string vector等容器也进行了学习,接下来我们来学习C++中的栈和队列。 可以先看看这两篇文章,更有助于我们学习: 数据结构——顺序栈和链式栈 数据结构—

By Ne0inhk