Unity网络开发基础 (2) 网络协议基础

       本文章不作任何商业用途 仅作学习与交流 部分图片来自Unity唐老师

目录

1.虚拟模型

2.实际模型 TCP/IP

3.传输层协议 TCP/UDP

TCP 协议详解

1. 核心机制

2. 头部格式(20 字节最小)

UDP 协议详解

1. 核心特点

2. 头部格式(固定 8 字节)

选择 TCP 或 UDP 的依据

实际应用示例


1.虚拟模型

        OSI 模型是理论框架

层次功能协议 / 技术示例数据单元
应用层为用户提供直接服务(如文件传输、电子邮件、Web 浏览)。HTTP、FTP、SMTP、DNS数据(Data)
表示层处理数据格式转换、加密解密、压缩解压缩。SSL/TLS、ASCII、JPEG数据(Data)
会话层管理通信会话的建立、维护和终止。NetBIOS、RPC数据(Data)
传输层提供端到端的可靠或不可靠传输,确保数据完整性。TCP、UDP段(Segment)
网络层负责路由选择和数据包转发,实现不同网络之间的通信。IP、ICMP、ARP数据包(Packet)
数据链路层处理相邻节点间的数据帧传输,提供错误检测和纠正。Ethernet、PPP、MAC 地址帧(Frame)
物理层定义物理介质(如电缆、光纤)的电气、机械特性,传输比特流。RJ45、IEEE 802.3比特(Bit)

        大概做了什么 

2.实际模型 TCP/IP

        TCP/IP 模型是实际网络通信中广泛使用的协议栈

TCP/IP 模型OSI 模型功能协议 / 技术示例数据单元
应用层应用层、表示层、会话层提供用户服务(如 Web 浏览、邮件)、数据格式处理、会话管理。HTTP、FTP、SMTP、DNS数据(Data)
传输层传输层端到端的数据传输,确保可靠性或效率。TCP、UDP段(Segment)
网络层网络层路由选择和数据包转发,实现跨网络通信。IP、ICMP、ARP数据包(Packet)
网络接口层数据链路层、物理层物理介质的比特流传输,数据帧的组帧与传输。

         每层职能

        其协议

         

3.传输层协议 TCP/UDP

