TCP与UDP基础

短连接与长连接

短连接为一次连接一次交互,如大部分web网页请求
长连接为一次连接多次交互, 如微信聊天

健康检查

长连接时会有突然断开连接的可能,所以需要增加健康检查,常见的解决方案为轮询机制或心跳机制

轮询机制为服务端向客户端定时发送请求,而心跳机制为客户端向服务端定时发送请求。个人建议采用心跳机制

TCP

TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议,使用三次握手协议建立连接,四次挥手断开连接。所以能保证数据通信的完整性和可靠性,防止丢包。TCP把连接作为最基本的对象,每条TCP连接都有两个端点,这种端点叫做套接字(socket),端口号拼接到IP地址即构成了套接字。

UDP

一种无连接的传输层协议,UDP协议的主要作用是将网络数据流量压缩成数据包的形式。

两者对比

  1. udp性能高于tcp,但可能会存在丢包的情况。适用于对高速传输和实时性有较高的通信或广播通信。
  2. tcp面向字节流,udp面向报文。
  3. tcp连接只能是点到点,udp支持一对一,一对多,多对一和多对多的交互通信。

TCP连接三次握手

  1. 首先由客户端向服务端请求建立连接,发送参数SYN,seq。
  2. 服务器针对客户端的SYN的确认应答并请求建立连接,服务端生成新的seq及ack(ack的值为客户端的seq+服务器生成ACK)。此时发送SYN,ACK及生成的ack,seq。
  3. 客户端针对服务器的SYN的确认应答,传递参数ACK及新生成的ack(生成逻辑同上)。

第一次握手的目的是检测客户端的发送能力以及服务端的接收能力。
第二次握手的目的是检测服务端的接收、发送能力以及客户端的接收、发送能力。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手的目的是得出客户端的接收、发送能力正常,服务端的发送、接收能力正常。

在这里插入图片描述

TCP断开连接四次握手

  1. 客户端向服务端请求断开连接,发送FIN。
  2. 服务端接收到请求,针对客户端的FIN的确认应答,并生成新的ack(生成逻辑同上)
  3. 服务端请求断开连接,生成FIN。
  4. 客户端针对服务端的FIN的确认应答,发送ACK及ack。此时服务端接收到之后会断开,客户端进入TIME-WAIT,等待完2MSL之后,进入CLOSED阶段。

在这里插入图片描述

TCP连接标识说明
在这里插入图片描述

tcp粘包问题

tcp发送数据的时候因为存在数据缓存的关闭。简单的说tcp的请求类似公交车,到点走或者人满发车。每个人相当于一份数据,所以会出现这个问题。

处理方案分为两种

  1. 采用特殊自负来分割
  2. 固定包头+包体协议(主流)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值