• tcp 特点

    提供面向连接无丢失,无乱序,无差错,可靠的字节流传输。(可靠性主要靠的是三次握手和四次挥手)
  • 三次握手(连接)

网络编程-Tcp通信面试
三次握手过程:
    - 客户端向服务端发送请求连接报文
    - 服务端收到报文,回复报文表示可以连接
    - 客户端收到确认信息,发送最终报文连接建立

  • 四次挥手(断开)

网络编程-Tcp通信面试
断开连接不再是特定一方,双方都可主动断开
四次挥手过程:
    - 主动方发送断开连接报文
    - 被动发收到报文后,立即回复报文,表示准备断开连接
    - 被动方准备就绪,再次发送报文表示可以断开连接
    - 主动方收到报文,发送最终报文断开连接

  • 粘包及解决办法

产生原因:

  • 为了解决数据在传输过程中可能产生的速度不协调问题,操作系统设置了缓冲区
  • 实际网络过程比较复杂,导致消息收发速度不一致。
  • tcp以字节流方式数据传输,在接收时不区分消息边界

解决办法:
  - 控制发送速度(即在连续发送时添加延时)
  - 人为添加消息边界
  - 设置定长缓冲区

  • tcp与udp的区别与联系

相同点:
   都属于传输层的协议
  都为用户提供服务
区别:
   tcp提供可靠的数据传输,udp不保证可靠数据传输
   tcp是以字节流方式传输,udp以数据报方式传输
   tcp传输时需建立连接,效率相对较低,udp无需建立连接,节省时间,效率高
  所创的套接字类型不同
  tcp套接字会产生粘包,udp有消息边界不会粘包


以上是我总结网络编程阶段的常见面试题

网络编程-Tcp通信面试

相关文章: