或者有不基于 socket 实现的 http server 吗?
![]() | 1 choury 2020-07-23 17:07:33 +08:00 ![]() 你是想用 dpdk 吗 |
![]() | 2 cheneydog 2020-07-23 17:10:10 +08:00 ![]() 嵌入式操作系统里有那种纯粹的 tcp 协议包,底层是自己处理芯片驱动,也可以随便改 |
![]() | 3 codehz 2020-07-23 17:18:32 +08:00 ![]() socket 只是 unix 那边的东西,win 这边完全可以绕开 winsocks(1/2)实现 http 。。。比如那个著名的 http.sys https://docs.microsoft.com/en-us/windows/win32/http/http-server-sample-application |
4 xumng123 2020-07-23 17:20:29 +08:00 via iPhone quic,参考一下 |
5 kilen3a 2020-07-23 17:26:13 +08:00 ![]() 当然有,非 Unix 就没 socket 啊 |
![]() | 6 wellsc 2020-07-23 17:33:56 +08:00 dkpk |
7 sujin190 2020-07-23 17:35:53 +08:00 写个驱动直接操作网卡?但是又有个啥用呢,该解决的问题你还是得解决一遍啊 |
![]() | 9 shansing 2020-07-23 17:40:53 +08:00 又一个 XY problem ? |
10 nightwitch 2020-07-23 18:14:17 +08:00 ![]() |
![]() | 11 Mistwave 2020-07-23 18:37:29 +08:00 via iPhone @nightwitch 请问这是哪本书的图? |
![]() | 12 ZehaiZhang 2020-07-23 18:51:45 +08:00 请教:socket 不是基于 TCP/IP 协议的么,lz 的意思是,(非) socket 实现 TCP 协议? |
13 Keyes 2020-07-23 18:57:00 +08:00 via iPhone socket 就像字面意思一样是个套儿而已 |
14 nightwitch nbsp;2020-07-23 19:03:55 +08:00 ![]() @Mistwave The Linux Programming Interface 有中文版 |
![]() | 15 Leigg 2020-07-23 19:34:41 +08:00 via Android ![]() socket 只是个名字,表示<hostname:port>,你们不要针对它好不咯,楼上一堆瞎扯,还非 unix 就没有 socket... |
![]() | 16 Shazoo 2020-07-23 19:57:33 +08:00 ![]() 楼主应该看下 #10 楼的解释。 给你明确下,Socket 并不是使用 tcp 协议唯一路径,但是确实是最最流行和通用的(考虑下 cross-platform )方案。你可以把 socket 的理解为一套使用 tcp 的库。毕竟谁也不太想考虑 tcp 包序,syn 握手啥的。 你可以参考下嵌入式设备最长使用的 Lwip,使用 tcp 方案应该有好几种,记得可以使用 netconn 方案啥的。 在高级 os 内,你可以直接操作驱动来构造 tcp 报文,然后 send/recv 。一些异性报文或者 exploit 就是这么做到的。可以参考下 winpcap,或者 winddk 直接造。( unix like 的,可以直接用 socket 的 raw 方案做报文,不需要直接 drv 层。windows 之前可以,后来出于安全,给禁掉了。忘记是 win2k 还是 xp 上禁掉的,当时死了一批猴子脚本工具)。 他们说的 dpdk,我记得是修改驱动的中断方式,貌似和 socket 关系不大。那是做高频和游戏高并发用的。 |
![]() | 17 reus 2020-07-23 19:57:43 +08:00 ![]() 你这里的 socket 指 Berkeley socket 吧? wikipedia 说得很清楚了: https://en.wikipedia.org/wiki/Berkeley_sockets 这是一种 API,当然可以有其他的 API,windows 的 TCP 实现就不是用 posix socket 的。 |
18 FutherAll OP 我理解的是 socket 是一种 Interface,是 BSD 对 tcp 协议抽象出的一组接口,并且在 Unix-link 的操作系统上都实现了 socket,并提供给应用使用;我是想理论上来说应该是有非 socket 实现的 tcp 协议,没 Google 到所以来问问,顺便理清一下思路。 多谢楼上各位的回答。 |
![]() | 19 misaka19000 2020-07-23 21:25:28 +08:00 你甚至可以自己操作网卡发送 raw 数据包 |
20 VDimos 2020-07-23 21:34:59 +08:00 via Android 完全可以,你只要愿意,最底层可以直接通过串口来写 |
![]() | 22 Mistwave 2020-07-23 22:16:50 +08:00 @nightwitch 非常感谢! |
23 yuyuko 2020-07-24 02:43:36 +08:00 via iPhone XTI ? |
![]() | 25 sariya 2020-07-24 12:14:15 +08:00 via Android 用 USB 协议,232 发都可以,只是一个载体 |
![]() | 26 sbilly 2020-07-28 10:33:42 +08:00 印象中 dpdk 并不包含协议栈,不知道新版本是不是已经包含了。你可以用 “用户态协议栈” 或者 “userland tcp ip stack” 搜一下。IwIP 、libuinet 、…… 之类开源的以外,还有比较多的商业产品。 |