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 建立隧道的套接字和传输截获包的套接字》分析。
  • 相关阅读:
    ActionContext和ServletActionContext
    1.有Dao为什么还要Service?
    1.DBCP和CP30的区别
    设计模式之单例模式(java实现)
    DOM之练习2
    js之DOM练习题
    动态改变dom结构常用方法
    js 自动类型转换
    定位属性position
    html基础
  • 原文地址:https://www.cnblogs.com/helloweworld/p/2699301.html
Copyright © 2011-2022 走看看