一、什么是TCP/IP协议?
指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
简单来说:互联网相关各类协议族的总称称为TCP/IP协议。
TCP和UDP各自的特点和应用场景
TCP应用场景:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录,视频。 UDP应用场景:qq聊天、直播、网络语音电话、广播通信(广播、多播)。
十一、什么是粘包?如何解决粘包带来的问题
TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。主要原因是来自接收方。
发送方会将连续发送的数据包使用Nagle算法拼接到一起发送,针对发送方可以设置套接字属性关闭此算法,不过我们一般不使用此方法解决该问题。
接收方收到数据如果没有来的及读,那么大量数据会堆积到读缓存中,读取时会一次读取多个数据包数据(也有可能是半个数据包数据),接收方发生粘包时无法在传输层解决,只能在应用层解决。
解决方法:
格式化数据:每条数据有固定的格式(开始符,结束符),这种方法简单易行,但是选择开始符和结束符时一定要确保每条数据的内部不包含开始符和结束符。
发送长度:发送每条数据时,将数据的长度一并发送,例如规定数据的前4位是数据的长度,应用层在处理时可以根据长度来判断每个分组的开始和结束位置。
我们一般使用发送长度的