【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端

目录

1、TCP

TCP特点

TCP三次握手(建立TCP连接):

TCP四次握手【TCP断开链接的时候需要经过4次确认】:

TCP网络程序开发流程

客户端开发:用户设备上的程序

服务器开发:服务器设备上的程序

2、UDP

为什么使用UDP?

UDP常用再哪些方面?

UDP特点

UDP接收和发送流程

UDP实现步骤

TCP和UPD对比


1、TCP

  • 数据不能随便发送,在发送之前还需要选择一个对应的传输协议,保证程序之间按照指定的传输规则进行数据的通信
  • TCP (Transmission Control Protocol)简称传输控制协议 ,是一种面向连接的、可靠的、基于字节流的传输层通信协议 。TCP通信需要经过创建连接数据传送终止连接三个步骤
TCP特点
  1. 面向连接 :通信双方必须先建立连接才能进行数据的传输,完成数据交换后,双方必须断开此连接,以释放系统资源。这种连接是一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP协议
  2. 可靠传输
  • **TCP采用发送应答机制:**TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功
  • 超时重传: 发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就++重新发送++这个报文段。
  • **错误校验:**TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
  • **流量控制和阻塞管理:**流量控制用来避免主机发送得过快而使接收方来不及完全收下。
TCP三次握手(建立TCP连接):

建立一个TCP连接时,需要客户端和服务端总共++发送3个包++以确认连接的建立。

①第一次握手:客户端将数据包发送给服务端,等待服务端确认【SYN=1,seq=J】

②第二次握手:服务端收到客户端的连接请求,发送数据包给客户端确认连接请求【SYN=1,ACK=1,ack=J+1,seq=K】

③第三次握手:客户端收到确认,将数据包发送给服务端,服务端检查数据包正确连接后开始传输数据【ACK=1,ack=K+1】

TCP四次握手【TCP断开链接的时候需要经过4次确认】:

①主机1向主机2发起FIN报文后进入FIN_WAIT_1状态【FIN=1,seq=u】

②主机2收到FIN报文,向主机1回ASK报文确认此时可以关闭连接【ACK=1,seq=v,ack=u+1】

③主机2向主机1发送FIN报文,请求关闭同时主机2进入CLOSE_WAIT状态【FIN=1,ACK=1,seq=w,ack=u+1】

④主机1收到主机2FIN报文,向主机2发送ASK报文,主机2收到后关闭连接【ACK=1,seq=u+1,ack=w+1】

此时,主机1等待2MSL(Maximum Segment Lifetime 报文最大生存时间)后依然没有收到回复,则证明Server端已正常关闭,主机1也可以关闭连接。

TCP网络程序开发流程
客户端开发:用户设备上的程序
  1. 创建客户端套接字对象
  2. 和服务端套接字建立连接
  3. 发送数据
  4. 接收数据
  5. 关闭客户端套接字
服务器开发:服务器设备上的程序
  1. 创建服务端端套接字对象
  2. 绑定端口号
  3. 设置监听
  4. 等待接受客户端的连接请求
  5. 接收数据
  6. 发送数据
  7. 关闭套接字

2、UDP

  • 无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接
  • 发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据
为什么使用UDP?

使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

UDP常用再哪些方面?
  • 包总量较少的通信(DNS).
  • 视频、音频等多媒体通信(即时通信).
  • 限定于 LAN 等特定网络中的应用通信.
  • 广播通信(广播、多播)
UDP特点
  • 需要资源少
  • 不保证接收
  • 无连接
UDP接收和发送流程
UDP实现步骤
  1. 导入模块socket
  2. 创建socket套接字
  3. 绑定IP&端口(可选)
  4. 发送数据
  5. 关闭套接字

TCP和UPD对比

|-------------------|-----------------------|
| UDP | TCP |
| 面向无连接 | 有连接 |
| 支持一对一、一对多、多对一、多对多 | 两个端点的一对一通信 |
| 不保证数据传输的可靠性 | 传输数据无差错、不丢失、不重复、按时序到达 |
| 占用资源少 | 占用资源多 |

相关推荐
路星辞*15 分钟前
全国职业院校技能大赛 网络建设与运维样题解析
运维·网络·技能大赛
狮子再回头24 分钟前
snmp/mib采用子代理模式,编码,部署(二)---多实例处理
网络·服务器开发·net-snmp·mib开发·mib子代离
ssxueyi26 分钟前
StarRocks 部署:依赖环境
服务器·数据库·starrocks·php
Allen_LVyingbo40 分钟前
文章配图新纪元:OpenAI新推出的GPT-4o原生图像生成功能启示
人工智能·学习·架构·数据分析·健康医疗
IPFLY代理42 分钟前
OpenAI 时代:代理 IP 的关键作用,吉卜力画风争议下的技术展望
网络·网络协议·tcp/ip
傍晚冰川1 小时前
【STM32】最后一刷-江科大Flash闪存-学习笔记
笔记·科技·stm32·单片机·嵌入式硬件·学习·实时音视频
吴梓穆1 小时前
UE5学习笔记 FPS游戏制作33 游戏保存
笔记·学习·ue5
苹果企业签名分发1 小时前
游戏搭建云服务器配置推荐
运维·服务器·游戏
2501_911067661 小时前
智慧路灯网络安全入侵监测
网络·安全·web安全
淬渊阁1 小时前
汇编学习之《数据传输指令》
汇编·学习