面试题库二

1、简述TCP/IP的三次握手和四次挥手

TCP(Transmission Control Protocol)是一种可靠的、面向连接的传输层协议,用于在网络中传输数据。在建立连接和断开连接时,TCP 使用了三次握手和四次挥手来确保通信的可靠性和正确性。

三次握手(Three-Way Handshake)

三次握手是在建立 TCP 连接时使用的过程。它确保了双方的通信端点都能够收发数据。以下是三次握手的详细过程:

  1. 客户端向服务器发送连接请求(SYN): 客户端首先发送一个包含 SYN(同步序列号)标志的数据包到服务器,表示客户端要求建立连接,并选择一个初始序列号(ISN)作为起始点。

  2. 服务器收到连接请求并回应(SYN + ACK): 服务器收到客户端的连接请求后,会发送一个包含 SYN 和 ACK(确认)标志的数据包给客户端。SYN 表示服务器接受了客户端的连接请求,ACK 表示服务器已经收到了客户端的 SYN,同时也选择了一个自己的初始序列号。

  3. 客户端收到确认并回应(ACK): 客户端收到服务器的确认后,会发送一个 ACK 数据包给服务器,表示客户端已经收到了服务器的确认,此时连接已经建立完成,可以开始数据传输。

四次挥手(Four-Way Handshake)

四次挥手是在断开 TCP 连接时使用的过程。它确保了双方都能够正确地结束通信,并释放连接资源。以下是四次挥手的详细过程:

  1. 客户端发送断开连接请求(FIN): 当客户端希望断开连接时,它会发送一个包含 FIN(结束)标志的数据包给服务器,表示客户端不再发送数据了,但仍然愿意接收数据。

  2. 服务器收到断开请求并回应(ACK): 服务器收到客户端的断开请求后,会发送一个 ACK 数据包给客户端,确认收到了客户端的断开请求。

  3. 服务器发送断开连接请求(FIN): 服务器在准备断开连接时,会发送一个包含 FIN 标志的数据包给客户端,表示服务器不再发送数据了,但仍然愿意接收数据。

  4. 客户端收到断开请求并回应(ACK): 客户端收到服务器的断开请求后,会发送一个 ACK 数据包给服务器,确认收到了服务器的断开请求。此时,连接已经关闭,双方都不再发送数据,可以释放连接资源。

2、简述进程和线程的区别

3、简述文件IO和标准IO的区别

4、简述TCP和UDP的异同点

相同点:

都是传输层协议,用于在网络中传输数据。

都使用 IP 协议作为网络层协议来实现数据包的传输。

都是面向数据报的协议,即数据以数据包的形式传输。

不同点:

连接方式:TCP 是面向连接的协议,通信双方在传输数据之前需要先建立连接,然后再进行数据传输,传输完成后关闭连接;而 UDP 是无连接的协议,通信双方不需要建立连接,可以直接进行数据传输。

可靠性:TCP 提供可靠的数据传输,保证数据的顺序性和完整性,通过重传机制和确认机制来实现;而 UDP 不保证数据的可靠性,数据可能丢失或乱序,并且不提供重传和确认机制。

传输效率:由于 TCP 提供了可靠性保证,所以在数据传输过程中会有较多的控制信息,导致额外的开销和延迟,传输效率相对较低;而 UDP 没有额外的控制信息,传输效率较高。

应用场景:TCP 适用于对数据可靠性要求较高的场景,如文件传输、网页访问等;而 UDP 适用于对传输延迟要求较高、数据可靠性要求较低的场景,如视频直播、在线游戏等。

相关推荐

  1. 面试题库

    2024-03-31 00:02:02       45 阅读
  2. C语言经典面试题目(十

    2024-03-31 00:02:02       42 阅读
  3. C语言经典面试题目十)

    2024-03-31 00:02:02       43 阅读
  4. C++经典面试题目(十

    2024-03-31 00:02:02       38 阅读
  5. C++经典面试题目十)

    2024-03-31 00:02:02       33 阅读
  6. C语言经典面试题目

    2024-03-31 00:02:02       38 阅读
  7. C语言经典面试题目十三)

    2024-03-31 00:02:02       44 阅读
  8. C语言经典面试题目十五)

    2024-03-31 00:02:02       43 阅读
  9. C语言经典面试题目十六)

    2024-03-31 00:02:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 00:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 00:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 00:02:02       82 阅读
  4. Python语言-面向对象

    2024-03-31 00:02:02       91 阅读

热门阅读

  1. 蓝桥杯刷题记录之蓝桥王国

    2024-03-31 00:02:02       45 阅读
  2. C/C++ ② —— C++11智能指针

    2024-03-31 00:02:02       34 阅读
  3. 【前端学习——css篇】3.隐藏元素的方法

    2024-03-31 00:02:02       35 阅读
  4. C++蓝桥考级一级到十八级的考点内容整理

    2024-03-31 00:02:02       40 阅读
  5. js教程(10)

    2024-03-31 00:02:02       44 阅读
  6. 【阅读笔记】《你的第一本博弈论》

    2024-03-31 00:02:02       42 阅读
  7. 防范非法集资,小米消金在行动

    2024-03-31 00:02:02       36 阅读
  8. ASTM C568/C568-22 石灰石检测

    2024-03-31 00:02:02       39 阅读
  9. IDM工具v6.42.3 便携绿色

    2024-03-31 00:02:02       45 阅读