急-TCP握手一个小问题
时间:2010-07-15
来源:互联网
请教下,现在有个任务,是需要记录TCP三次握手的时间问题,最近几天看了看三次握手的过程,大体有个了解,记录时间问题,我初步想到可以利用TCP的时间戳选项来解决,但时间戳选项里面的是unsigned int 类型,不是显示的是比如几点几分,请高手帮忙解决下此问题,非常感谢。
1,可以利用TCP_TIMESTAMPS数值差,然后最后通过什么转换,转换成时间。
2,然后可以通过与proc的结合呈现在/proc下的文件里。
谢谢。。
期待高手。谢谢。
[email protected]
作者: peking_A_Liang 发布时间: 2010-07-15
作者: peking_A_Liang 发布时间: 2010-07-15
作者: peking_A_Liang 发布时间: 2010-07-15
在线等答案。
作者: peking_A_Liang 发布时间: 2010-07-15

作者: peking_A_Liang 发布时间: 2010-07-15
c----->s --------syn包 1
c<----s --------syn-ack包 2
c---->s --------ack包 3
计算1到3的这个过程的时间,即从服务器收到syn包,服务器给出syn-ack回应包,客户端给出ack包,这段时间。
1,数据结构更改 include/net/sock.h
struct sock{
......
struct timeval begining_time;//增加这2个变量
struct timeval ending_time;
......
}
然后在net/ipv4/tcp_input.c里修改如下
int tcp_rcv_state_process(struct sock *sock,struct sk_buff *skb,struct tcphdr *th,unsigned len)
{
......
case TCP_LISTEN:
{
......
if(th->syn)
{
//增加这段
if(likely(sysctl_tcp_do_compute_rtt))
{
memset(&sk->begining_time,0,sizeof(struct timeval));
do_gettimeofday(&sk->begining_time);
}
}
......
}
......
case TCP_SYN_RECV:
if(acceptable)
{
tp->copied_seq = tp->rcv_nxt;
smp_mb();
tcp_set_state(sk,TCP_ESTABLISHED);
//增加部分
if(likely(sysctl_tcp_do_compute_rtt))
{
memset(&sk->ending_time,0,sizeof(struct timeval));
do_gettimeofday(&sk->ending_time);
//然后这2个时间的差值,应该是我需要的东西把。
}
}
}
sysctl_tcp_do_compute,为增加的sysctl控制开关,最后ending_time和begining_time的差值应该是最后的结果吧,现在的情况,没考虑syn cookies,基本的功能,请高手指教下,有别的方法请帮貼出来,谢谢。。。
作者: peking_A_Liang 发布时间: 2010-07-16
作者: peking_A_Liang 发布时间: 2010-07-16
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28