或者有不基于 socket 实现的 http server 吗?
1
choury 2020-07-23 17:07:33 +08:00 1
你是想用 dpdk 吗
|
2
cheneydog 2020-07-23 17:10:10 +08:00 1
嵌入式操作系统里有那种纯粹的 tcp 协议包,底层是自己处理芯片驱动,也可以随便改
|
3
codehz 2020-07-23 17:18:32 +08:00 2
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 1
当然有,非 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 1
|
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 2020-07-23 19:03:55 +08:00 1
@Mistwave The Linux Programming Interface 有中文版
|
15
Leigg 2020-07-23 19:34:41 +08:00 via Android 1
socket 只是个名字,表示<hostname:port>,你们不要针对它好不咯,楼上一堆瞎扯,还非 unix 就没有 socket...
|
16
Shazoo 2020-07-23 19:57:33 +08:00 1
楼主应该看下 #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 1
你这里的 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 、…… 之类开源的以外,还有比较多的商业产品。
|