深入理解 TCP/IP 协议栈,使用 Raw Socket

对于 TCP/IP 协议栈,我们或多或少都使用 Socket API 实现了一些小程序,甚至有一些朋友结合多路复用技术实现了一些简单的并发服务器。但是,对于以下问题,大家是否有清晰的答案呢?

  1. WireShark 的实现原理是什么?我能不能自己实现一个简单的 WireShark?
  2. 网卡是怎么工作的?
  3. 如何仅借助以太网数据帧/IP数据包传输数据,而不依赖于传输层协议?
  4. TCP 真的有“粘包”问题吗?

我相应大家如果能搞懂上述几个问题,一定会加深对TCP/IP协议栈的理解。

在本场 Chat 中,会讲到如下内容,并尽量为每一份代码都提供C和Python实现:

  1. TCP/IP 协议模型和 OSI 模型
  2. 数据链路层之以太网帧协议,并使用 Raw Socket 实现在数据链路层之上传输自定义类型的数据帧
  3. 数据链路层之常见协议—ARP 协议,并使用 Raw Socket 捕获 ARP 协议数据帧
  4. 数据链路层之捕获 IP 数据包、ICMP 数据包、TCP 数据包、UDP 数据报
  5. 数据链路层之网卡的工作模式
  6. 网络层之 IP 数据包,并使用 Raw Socket 实现在网络层之上传输自定义类型的报文
  7. 网络层之使用 Raw Socket 实现一个命令行工具程序 ping
  8. 传输层之 TCP 字节流传输模型,并结合 Protobuf 实现一个简单应用层协议,解决所谓的 TCP"粘包"问题

阅读全文: http://gitbook.cn/gitchat/activity/5db3bf39b50dbe3147f8d0f6

您还可以下载 **** 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

深入理解 TCP/IP 协议栈,使用 Raw Socket