网络通信流程

CS 2024-04-07 at 20.50@2x

建立完tcp请求再发起http请求


开启系统代理之后,以clash verge为例 127.0.0.1:7897,假设hci.baidu.com的IP为153.37.235.50

发起对hci.baidu.com的HTTP请求,由于开启了系统代理不进行DNS解析,浏览器调用socket()获得一个socket,调用socket.connect(目标IP127.0.0.1,目标端口7897)建立socket连接(127.0.0.1:58789127.0.0.1:7897,内部会随机分配可用端口)内部可以根据需要建立TCP连接或者进行UDP通信(UDP不建立连接)。把HTTP数据包交给操作系统内核的通信模块封装,在封装到网络层时,查看到目标IP,根据路由表会到达到达回环网卡(loopback:lo0网口),有数据到了触发中断,操作系统内核网络模块拿到数据解封装,到达传输层查看网口是7897,把解封装的HTTP数据包交给clash,clash根据规则决定是直连还是发给代理服务器,【如果是www.google.com 根据规则要加密再发给代理服务器,发起DNS请求选中的代理节点的IP(如果有域名的话),clash调用connect发起连接[10.15.120.206:59591代理节点IP:端口],内部随机分配端口59591,把数据交给操作系统内核封装,到达网络层时,查看到目标IP,根据路由表交给en0网口,由于不在同一网段所以发给网关。】这个域名是直连,不加密,进行DNS解析,直接与目标服务器建立连接,clash调用connect发起连接(10.15.120.206:59591==153.37.235.50:80),内部随机分配端口59591。把数据交给操作系统内核封装,到达网络层时,查看到目标IP,根据路由表交给en0网口,由于不在同一网段所以发给网关。

  • DNS请求代理节点的IP

CS 2024-04-08 at 15.13@2x

  • 与代理服务器传输的数据

CS 2024-04-08 at 15.45@2x

CS 2024-04-08 at 15.50@2x

网络通信本质上就是进程间通信

CS 2024-04-07 at 22.42@2x

CS 2024-04-07 at 22.44@2x

CS 2024-04-07 at 21.33@2x

这个命令的含义是:

  • sudo: 表示以管理员权限执行后续的命令,因为lsof需要管理员权限才能列出所有进程的信息。
  • lsof: 是一个用于列出当前系统打开文件的工具,包括网络连接等信息。
  • -i: 选项表示只显示网络相关的信息。
  • -P: 选项表示不将端口号解析为服务名,而是以原始的数字形式显示。
  • -n: 选项表示不将网络地址解析为主机名,而是以原始的数字形式显示。
  • grep 1033: 使用grep命令筛选出包含字符串"1033"的行,这里是指筛选出与进程ID为1033相关的信息。

因此,整个命令的作用是以管理员权限列出所有的网络连接信息,并且筛选出与进程ID为1033相关的部分。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值