tcpdump 和 Wireshark 是最常用的网络抓包和分析工具,作为经常和网络打交道的划水选手,怎么能不了解下呢?补篇博文回顾下相关操作。这里以 example.com 的一次 GET 请求为例,先使用 tcpdump 抓个包,再使用 Wireshark 看下 TCP 的握手。

操作环境:WSL2(Ubuntu 20.04 LTS) + Windows 10

最近读了波网络 I/O 相关的文章,做下总结、摘录。(未完)

经典 I/O 模型

  • 阻塞式 I/O(blocking I/O)

  • 非阻塞式 I/O(non-blocking I/O)

  • I/O 多路复用(I/O multiplexing)

  • 信号驱动式 I/O(signal driven I/O)

  • 异步 I/O(asynchronous I/O)

阻塞式 I/O 模型

对于阻塞式 I/O,以套接字(Socket)的输入操作为例。

  • 1、首先应用进程发起 I/O 系统调用后,应用进程阻塞,转到内核空间处理。
  • 2、之后,内核开始等待数据,等待数据到达之后,将内核中的数据拷贝到用户的缓冲区中,整个 I/O 处理完毕后返回进程。最后应用进程解除阻塞状态,处理数据。