FPGA之tcp/udp

news2024/9/20 18:34:32

在调试以太网的过程中,考虑了vivado IP配置(管脚、reset等),SDK中PHY芯片的配置(芯片地址、自适应速率配置等),但是,唯独忽略了tcp/udp协议,所以在ping通之后仍无法连接。

所以现在来学习一下tcp与udp的区别 ---- 为什么要用tcp而不是udp协议。

百度安全验证icon-default.png?t=N7T8https://baijiahao.baidu.com/s?id=1748334531859727810&wfr=spider&for=pc

TCP与UDP(非常详细)_tcp和udp-CSDN博客 

详细介绍了tcp的数据格式、流量控制等:

计算机网络-TCP/UDP详解(最全)_tcp udp-CSDN博客 

tcp与udp的概念

tcp:

是一种面向有连接的传输层协议。适用于要求可靠传输的应用。

udp:

是一种面向无连接的传输层协议。适用于实时应用(速度快,但可能产生丢包)。

tcp

tcp通信

三次握手、传输确认、四次挥手。

三次握手

客户端 --> 服务端:客户端想服务端发起连接,会先发一包连接请求数据(SYN包),询问能否建立连接

服务端 --> 客户端:服务端收到后,同意连接,就会回复一包SYN+ACK包

客户端 --> 服务端:客户端收到后,发送一包ACK包,连接建立

目的:为了防止已失效的请求报文  突然传到服务器,引起错误(服务端会认为客户端再次请求连接,但是客户端并没有 -- 因为是之前发送的请求)

数据传输

一包数据可能会被拆成多包发送。可能会发生:丢包、数据包到达的先后顺序不同。

tcp协议为每一个连接建立了发送缓冲区。从建立连接后的第一个字节序列号为0,后面的字节的序列号依次加1。发送数据时,从数据缓冲区取一部分数据组成发送报文,在tcp协议头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的ACK等于接收序列号加长度,即下包数据发送的起始序列号。

四次挥手

客户端/服务端发起关闭连接请求。

客户端 --> 服务端:客户端给服务端发起一包FIN包,表示要关闭连接,并且进入终止等待1状态

服务端 --> 客户端:服务端收到FIN包,发送一次ACK包,表示自己进入关闭等待状态,此时客户端进入终止等待2状态

此时服务端还可以发送数据,客户端还可以接收数据

服务端 --> 客户端:待服务端发送完数据后,发送一包FIN包,进入确认状态

客户端 --> 服务端:客户端收到FIN包后,回复ACK包,进入超时等待状态,经过超时时间后关闭连接;服务端收到ACK包后,立即关闭连接

客户端超时等待状态的目的:确保发送的ACK包被服务端接收(如果服务端没有收到,就会一直等待确认,然后会重新发送FIN包,客户端收到FIN包后会重发ACK包,并刷新超时时间)

Socket

tcp把连接作为最基本的对象,每一条tcp连接都有两个端点 -- 即套接字(socket),端口号拼接到IP地址即构成了套接字。

udp

udp是非连接的。

发送数据:把数据包封装一下,从网卡发出。

数据包之间并没有状态上的联系。

优点:速度快,性能损耗少,cpu内存资源占用小于tcp

缺点:可能产生丢包,传输稳定性不如tcp

区别

tcp面向连接,udp面向无连接;

tcp是可靠的,udp是不可靠的;

tcp只能一对一,udp支持一对一,也支持一对多,多对多多对一的方式(单播、多播、广播);

tcp面向字节流,udp面向报文

tcp会产生粘包问题,udp会产生丢包问题;

...

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

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

相关文章

FTP协议——LightFTP安装(Linux)

1、简介 LightFTP是一个轻量级的FTP(File Transfer Protocol,文件传输协议)客户端软件。FTP是一种用于在网络上传输文件的标准协议,允许用户通过TCP/IP网络(如互联网)在计算机之间进行文件传输。 2、步骤…

sqlserver——查询(四)——连接查询

目录 一.连接查询 分类: 内连接: 1. select ... from A,B ; 2. select ..from A,B where ..; 3.select ...,... from A join B on... 4. where 与 join...on 的区别 5. where位置的先后 导语&#xff1…

