Realtime TCP/IP stack
Realtime TCP/IP stack
我想用C或c++编程(尽可能高效地)TCP/IP通信堆栈。它真的必须跑得越快越好。
有没有人有一个好的例子或建议从哪里开始?
这并不是一种侮辱,那些为成熟的操作系统开发堆栈的人已经做了很多年了。这就是他们所做的,除非你在这个行业,否则我建议你看看不同的方法。
不同的方法是,选择一个性能不错的堆栈(我听说Solaris中最新的tcp/ip堆栈很漂亮),然后调整它(有很多不同的标志和设置可以调整)。如果这不能满足您的需求,请考虑硬件解决方案,如tcp卸载等。
编写自己的堆栈,意味着你必须有足够的信心,知道你可以在这个领域打败可能1000人年的努力。
如果这是为了自我开发和学习,我建议一些简单的东西,比如minix的源代码,它可能有一个简单易懂的堆栈。
m2c .
这是一项艰巨的任务。我建议将Contiki操作系统作为一个可能的起点。它有一个TCP/IP栈
正如Steve在评论中指出的那样,你确实需要相当多的经验来做好这件事。因此,与其直接跳到你的最终目标,我建议你采取以下可能的步骤:
- 写一个可靠的传输使用UDP作为正常的用户-土地协议。
- 在user-land中使用原始套接字编写自定义协议
- 编写内核级协议模块/驱动程序
- 在FPGA网卡上写入堆栈
Linux是一个很好的选择,因为您需要的详细信息很容易访问和记录。
哦,是的,一旦你意识到你不可能超越Linux内核,就停止吧。
这可能值得一看:
实现高性能面向对象TCP/IP协议栈
科学硕士学位论文Peter Kjellerstedt和Henrik状态
lwip -一个轻量级TCPIP栈最好从学习TCP/IP栈开始
git clone git://git.savannah.nongnu.org/lwip.git
相关文章:
- 我正在开发服务器,ip作为参数传递不起作用
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- 从网址获取 IP (C++)
- 为什么 WinInet 在通过 FQDN 连接时无法通过协商自动进行身份验证,但如果通过 IP 连接则成功?
- std::stack 是连续的吗?
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- 如何修复无效的API密钥,IP或操作权限错误?
- Incomings Call with Android Sip stack in Embarcadero C++ bui
- 堆叠协程 + gdb = "previous frame inner to this frame (corrupt stack)?"
- C++ Winsock2 客户端未通过远程 IP 连接到服务器
- 生成质数的程序,错误:"Stack overflow"
- PHP Profiler语言 - 使用 C++ 从 PHP 扩展获取客户端 IP 和 URL
- 为什么 boost::asio::ip::tcp::basic_stream_socket::available 的运行
- 如何在 x64 上"stack oveflow"例外
- 如何使用 libcurl 在本地 IP 上获取 HTML?
- 为什么此代码中显示"*** stack smashing detected ***: <unknown> terminated Aborted (core dumped) "错误?
- Qt Creator 在执行步骤 "make" 时出现编译错误,-fno-stack-limit
- Realtime TCP/IP stack