Chinaunix
标题:
关于send与sk_buff 关系
[打印本页]
作者:
316953425
时间:
2014-03-19 17:01
标题:
关于send与sk_buff 关系
应用程序每次成功调用一个send,在内核中都会有一个sk_buff与其想对应么?
如果是的话,这么把二者关联起来
作者:
Godbach
时间:
2014-03-19 17:04
回复
1#
316953425
这个涉及到到的内容就多了。
send 是系统调用,走的是 socket,sk_buff 是 kernel 里面数据包的最基本数据结构。socket 和 sk_buff 通过一些关系最终关联起来。
作者:
316953425
时间:
2014-03-19 17:29
本帖最后由 316953425 于 2014-03-19 17:30 编辑
回复
2#
Godbach
那每一次成功调用send,都会产生一个新的sk_buff吗
作者:
Godbach
时间:
2014-03-19 17:48
回复
3#
316953425
应该是的,甚至是一个到多个。 TCP socket 里面有 write_queue 的,里面存储着待发送的所有报文。
send 执行成功,只代表系统调用的操作成功了,不代表报文成功发出去了。
更多的细节,你可以跟踪一下 kernel 中 send 的执行流程,或者看一下网上一些 send 实现的分析。
作者:
316953425
时间:
2014-03-20 09:03
回复
4#
Godbach
我现在有一个这样的问题:
nginx做代理,由于client访问nginx,nginx转给server,
由于nginx是反向代理的模型,他会与client和server分别建立一条tcp连接,
这样的话server从tcp中看到的源ip就是nginx的源ip了,有没有什么办法
让server看到的源ip是client的源ip呢???
作者:
chishanmingshen
时间:
2014-03-20 09:16
回复
5#
316953425
我觉得:让代理做dnat,同时保证server对client的路由指向代理。
具体配置就不清楚了。
作者:
Godbach
时间:
2014-03-20 10:04
回复
5#
316953425
这个很简单啊。Nginx 应该提供了透明代理的功能。你看一下配置,这样就可以将 client IP 透传给 server 了。
作者:
316953425
时间:
2014-03-20 10:33
本帖最后由 316953425 于 2014-03-20 10:36 编辑
回复
7#
Godbach
啊?nginx能做透明代理吗?nginx不是两条连接吗,透明代理不是一条连接???麻烦详细说一下
作者:
Godbach
时间:
2014-03-20 11:32
回复
8#
316953425
建议了解一下 HTTP 透明代理。
作者:
316953425
时间:
2014-03-20 11:35
本帖最后由 316953425 于 2014-03-20 11:35 编辑
回复
9#
Godbach
我刚才试了一下,nginx的配置文件为
user root;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
resolver 202.96.64.68;
server {
listen 80;
location / {
proxy_pass http://$http_host$request_uri;
}
}
}
应该是你所说的透明代理吧???
可是nginx还是两条连接啊
server看到的tcp 源ip还是nginx的
作者:
Godbach
时间:
2014-03-20 13:03
回复
10#
316953425
你这应该是基本的配置。
透明代理的话,是 nginx 可以用client IP 去和 server 建连。这样 server 看到的就是 client 的 IP。
作者:
316953425
时间:
2014-03-20 13:34
本帖最后由 316953425 于 2014-03-20 13:34 编辑
回复
11#
Godbach
我没搜到啊,能否给一些连接,或者提示,要是能这样就太好了,谷歌和百度基本都搜编了啊,没看见能这样配置的啊
作者:
316953425
时间:
2014-03-21 10:39
回复
11#
Godbach
在linux 内核模块中想使用系统调用connect函数,该如何调用啊??
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2