zoukankan      html  css  js  c++  java
  • vtun 数据包发送流程,即新建socket携带截获的数据在隧道中传输

    下面分析使用UDP封装数据包发送流程,从udp的socket创建开始分析,

    client中调用tunnel函数,tunnel中调用linkfd完成数据的发送。

    发送数据流程都在linkfd.c中,这里的发送指的是从虚拟网卡读出数据,作为新建socket的数据部分发送。

    linkfd函数中调用lfd_linker函数,其中有数据包的发送函数,

    if( len && proto_write(fd1, out, len) < 0 )

    那么建立数据包的和连接的过程在哪里?这就要分析fd1了,

    下面分析fd1,

    int fd1 = lfd_host->rmt_fd;

     

    找lfd_host,在linkfd函数中lfd_host = host;

    host是linkfd的参数,再找linkfd函数在哪被调用了,在tunnel.c中

    opt = linkfd(host);

     

    最终找到了在client.c中host->rmt_fd = s;

    仍然是建立连接时的套接字!

     

    也就是建立隧道和建立后发送数据的套接字是同一个!

    所以只是在认证过程中建立了一个套接字!发送时并没有再建套接字!

    上面分析有误,看后续《vtun 建立隧道的套接字和传输截获包的套接字》分析。
  • 相关阅读:
    游戏引擎中的光照算法
    深入剖析GPU Early Z优化
    UE4联机编译光照
    深入剖析MSAA
    Unity 使用xLua遇到的坑
    扩展SQLite使其能从apk文件中读取db
    tolua#代码简要分析
    虚幻4垃圾回收剖析
    虚幻4蓝图虚拟机剖析
    java转成xml
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2699301.html
Copyright © 2011-2022 走看看