1.TCP协议
1.1介绍
- TCP是Transmission Control Protocol缩写,中文名为传输控制协议.
- TCP协议是一种面向连接的,可靠的,基于字节流的传输层通信协议(流式传输).
- TCP协议是点对点的,并且效率不如UDP.
- TCP协议为了保证不发生丢包,会给每个包一个编号,接收端会按编号进行接收,成功收到后会向发送端发送一个相应的确认.如果发送端在一定时间内没有接收到这个确认消息,就认为这个包已经丢失并重新发送.
- TCP适合连续传输大量数据,对可靠性要求较高的应用环境,例如下载,邮件等.
1.2三次握手,四次挥手
三次握手:
四次挥手:
1.3黏包
黏包现象是由于TCP协议的算法和特点导致的,目的在于可以将本来分两条发的消息合并成一条发送,减少了一次回执的过程
黏包现象的成因在于发送端或接受端:
- 发送端因为合包机制,如果连续send数据,很容易黏包.
- 接收端因为网络延迟等原因,导致TCP是无边界的流式传输,接收不及时,导致两个包同时被缓存.
但是对于应用层来说,黏包并不是好的现象,黏包会使我们发送的多条消息变成一条消息,从而造成一直阻塞.
解决方法:
在连续传输时,可以通过自定义协议,每次发送一个固定长度的报头,来通知接收端接下来接收数据的长度.
2.UDP
- UDP是User Datagram Protocol的缩写,中文名为用户数据报协议.
- UDP协议是一种面向传输的,不可靠的,高效率的传输层通信协议.
- UDP传输数据不需要建立连接,占用的资源比TCP要少.
- UDP适合一次性只传输少量数据,对可靠性要求不高的应用环境.例如社交类软件(qq,微信等).