无线上传数据tcp连接数err-1

&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!君,已阅读到文档的结尾了呢~~
pop3协议的安全策略研究及其实现
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
pop3协议的安全策略研究及其实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口问题已关闭
代为完成个人任务
提问需要满足:其他人可能遇到相似问题,或问题的解决方法对其他人有所助益。如果通过其他方式解决遇到困难,欢迎提问并说明你的求知过程。
不同意楼上的看法,既然人家问了这个问题,说明他可能对这个概念不清楚,想知道在客户端不回复数据的情况下,服务器以什么方式来结束会话。 就算是选择题,说清楚比较好。首先TCP要保证正常工作,至少应该有四种计时器:重传计时器、持久计时器、保活计时器和时间等待计时器。当服务器和客户端3次握手后(感谢纠正错误),服务器发送第一个数据包 ,重传计时器开始工作,对端长时间不回复数据包,(TCP重传分为快速重传(Fast
Retransmission)和基于计时器的重传(Timer-Based Retransmission),一般现在的服务器都使用后者来进行重传计时,)TCP Segment并不能无限次重传,因此TCP使用了两个阈值来限制TCP
Segment的重传数量。1. thresholdR1: 重传次数超过R1后,
通知IP层,“” 失效网关检测“”2. thresholdR2; 重传次数超过R2,关闭连接当然也是可以通过以时间来指定R1 和R2( 出处)
已有帐号?
无法登录?
社交帐号登录
男,27岁,
。。特长:心理学。。博客访问: 83915
博文数量: 42
博客积分: 2500
博客等级: 少校
技术积分: 425
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
tcp.c文件的tcp_err函数
978计划工作组 <st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="20" Month="8" Year="-8-20
&* This routine is called by the ICMP module when it gets some
&* sort of error condition.& If err < 0 then the socket should
&* be closed and the error returned to the user.& If err > 0
&* it's just the icmp type << 8 | icmp code.& After adjustment
&* header points to the first 8 bytes of the tcp header.& We need
&* to find the appropriate port.
void tcp_err(int err, unsigned char *header, unsigned long daddr,
&&&&&& unsigned long saddr, struct inet_protocol *protocol)
&&&&&& struct tcphdr *th;
&&&&&& struct sock *sk;
&&&&&& struct iphdr *iph=(struct iphdr *)header;
&&&&&& header+=4*iph->
&&&&&& th =(struct tcphdr *)header;
&&&&&& sk = get_sock(&tcp_prot, th->source, daddr, th->dest, saddr);
&&&&&& if (sk == NULL)
&&&&&&&&&&&&& return;
&&&&&& if(err<0)
&&&&&& & &&& sk->err = -err;
&&&&&& & &&& sk->error_report(sk);
&&&&&& & &&& return;
&&&&&& if ((err & 0xff00) == (ICMP_SOURCE_QUENCH << 8))
&&&&&&&&&&&&& /*
&&&&&&&&&&&&& &* FIXME:
&&&&&&&&&&&&& &* For now we will just trigger a linear backoff.
&&&&&&&&&&&&& &* The slow start code should cause a real backoff here.
&&&&&&&&&&&&& &*/
&&&&&&&&&&&&& if (sk->cong_window > 4)
&&&&&&&&&&&&&&&&&&&& sk->cong_window--;
&&&&&&&&&&&&& return;
/*&&& sk->err = icmp_err_convert[err & 0xff].& -- moved as TCP should hide non fatals internally (and does) */
&&&&&& &* If we've already connected we will keep trying
&&&&&& &* until we time out, or the user gives up.
&&&&&& &*/
&&&&&& if (icmp_err_convert[err & 0xff].fatal || sk->state == TCP_SYN_SENT)
&&&&&&&&&&&&& if (sk->state == TCP_SYN_SENT)
&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&& tcp_statistics.TcpAttemptFails++;
&&&&&&&&&&&&&&&&&&&& tcp_set_state(sk,TCP_CLOSE);
&&&&&&&&&&&&&&&&&&&& sk->error_report(sk);&&&&&&&&&&& /* Wake people up to see the error (see connect in sock.c) */
&&&&&&&&&&&&& }
&&&&&&&&&&&&& sk->err = icmp_err_convert[err & 0xff].errno;&&&&&&&&&&
&&&&&& return;
}2函数用途
ICMP icmp_rcvTCP 。
4.1& sk = get_sock(&tcp_prot, th->source, daddr, th->dest, saddr);
tcp_prot:tcp协议处理函数集。
th->source:源端口号。
daddr:目的地址。
th->dest:目的端口号。
saddr:源地址。
get_sock:此函数定义在af_inet.c 中,用于根据TCP套接字四元素查询本地对应的sock结构。
4.2 if(err<0)
&&&&&& & && sk->err = -
&&&&&& & && sk->error_report(sk);
&&&&&& & &&
err<0:0。
sk->err=-err:结构的err域中。
sk->error_report:函数,唤醒相关的线程。
4.3 if ((err & 0xff00) == (ICMP_SOURCE_QUENCH << 8))
&&&&&&&&&&&&& if (sk->cong_window > 4)
&&&&&&&&&&&&&&&&&&&& sk->cong_window--;
ICMP_SOURCE_QUENCH:是常数4,源端节制。
sk->cong_window:节制窗口大小。
err&oxff00:取高8位,即取得错误类型;高8位是错误类型,低8位是某类错误的具体错误。
4.4& if (icmp_err_convert[err & 0xff].fatal || sk->state == TCP_SYN_SENT)
icmp_err_convert:是icmp_err结构类型的数组,此结构有两个域,error是错误类型,fatal标示该错误是否可恢复。
fatal:值为1表示不可恢复需要关闭并释放套接字,为0表示可恢复通信可继续进行。
TCP_SYN_SEND:SYNTCP_ESTABLISHED。
4.5& if (sk->state == TCP_SYN_SENT)
&&&&&&&&&&&&& tcp_statistics.TcpAttemptFails++;
&&&&&&&&&&&&& tcp_set_state(sk,TCP_CLOSE);
&&&&&&&&&&&&& sk->error_report(sk);
sk->state == TCP_SYN_SENT:
tcp_set_state:设置TCP的当前状态,TCP_CLOSE表示结束了此次连接
tcp_statistics.TcpAttemptFails:
阅读(765) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 tcp上传文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信