基于面试的计算机网络知识【持续更新】

893 阅读2分钟

TCP的三次握手四次挥手过程

三次握手

  1. 客户端 -> 发送带有SYN标记的报文 -> 服务端 (客户端向服务端请求发起连接)
  2. 客户端 <- 发送带有SYN+ACK标记的报文 <- 服务端 (服务端告知客户端表示可以连接)
  3. 客户端 -> 发送带有ACK标记的报文 -> 服务端 (客户端告知服务端表示收到了服务端可以连接的消息,此时连接建立)

为什么要三次握手?

为了确认双方发送与接收的功能是正常的。

四次挥手

  1. 客户端 -> 发送带有FIN标记的报文 -> 服务端 (客户端向服务端请求断开连接)
  2. 客户端 <- 发送带有ACK标记的报文 <- 服务端 (服务端告知客户端表示收到请求,准备断开连接)
    服务端继续发送剩余数据
  3. 客户端 <- 发送带有FIN标记的报文 <- 服务端 (服务端告知客户端表示可以断开连接)
  4. 客户端 -> 发送带有ACK标记的报文 -> 服务端 (连接断开)

为什么要四次挥手?

客户端与服务端要断开连接时,除了和三次握手逻辑相似的三次报文发送与接收外,服务端还需确保数据已经全部发送至客户端。当服务端接收到客户端的断开请求后,发送了ACK和FIN两次报文,发送ACK时服务端可能还在发送数据给客户端,当服务端发送完所有数据后,发送FIN给客户端,告知数据发送完毕。

观察TCP连接

我们使用WireShark进行抓包,观察三次握手 上图,客户端大毛的IP地址为192.168.0.18,服务端小芸的IP地址为40.126.7.97。大毛向小芸发送了一个Flag为SYN的报文,表示想和小芸发起连接请求。小芸会怎么做呢?我们继续往下看。

上图,小芸向大毛发送了一个Flag为SYN和ACK的报文,表示愿意和大毛发起连接。

上图,大毛向小芸发送了一个ACK报文,此时大毛和小芸的连接建立。
以上就是两端使用TCP协议进行连接的过程。

HTTP Methods

未完待续