三次握手过程:
- 客户端向服务端发送请求连接报文
- 服务端收到报文,回复报文表示可以连接
- 客户端收到确认信息,发送最终报文连接建立
断开连接不再是特定一方,双方都可主动断开
四次挥手过程:
- 主动方发送断开连接报文
- 被动发收到报文后,立即回复报文,表示准备断开连接
- 被动方准备就绪,再次发送报文表示可以断开连接
- 主动方收到报文,发送最终报文断开连接
产生原因:
- 为了解决数据在传输过程中可能产生的速度不协调问题,操作系统设置了缓冲区
- 实际网络过程比较复杂,导致消息收发速度不一致。
- tcp以字节流方式数据传输,在接收时不区分消息边界
解决办法:
- 控制发送速度(即在连续发送时添加延时)
- 人为添加消息边界
- 设置定长缓冲区
相同点:
都属于传输层的协议
都为用户提供服务
区别:
tcp提供可靠的数据传输,udp不保证可靠数据传输
tcp是以字节流方式传输,udp以数据报方式传输
tcp传输时需建立连接,效率相对较低,udp无需建立连接,节省时间,效率高
所创的套接字类型不同
tcp套接字会产生粘包,udp有消息边界不会粘包
以上是我总结网络编程阶段的常见面试题