统计计算四|蒙特卡罗方法(Monte Carlo Method)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法) 统计计算三|Cases for EM 文章目录 系列文章目录一、基本概念(一)估算 π \pi π(二&…

antd(react) ProFormUploadDragger(Upload)上传组件上传图片及省略图模糊展示

antd(react) ProFormUploadDragger(Upload)上传组件上传图片及省略图模糊展示 本文基于reactantdProComponents 需求:图片模糊展示(数据脱敏) 像营业执照、身份证这种,可能用户不希…

信息学奥赛初赛天天练-13-数论-素数的判定

更多资源请关注纽扣编程微信公众号 1 素数 质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,就是该数除了1和它本身以外不再有其他的因数;否则称为合数 1 既非素数也非合数 2 是唯一的偶素数。…

全局查询筛选器适用场景 以及各场景示例

EF Core中的全局查询筛选器(Global Query Filters)是一种强大的功能,可以在实体框架的DbContext级别为特定的EntityType设置默认的过滤条件。这些筛选器自动应用于所有涉及到相关实体的LINQ查询中,无论是直接查询还是通过Include或…

深入解读 ChatGPT 的基本原理(个人总结版)

引言 背景 人工智能(AI)技术自20世纪中期诞生以来,经历了多次革新和进步。从最早的图灵测试,到20世纪末的深蓝计算机击败国际象棋冠军,再到21世纪初谷歌AlphaGo击败围棋冠军,AI技术的飞速发展改变了人们的…

4,八种GPIO模式

资料来源:【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 【STM32基础学习】八种GPIO模式总结-云社区-华为云 (huaweicloud.com) 仅作个人自学笔记,如有冒犯&#xf…

STM32Cube系列教程10:STM32CubeIDE工程创建+串口DMA+IDLE+printf重定向+软中断处理串口数据+非阻塞延时任务

文章目录 工程配置配置时钟配置Debug接口配置串口外设配置时钟树生成代码 配置串口重定向printf配置串口,开启IDLE,开启软中断 配置非阻塞延时任务调度函数编写任务调度函数延时任务创建 编译,下载与测试编译下载测试 前两天收到了ST社区的NU…

C数据结构:二叉树

目录 二叉树的数据结构 前序遍历 中序遍历 后序遍历 二叉树的创建 二叉树的销毁 二叉树的节点个数 二叉树叶子节点个数 二叉树第K层节点个数 二叉树的查找 层序遍历 判断二叉树是否为完全二叉树 完整代码 二叉树的数据结构 typedef char BTDataType; typedef str…

Golang的内存关系

1.Page Golang的Page,在操作系统对虚拟内存管理的MMU定义的物理页有相似的定义,默认的Page为8KB 2.mSpan 多个连续的Page称之为是一个Span,其定义含义有操作系统的管理的页表相似 3.Size Class Size Class: 相当于 一个等级和刻度, 比如 第二等级 就代表 一个Pag…

【C++ ——— 多态】笔记

文章目录 一、多态概念二、多态的定义即实现2.1 多态的构成条件2.2 虚函数2.3虚函数的重写1.虚函数中析构函数的重写2.重载、重写(覆盖)、重定义(隐藏)的区别 2.4 C11 override 和 final 三、抽象类3.1抽象类概念3.2 接口继承和实…

中断处理过程介绍

概念 中断 中断源 分类 中断处理过程 中断请求 实现器件 中断判优 软件判优 过程 器件实现 程序实现 硬件判优 链路判优 器件实现 控制器判优 中断响应 中断服务 中断返回

C语言作为计算机行业的基础之一,是否制约了行业本身的发展?

c不是计算机行业的基础啦,你想,c语言出现时已经有一套成熟的计算机体系,有基于内存地址的寻找指令、数据的工作方式,有汇编语言,那搞出c这种高级语言就很正常啊!刚好我有一些资料,是我根据网友给…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点: 方法二 使用双…

【Linux】Linux的基本指令_3

文章目录 二、基本指令15. date16. cal16. find17. grep18. zip 和 unzip19. tar20. uname 未完待续 二、基本指令 15. date date 命令可以显示当前时间。 常用标记列表: %H : 小时(00…23) %M : 分钟(00…59) %S : 秒(00…61) %X : 相当于 %H:%M:%S %d : 日 (01……

简易计算器

前言 简易计算器,旨在实现一个简单的计算器功能。 整形,浮点型数据的加减乘除运算;数据的统计(如文件中某字符的出现频数);期望,方程运算;平均数,最小值,最大值,中位数…

C++之“流”-第2课-C++和C标准输入输出同步

为什么C和C的标准输入输出不同步时,数据会混乱?同步会带来多大性能损失?为什么说这个损失通常不用太在乎? 0. 课堂视频 C之“流”-第2课:和C输入输出的同步 1. 理解cin和cout的类型与创建过程 std::cout 是std::ostre…

Css 提高 - 获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标:能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法: document.querySelector(css选择…