tcp问题-请教
时间:2010-08-27
来源:互联网
我已经在内核中完成了从三次握手建立完成到连接请求被accept的这段时间差的统计。
我用什么测试方法,能够确保,我代码中统计出来的时间是正确的,有说服力的?
我用什么测试方法,能够确保,我代码中统计出来的时间是正确的,有说服力的?
作者: peking_A_Liang 发布时间: 2010-08-27
QUOTE:
我已经在内核中完成了从三次握手建立完成到连接请求被accept的这段时间差的统计。
三次握手完成,就相当于服务器 accept了,你所指的这个时间差是什么?
QUOTE:
我用什么测试方法,能够确保,我代码中统计出来的时间是正确的,有说服力的?
你走到各个环节的时间都打印出来,应该就可以了。
作者: Godbach 发布时间: 2010-08-27
三次握手完成,和accept应该不是一回事吧。三次握手完成的代码在net/ipv4/tcp_input.c中下面这段,
/* step 5: check the ACK field */
if (th->ack) {
int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH) > 0;
switch (sk->sk_state) {
case TCP_SYN_RECV:
if (acceptable) {
tp->copied_seq = tp->rcv_nxt;
smp_mb();
tcp_set_state(sk, TCP_ESTABLISHED);
sk->sk_state_change(sk);
而accept对应的是系统调用sys_accept,最终会调用到inet_csk_accept,然后在inet_csk_accept中,如果客户端的接收队列不为空,那么服务器就会调用 newsk = reqsk_queue_get_child(&icsk->icsk_accept_queue, sk);,然后建立一个新的sock,我主要是想统计出这段时间差,可以确定的是先建立连接,然后再accept,所以时间差是正数。
/* step 5: check the ACK field */
if (th->ack) {
int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH) > 0;
switch (sk->sk_state) {
case TCP_SYN_RECV:
if (acceptable) {
tp->copied_seq = tp->rcv_nxt;
smp_mb();
tcp_set_state(sk, TCP_ESTABLISHED);
sk->sk_state_change(sk);
而accept对应的是系统调用sys_accept,最终会调用到inet_csk_accept,然后在inet_csk_accept中,如果客户端的接收队列不为空,那么服务器就会调用 newsk = reqsk_queue_get_child(&icsk->icsk_accept_queue, sk);,然后建立一个新的sock,我主要是想统计出这段时间差,可以确定的是先建立连接,然后再accept,所以时间差是正数。
作者: peking_A_Liang 发布时间: 2010-08-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28