特性TCP(传输控制协议)UDP(用户数据报协议)
连接性面向连接(需三次握手建立连接)无连接(无需建立连接)
可靠性可靠传输(保证顺序、无丢失、无重复)不可靠传输(不保证到达或顺序)
传输方式流式传输(按字节流处理)数据报传输(按独立数据包处理)
头部大小固定 20 字节(最小)固定 8 字节
流量控制支持(通过滑动窗口)不支持
拥塞控制支持(避免网络拥塞)不支持
端口号使用 16 位端口号区分应用同样使用 16 位端口号
典型应用HTTP、HTTPS、SMTP、FTP、SSHDNS、视频流、实时游戏、语音通话(VoI

   

TCP 协议详解

1. 核心机制
  • 三次握手
    建立连接时,客户端和服务器通过 SYNSYN-ACKACK 三个报文确认连接
  • 四次挥手
    关闭连接时,双方通过 FINACKFINACK 四个报文释放资源
  • 滑动窗口
    通过动态调整发送窗口大小实现流量控制,避免接收方过载。
  • 重传机制
    超时未收到确认时,重传丢失的数据包。
2. 头部格式(20 字节最小)
字段描述
源端口号发送方端口(16 位)
目标端口号接收方端口(16 位)
序号数据字节流编号(32 位)
确认号期望接收的下一个字节编号(32 位)
数据偏移头部长度(4 位)
标志位SYN、ACK、FIN、RST 等控制位(9 位)
窗口大小接收方允许的最大数据量(16 位)
校验和检测数据传输错误(16 位)
紧急指针紧急数据位置(16 位,可选)

UDP 协议详解

1. 核心特点
  • 简单高效:无连接、无确认、无重传,适合实时性要求高的场景。
  • 资源消耗低:头部仅 8 字节,处理速度快。
  • 尽最大努力交付:不保证可靠性,但可通过上层协议(如 RTP)补充可靠性。
2. 头部格式(固定 8 字节)
字段描述
源端口号发送方端口(16 位)
目标端口号接收方端口(16 位)
长度UDP 数据报总长度(16 位)
校验和可选的错误检测(16 位)

选择 TCP 或 UDP 的依据

  • 选 TCP
    • 需要可靠性(如文件传输、Web 浏览)。
    • 对延迟不敏感(如邮件发送)。
  • 选 UDP
    • 实时性优先(如视频会议、在线游戏)。
    • 数据量小或可接受少量丢失(如 DNS 查询)。

实际应用示例

  1. 视频通话
    • UDP:低延迟,允许部分数据包丢失(丢包可通过画面模糊补偿)。
  2. 文件下载
    • TCP:确保文件完整无误。
  3. DNS 查询
    • UDP:单次查询无需建立连接,快速响应。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML label 标签使用

点击 <label> 标签通常会使与之关联的表单控件获得焦点或被激活。 通过正确使用 <label> 标签&#xff0c;可以使表单更加友好和易于使用&#xff0c;同时提高整体的可访问性。 基本用法 <label> 标签通过 for 属性与 id 为 username 的 <input> 元素…

JDBC、MyBatis 、MyBatis-Plus面试总结(一)

以下为你整理了一些 MyBatis 和 MyBatis-Plus 中 mapper.xml 相关的常见面试问题及答案&#xff1a; 基础概念类 问题 1&#xff1a;什么是 mapper.xml 文件&#xff0c;它在 MyBatis 中有什么作用&#xff1f; 答案&#xff1a;mapper.xml 文件是 MyBatis 中用于定义 SQL 语…

GCC RISCV 后端 -- GCC Passes 注释

在前面文章提到&#xff0c;当GCC 前端完成对C源代码解析完成后&#xff0c;就会使用 处理过程&#xff08;Passes&#xff09;机制&#xff0c;通过一系列的处理过程&#xff0c;将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示&#xff1a; 此…

基于Python实现的智能旅游推荐系统(Django)

基于Python实现的智能旅游推荐系统(Django) 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat 系统功能实现 总体设计 系统实现 系统首页模块 统首页页面主要包括首页&#xff0c;旅游资讯&#xff0c;景点信息…

鸿蒙全栈开发 D2

课程目标 掌握ArkTS基础语法与核心概念理解声明式UI开发范式能独立开发简单鸿蒙应用组件建立规范的代码编写习惯 第一部分&#xff1a;初识ArkTS 1.1 语言全景认知 #mermaid-svg-V5mnjQN3DAHkfoBo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…

【YashanDB认证】yashandb23.3.1 个人版单机部署安装实践

YCA报名链接如下: YashanDB|崖山数据库系统YashanDB学习中心-YCA认证详情 目前免费 主要参考文档&#xff1a; 单机&#xff08;主备&#xff09;部署 | YashanDB Doc 另外还参考摩天轮文章&#xff1a; YashanDB 23.2.9.101 企业版安装步骤抢先看&#xff01; - 墨天轮 …

【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】

闲话系列&#xff1a;每日一题&#xff0c;秃头有我&#xff0c;Hello&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;,我是IF‘Maxue&#xff0c;欢迎大佬们来参观我写的蓝桥杯系列&#xff0c;我好久没有更新博客了&#xff0c;因为up猪我寒假用自己的劳动换了…

爬虫Incapsula reese84加密案例:Etihad航空

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 1.js运行 atob(‘aHR0cHM6Ly93d3cuZXRpaGFkLmNvbS96aC1jbi8=’) 拿到网址,F12打开调试工具,随便搜索航班,切换到network搜索一个时间点可以找…

缓存雪崩 缓存击穿 缓存穿透

1. redis使用场景-缓存-缓存穿透 在实际开发中&#xff0c;Redis 被广泛应用于缓存&#xff0c;以提高系统性能和响应速度。然而&#xff0c;在使用缓存时&#xff0c;需要注意一些问题&#xff0c;其中 缓存穿透 是一个常见且需要重点关注的场景。 什么是缓存穿透 ● 缓存穿…

【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文

🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势🍋:超分辨的MLKA模块对小目标和模糊目标涨点很明显 🍋适用场景🍋:小目标检测、模糊目标检测等 🍋思路…

better-sqlite3之exec方法

在 better-sqlite3 中&#xff0c;.exec() 方法用于执行包含多个 SQL 语句的字符串。与预编译语句相比&#xff0c;这种方法性能较差且安全性较低&#xff0c;但有时它是必要的&#xff0c;特别是当你需要从外部文件&#xff08;如 SQL 脚本&#xff09;中执行多个 SQL 语句时。…

电路基础:【1】PN结二极管制作电桥点亮LED灯

第一章&#xff1a;PN结二极管制作电桥点亮LED灯 文章目录 第一章&#xff1a;PN结二极管制作电桥点亮LED灯前言一、电路原理二、电路图与元器件1.电路图 做实验总结 前言 在本章中&#xff0c;我们将探讨如何通过PN结二极管制作电桥电路&#xff0c;并利用该电路点亮LED灯。L…

XHR请求解密:抓取动态生成数据的方法

在如今动态页面大行其道的时代&#xff0c;传统的静态页面爬虫已无法满足数据采集需求。尤其是在目标网站通过XHR&#xff08;XMLHttpRequest&#xff09;动态加载数据的情况下&#xff0c;如何精准解密XHR请求、捕获动态生成的数据成为关键技术难题。本文将深入剖析XHR请求解密…

机器学习数学基础:42.AMOS 结构方程模型(SEM)分析的系统流程

该流程图完整呈现了 AMOS 结构方程模型&#xff08;SEM&#xff09;分析的系统流程&#xff0c;具体步骤及内涵如下&#xff1a; 1. 模型设定 基于理论基础或研究假设&#xff0c;构建结构方程模型的初始框架&#xff0c;明确潜变量与显变量的关系、测量模型&#xff08;因子…

以太网通讯

接口开发笔记-WebApi-CSDN博客 以太网常用通讯协议 1、modbus tcp using EasyModbus; using System;class Program {static void Main(string[] args){// 创建Modbus客户端实例ModbusClient modbusClient new ModbusClient("192.168.1.100"); // IP地址modbusCli…

Arcgis中添加脚本工具箱

文章目录 准备资料1、打开arcmap2、找到目录窗口3、复制粘贴工具箱的路径4、添加或者确认python脚本路径准备资料 (1)工具箱 (2)python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意:脚本内容和路径…

TDengine SQL查询语法

简介 TDengine 中的查询 SQL 基本遵循 MYSQL 的查询语法&#xff0c;大部分查询都是通过超级表按时间维度进行的各种查询。 TDengine 时序数据库以时间为主索引列进行数据组织排序及存储&#xff0c;同时按存储块做了预计算&#xff0c;所以在无普通列过滤的 SQL 查询语句中聚…

Apache nifi demo 实验

Apache nifi 是个数据流系统&#xff0c;可以通过配置 自定义的流程来实现数据的转换。 比如可以配置一个流程&#xff0c;读取数据库里的数据&#xff0c;再转换&#xff0c;最后保存到本地文件。 这样可以来实现一些数据转换的操作&#xff0c;而不用特地编写程序来导入导出。…

javascript一些原生方法记录

Element.scrollIntoView() Element 接口的 scrollIntoView() 方法会滚动元素的父容器&#xff0c;使被调用 scrollIntoView() 的元素对用户可见。 structuredClone() 方法 Window 接口的 structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝。

记一次ScopeSentry搭建

介绍 Scope Sentry是一款具有资产测绘、子域名枚举、信息泄露检测、漏洞扫描、目录扫描、子域名接管、爬虫、页面监控功能的工具&#xff0c;通过构建多个节点&#xff0c;自由选择节点运行扫描任务。当出现新漏洞时可以快速排查关注资产是否存在相关组件。 目前功能 插件系…