Tcp、udp协议

一、Tcp协议

TCP协议(控制传输协议)是为应用层提供可靠的、面向连接的和基于流式的服务。

可靠:TCP协议使用超时重传、数据确认等方式来确保数据包被正确地发送至目的端。

面向连接:使用TCP协议协议的双方必须要建立tcp连接,并在内核中为该链接维持创造一些必要的数据结构,比如连接的状态、读写缓冲区以及诸多定时器等,当双方通信结束时,双方必须关闭链接以释放这些内核数据。

流式的:基于流式的服务,数据长度没有边界,它可以源源不断地从一端写另一端读。

这就产生了粘包问题。

粘包问题:

简单得说,在流传输中出现,UDP不会出现粘包,因为它有消息边界

1发送端需要等缓冲区满才发送出去,造成粘包

2接收方不及时接收缓冲区的包,造成多个包接收。

问题解决:

1、约定好发送,在利用tcp进行通信时,一端进行发送,一端进行接收,接收完成后断开链接。

2、加数据长度,在发送数据时加上数据长度,读的时候根据长度读。

二、udp协议

UDP协议(用户数据报协议)提供不可靠的、无链接和基于数据报的服务。

不可靠体现在UDP协议无法保证数据正确的从客户端发送到服务端,如果数据在中途丢失,或者目的端通过数据监测发现数据错误而将其丢弃,UDP协议只是简单的通知客户端发送失败,因此使用UDP协议的应用程序通常要自己处理数据校验和超时重传等机制。

基于数据报的服务,相对于流式而言的。每个数据报都有一个长度,接收端必须根据该长度将内容一次性读出,否则数据将被截断。

猜你喜欢

转载自blog.csdn.net/lixin_com/article/details/81225807