在C或c++中有原始的TCP库吗?

Is there any raw TCP library in C or C++?

本文关键字:TCP 库吗 原始 c++      更新时间:2023-10-16

我将创建内核模式驱动级应用程序,建立TCP连接,以下是我的要求:

  1. 我不想传递数据到用户模式
  2. 我不想使用winsocket和OS socket库
  3. 我只需要传递tcp数据包到一个库和该库为我创建了简单的tcp -客户机或tcp -服务器连接。它应该执行所有TCP连接要求,如TCP握手,生成数据包,计算校验和,设置TCP标志和确认,然后给我新的数据包,这样我就可以将数据包发送到我的网络适配器。

你知道现有的TCP实现不使用OS套接字库吗?

我认为问这个问题的正确方式是:

在内核代码中做TCP套接字的正确方法是什么?

我不确定你想在数据包级别上做TCP,因为你也可能想处理TCP分段,IP分段,只在远程窗口大小允许的情况下发送,以及ACK生成。换句话说,如果你在内核模式下做一个TCP服务器,你需要整个内核TCP堆栈。

在任何情况下,Bing或Google搜索"内核套接字"或"ksocket"。

对于Linux: http://ksocket.sourceforge.net/此外,请查看这个UDP示例。

对于Windows:转到此页面并下载HttpDisk和KHttpd示例。两者都使用windows设备驱动程序,而不是使用类似的"ksocket"库。

对于Linux,请使用常用套接字API的kernel_*()版本,即kernel_bind(), kernel_listen(), kernel_accept(), kernel_connect()。它们在#include <linux/net.h>中,使用方式与"普通"套接字非常相似。

Solaris有非常相似的接口,命名为ksocket_*(),参考#include <sys/ksocket.h>

对于*BSD UN*X版本,Apple的网络内核扩展指南给出了一些细节(也参考了Free/Net/OpenBSD上相应的接口)。

不了解Windows