深入理解 TCP/IP 协议栈,使用 Raw Socket
对于 TCP/IP 协议栈,我们或多或少都使用 Socket API 实现了一些小程序,甚至有一些朋友结合多路复用技术实现了一些简单的并发服务器。但是,对于以下问题,大家是否有清晰的答案呢?
- WireShark 的实现原理是什么?我能不能自己实现一个简单的 WireShark?
- 网卡是怎么工作的?
- 如何仅借助以太网数据帧/IP数据包传输数据,而不依赖于传输层协议?
- TCP 真的有“粘包”问题吗?
我相应大家如果能搞懂上述几个问题,一定会加深对TCP/IP协议栈的理解。
在本场 Chat 中,会讲到如下内容,并尽量为每一份代码都提供C和Python实现:
- TCP/IP 协议模型和 OSI 模型
- 数据链路层之以太网帧协议,并使用 Raw Socket 实现在数据链路层之上传输自定义类型的数据帧
- 数据链路层之常见协议—ARP 协议,并使用 Raw Socket 捕获 ARP 协议数据帧
- 数据链路层之捕获 IP 数据包、ICMP 数据包、TCP 数据包、UDP 数据报
- 数据链路层之网卡的工作模式
- 网络层之 IP 数据包,并使用 Raw Socket 实现在网络层之上传输自定义类型的报文
- 网络层之使用 Raw Socket 实现一个命令行工具程序 ping
- 传输层之 TCP 字节流传输模型,并结合 Protobuf 实现一个简单应用层协议,解决所谓的 TCP"粘包"问题
阅读全文: http://gitbook.cn/gitchat/activity/5db3bf39b50dbe3147f8d0f6
您还可以下载 **** 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。