本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/interview-question/java-interview-question21/
- 简述 TCP 和 UDP 的区别?
- 参考博客:https://blog.51cto.com/feinibuke/340272
- TCP面向连接,UDP面向非连接
- TCP传输可靠,经过三次握手进行确定,主要传输状态信息;UDP传输不可靠,主要传输大数据
- TCP传输数据中含有段标号等信息,UDP没有
- TCP传输较UDP慢
- TCP 为什么要三次握手,两次不行吗?为什么?
- TCP三次握手目的是为了连接服务器指定端口,建立TCP连接,同步双方序列号和确定号,交换TCP窗口大小信息
- 两次握手只能让发送方确定已与接收方建立连接,而接收方不能确定是否与发送方连接正常
- 说一下 TCP 粘包是怎么产生的?
- TCP通过流传输数据包,数据包间隔时间可能很短,造成前包尾部与后包头部粘合
- 发送方等待缓冲区满才发送数据,接收方没有及时接收数据包
- 解决措施
- 通过编程解决。当一次数据包完成后,立即通过TCP的push指令发出
- 通过优化程序设计,使接收方及时接收数据
- 将数据包按数据字段,人为控制多此接收然后合并
- OSI 的七层模型都有哪些?
- 参考博客:https://blog.csdn.net/yaopeng_2005/article/details/7064869
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层