TCP连接建立与终止过程剖析.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? 2004 - 2010 UC Mobile ? 2004 - 2010 UC Mobile * TCP连接建立与终止过程剖析 性能测试组:凌宏立 2012-05-27 目录 TCP连接建立与终止过程剖析 2 案例 3 基础知识 1 网络模型 OSI七层网络模型 Linux TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 FTP,NFS,WAIS,HTTP,TFTP 表示层(Presentation) Telnet, Rlogin, SNMP, Gopher 会话层(Session) SMTP,DNS 传输层(Transport) 传输层 TCP,UDP,RTCP 网络层(Network) 网际层 IP, ICMP, ARP, RARP, AKP, UUCP 数据链路层(Data Link) 网络接口 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP 物理层(Physical) IEEE 802.1A, IEEE 802.2到IEEE 802.11 TCP协议特点 面向流的投递服务 面向连接的投递服务 TCP特性 可靠性传输 全双工传输 TCP报文格式 1、源端口和目的端口各占16位,每台电脑开启的端口数为 216= 65536 2、顺序号(SEQ),当一方要与另一方联系时就发送一个初始序号(ISN)给对方,TCP连接是 全双工的,即双方的数据流可同时传输。在传输过程中双方数据是独立的,因此每个TCP连接 必须有两个顺序号分别对应不同方向的数据流。ISN随时间而变化,可看作32位计数器,每4ms加1 3、确认序(ACK),在握手阶段,确认序号将发送方的序号加1作为回答,在数据传输 阶段,确认序号将发送方的序号加发送的数据大小作为回答,表示确实收到这些数据。 TCP报文格式 6个标志位: U R G 紧急指针,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据。 A C K 确认序号有效。 P S H 接收方应该尽快将这个报文段交给应用层,缩写为P。 R S T 重建连接,缩写为R。 S Y N 同步序号用来发起一个连接,缩写为S。 F I N 发端完成发送任务,缩写为F。 连接建立 4:1069 5:53 客户端 服务端 (主动打开)SYN_SEND ESTABLISHED SYN_RCVD LISTEN(被动打开) ESTABLISHED SYN (SEQ=X) ACK Y+1 SYN (SEQ=Y ACK= X+1) 1、请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN),这个S Y N段为报文段1。 2、服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将ACK确认序号设置为客户的I S N加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。 3、客户必须将ACK确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3) 总结: 客户端:SYN_SENT -ESTABLISHED 服务端:LISTEN-SYN_RECV -ESTABLISHED 连接建立超时 TCP-IP详解卷1:服务器断开时,客户端会每隔多长时间尝试重新发送SYN建立连接? 第二个SYN与第一个SYN的间隔时间是5.8秒,第三个与第二个的间隔时间是24秒(已过时) Linux 2.5以上版本已经改变了连接建立超时算法,目前每次重新发送SYN的间隔时间为: 3 x 2n (n = 0) Linux源码:http://lxr.linux.no/#linux+v3.2.6/net/ipv4/tcp_timer.c#L141 总结: 1、超时间隔:第二个与第一个相隔3s,第三个与第二个相隔6s,第四个与第三个相隔12s,即3 x 2n (n = 0) 2、服务器断开连接,客户端最多会发送6次SYN请求(即重试5次),若仍无法连接,则中断请求。 PS: 通过tcp_syn_retries :INTEGER修改内核参数设置发送多少个 SYN 连接请求才决定放弃,不应该大于255 ([root@test1 ~]# sysctl -a | grep tcp_syn_retries 查看默认值) if (boundary = linear_backoff_thresh) timeout = ((2 boundary) - 1) * rto_base; 2 1 * 3 = 4*3 2 2 * 3 = 8*3 连接终止 客户端 服务端 TIME

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档