1.tcp为什么会需要经过三次握手?
答:TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机,因而产生错误。3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
第三次握手是为了防止:如果客户端迟迟没有收到服务器返回确认报文,这时会放弃连接,重新启动一条连接请求,但问题是:服务器不知道客户端没有收到,所以他会收到两个连接,浪费连接开销。如果每次都是这样,就会浪费多个连接开销。
2.tcp会发生粘包的两种情况
答:1. 发送端需要等缓冲区满才发送出去,造成粘包
2. 接收方不及时接收缓冲区的包,造成多个包接收
3.TCP长连接与短连接区别?
答:长连接:连接一次保持连接直到客户端断开连接,响应时间短,但需保存套接字资源,浪费资源,安全性差;
短连接:建立一次连接传输一次就立马断开连接,实现简单但每次都需三次握手,四次挥手消耗资源和时间。
4.tcp和udp应用场景?
答:tcp应用场景:web浏览器、电子邮件、文件传输等需要可靠传输的应用
udp应用场景:域名系统、视频流、共屏软件
5.TCP服务器端的创建流程
答:1.创建TCP服务端的socket
2.bing绑定ip地址和端口号
3.listen使套接字变为被动套接字
4.accept取出一个客户端连接,用于服务
5.recv/send接收和发送消息
6.关闭套接字
6.什么是TCP粘包?
答:TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。