面向报文和面向字节流
TCP无界,UDP有界; TCP通过字节流传输,即TCP将应用程序看成是一连串的无结构的字节流。每个TCP套接口有一个发送缓冲区,如果字节流太长时,TCP会将其拆分进行发送。当字节流太短时,TCP会等待缓冲区中的字节流达到一定程度时再构成报文发送出去,TCP发给对方的数据,对方在收到数据时必须给矛确认,只有在收到对方的确认时,本方TCP才会把TCP发送缓冲区中的数据删除。因此会出现粘包拆包问题 而UDP传输报文的方式是由应用程序控制的,应用层交给UDP多长的报文,UDP照样发送,既不拆分,也不合并,而是保留这些报文的边界,即一次发送一个报文。
TCP/UDP属于传输层协议,在应用层和网络层间传输数据
短连接和长连接
短连接是指在完成一次请求-响应之后,立即断开连接的模式。每次请求都需要重新建立连接。
-
连接时间短:每次请求都建立一个新的连接,完成后立即关闭。
-
简单:实现和管理相对简单,不需要维护长时间的连接状态。
-
资源消耗大:频繁建立和关闭连接,会消耗更多的资源(如TCP握手和挥手的开销)。
长连接是指在一次请求-响应之后,不立即关闭连接,而是保持连接的持续开放,允许多次请求和响应在同一连接上进行。
-
连接时间长:连接建立后,保持一段时间不关闭,甚至在整个会话期间保持。
-
高效:减少了频繁建立和关闭连接的开销,适合频繁请求的场景。
-
复杂性:需要额外的机制来管理连接的状态和保持连接的心跳检测。