有非 socket 实现的 tcp 协议吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
FutherAll
V2EX    程序员

有非 socket 实现的 tcp 协议吗

  •  1
     
  •   FutherAll 2020-07-23 17:00:26 +08:00 4253 次点击
    这是一个创建于 1909 天前的主题,其中的信息可能已经有所发展或是发生改变。

    或者有不基于 socket 实现的 http server 吗?

    27 条回复    2020-07-28 11:01:42 +08:00
    choury
        1
    choury  
       2020-07-23 17:07:33 +08:00   1
    你是想用 dpdk 吗
    cheneydog
        2
    cheneydog  
       2020-07-23 17:10:10 +08:00   1
    嵌入式操作系统里有那种纯粹的 tcp 协议包,底层是自己处理芯片驱动,也可以随便改
    codehz
        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
    xumng123
        4
    xumng123  
       2020-07-23 17:20:29 +08:00 via iPhone
    quic,参考一下
    kilen3a
        5
    kilen3a  
       2020-07-23 17:26:13 +08:00   1
    当然有,非 Unix 就没 socket 啊
    wellsc
        6
    wellsc  
       2020-07-23 17:33:56 +08:00
    dkpk
    sujin190
        7
    sujin190  
       2020-07-23 17:35:53 +08:00
    写个驱动直接操作网卡?但是又有个啥用呢,该解决的问题你还是得解决一遍啊
    est
        8
    est  
       2020-07-23 17:40:00 +08:00
    @xumng123 非 tcp,但是依然基于 udp socket 的。
    shansing
        9
    shansing  
       2020-07-23 17:40:53 +08:00
    又一个 XY problem ?
    nightwitch
        10
    nightwitch  
       2020-07-23 18:14:17 +08:00   1
    我只贴个图。。你这个由 socket 实现 TCP 让我有点蒙
    Mistwave
        11
    Mistwave  
       2020-07-23 18:37:29 +08:00 via iPhone
    @nightwitch 请问这是哪本书的图?
    ZehaiZhang
        12
    ZehaiZhang  
       2020-07-23 18:51:45 +08:00
    请教:socket 不是基于 TCP/IP 协议的么,lz 的意思是,(非) socket 实现 TCP 协议?
    Keyes
        13
    Keyes  
       2020-07-23 18:57:00 +08:00 via iPhone
    socket 就像字面意思一样是个套儿而已
    nightwitch
        14
    nightwitch  
      nbsp;2020-07-23 19:03:55 +08:00   1
    @Mistwave The Linux Programming Interface 有中文版
    Leigg
        15
    Leigg  
       2020-07-23 19:34:41 +08:00 via Android   1
    socket 只是个名字,表示<hostname:port>,你们不要针对它好不咯,楼上一堆瞎扯,还非 unix 就没有 socket...
    Shazoo
        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 关系不大。那是做高频和游戏高并发用的。
    reus
        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 的。
    FutherAll
        18
    FutherAll  
    OP
       2020-07-23 21:23:45 +08:00
    我理解的是 socket 是一种 Interface,是 BSD 对 tcp 协议抽象出的一组接口,并且在 Unix-link 的操作系统上都实现了 socket,并提供给应用使用;我是想理论上来说应该是有非 socket 实现的 tcp 协议,没 Google 到所以来问问,顺便理清一下思路。
    多谢楼上各位的回答。
    misaka19000
        19
    misaka19000  
       2020-07-23 21:25:28 +08:00
    你甚至可以自己操作网卡发送 raw 数据包
    VDimos
        20
    VDimos  
       2020-07-23 21:34:59 +08:00 via Android
    完全可以,你只要愿意,最底层可以直接通过串口来写
    kilen3a
        21
    kilen3a  
       2020-07-23 21:48:46 +08:00
    @Leigg 你在搞笑?楼主说的明显是 socket API/berkeley socket 好吗
    Mistwave
        22
    Mistwave  
       2020-07-23 22:16:50 +08:00
    @nightwitch 非常感谢!
    yuyuko
        23
    yuyuko  
       2020-07-24 02:43:36 +08:00 via iPhone
    XTI ?
    realpg
        24
    realpg  
    PRO
       2020-07-24 12:05:37 +08:00
    @FutherAll #18
    直接操作网卡,发 raw data packets
    sariya
        25
    sariya  
       2020-07-24 12:14:15 +08:00 via Android
    用 USB 协议,232 发都可以,只是一个载体
    sbilly
        26
    sbilly  
       2020-07-28 10:33:42 +08:00
    印象中 dpdk 并不包含协议栈,不知道新版本是不是已经包含了。你可以用 “用户态协议栈” 或者 “userland tcp ip stack” 搜一下。IwIP 、libuinet 、…… 之类开源的以外,还有比较多的商业产品。
    FutherAll
        27
    FutherAll  
    OP
       2020-07-28 11:01:42 +08:00
    @sbilly 搜到了,发现了新大陆。非常感谢!!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4395 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 10:11 PVG 18:11 LAX 03:11 JFK 06:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86