JAVA面试题(21)

    本文首发于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 的七层模型都有哪些?