- 论坛徽章:
- 2
|
本帖最后由 duoniK 于 2014-02-15 17:03 编辑
在看tcp进行socket传输时,里面提到 tcp_sendmsg() 和 tcp_sendpage() 都是发送数据的,发送的数据来自用户空间和页缓存,这里不清楚“用户空间”和“页缓存”到底是什么概念,还请大家把忙解答下。谢谢
原文:
tcp_sendmsg() and tcp_sendpage() gather up data (either from userspace or the page cache) into SKB packets and tack them onto the sk_write_queue() of the TCP socket.
另外 上层的数据怎样进行跟踪测试呢?
如下所示 因为tcp_transmit_skb 是 同一个数据出口,理论上 发送的数据在此处都应该可以打印出来,自己将skb中的
线性存储区的数据(不支持TSO)全部打印,但并不能全部显示,不知道是哪里出错了?
tcp_transmit_skb 添加了如下代码
{
....
tail_data = nskb->tail - nskb->data;
memcpy(buffer, nskb->data, tail_data);
buffer[tail_data] = '\0';
printk("nskb->data:%s, tail_data:%d", buffer, tail_data);
....
}
通过ftp协议传输一个文件,但是文件内的内容无法 全部打印出,想知道命令数据和文本数据分别走哪条路径传输的?谢谢 |
|