FPGA之tcp/udp

在调试以太网的过程中,考虑了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会产生丢包问题;

...

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值