V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
palemoky
V2EX  ›  问与答

本机起服务调试,还会建立 TCP 连接吗?

  •  
  •   palemoky · 43 天前 · 698 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在看 TCP 方面的书,如果客户端与服务端不在同一主机可以理解数据包的链路,突然有个疑问,如果我在本机开启服务调试请求,数据包链路是怎样的呢?还会进行 TCP/IP 封包到网卡兜一圈吗?

    15 条回复    2021-09-13 14:33:21 +08:00
    iBugOne
        1
    iBugOne   43 天前 via Android   ❤️ 1
    该有的封包、路由、防火墙等当然还是有,一层层下去直到 IP 层,但是不会上物理网卡,本机流量有个专属端口叫回环( loopback ),可以当做在内存里绕了一圈
    iBugOne
        2
    iBugOne   43 天前 via Android
    对于 TCP 服务,端口、连接、滑动窗口、拥塞控制一样都不会少,不过因为“内存里绕一圈”的这个“链路”不会丢包,这些东西基本上没啥影响
    datoujiejie221
        3
    datoujiejie221   43 天前
    装个 wireshark 抓 loopback 的包
    cubecube
        4
    cubecube   43 天前
    会走一遍协议栈,所以端口流量都会有,最后不真上网卡。
    数据在 hard_start_xmit 往设备上发的时候,被 loopback_dev 设备拦截就往回走了。

    内核里面有源码,如果按照 tcpip 去理解,就是除了物理层都会走
    jasonyang9
        5
    jasonyang9   43 天前
    回环的设计真的很棒
    chairuosen
        6
    chairuosen   43 天前
    @iBugOne 学习了,如果访问的是本机的外网 ip 监听的端口,也会被 loopback 拦截么?
    warcraft1236
        7
    warcraft1236   43 天前
    @chairuosen 坐等答案,感觉会
    palemoky
        8
    palemoky   43 天前 via iPhone
    @iBugOne @cubecube @datoujiejie221 感谢三位的解答,我用 wireshark 抓个包研究下
    iBugOne
        9
    iBugOne   43 天前 via Android
    @chairuosen 看你说的是哪个“外网”,如果是操作系统里登记在网卡上的 IP 地址,那么一样是走 loopback ( Linux 运行 ip r s t local 查看回环路由表),如果是经过层层 NAT 的“真 · 外网”,那还是要从网卡出去的,因为操作系统不知道你 NAT 后的 IP 地址
    iBugOne
        10
    iBugOne   43 天前 via Android
    @cubecube 取决于 iface 类型,链路层也不一定会走,比如 loopback 和三层隧道( GRE / WireGuard )就没有链路层,所以我前面说封包只说封到 IP 层
    lysS
        11
    lysS   42 天前
    @datoujiejie221 早就试过了,这种抓不到
    zhoudaiyu
        12
    zhoudaiyu   42 天前 via iPhone
    Unix Domain Socket 就不会🐶
    cubecube
        13
    cubecube   41 天前
    @iBugOne 我之所以没说链路层这个茬,就是因为现实中不存在呀。没必要硬去套 7 层模型
    iBugOne
        14
    iBugOne   41 天前 via Android
    @zhoudaiyu UDS 只是一种承载方式,而且如果你用了 UDS 应该就没有 TCP 这个概念了吧。

    AF_UNIX 本质上是 Unix IPC,不经过网络栈,有独立于 TCP/UDP 的两套面向数据流和数据包的“协议”,并且 API 甚至一些行为也和 T/U 不完全一致。
    julyclyde
        15
    julyclyde   39 天前
    TCP/IP 其实和网卡没啥关系,谈不上“去网卡”绕一圈
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2188 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:28 · PVG 13:28 · LAX 22:28 · JFK 01:28
    ♥ Do have faith in what you're doing.