- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络基础知识讲座之十tcp协议理解进阶
网络基础知识讲座之十:TCP协议理解进阶我们说过,TCP协议在能够发送数据之前就建立起了“连接”。要实现这个连接,启动TCP连接的那一方首先将发送一个SYN(回忆一下在上一篇文章中讲到的TCP包头格式)数据包。这只是一个不包含数据的数据包,然后,打开SYN标记。如果另一方同时在它收到SYN标记的端口通话,它将发回一个SYN+ACK:SYN和ACK标志位都被打开,并将ACK(确认)编号字段设定为刚收到的那个数据包的顺序号字段的值。接下来,连接发起方为了表示收到了这个SYN+ACK信息,会向发送方发送一个最终的确认信息(ACK包)。这种SYN、SYN+ACK、ACK的步骤被称为TCP连接建立时的“三次握手”。在这之后,连接就建立起来了。这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。任何一方都可以关闭一个TCP连接,要求双方发送一个FIN信号关闭自己的通讯频道。一方可以在另一方之前关闭,或者双方同时关闭TCP连接。因此,当一方发送一个FIN信号时,另一方可发送“FIN+ACK”,开始关闭自己一方的通信并且确认收到了第一个FIN信号。发送第一个FIN信号的人接下来再发送一个“FIN+ACK”信息,确认收到第二个FIN信号。另一方就知道这个连接已经关闭了,并且关闭了自己的连接。发送第一个FIN的人没有办法收到最后一个ACK信号的确认信息。这时它会进入“TIME_WAIT”(等待时间)状态并启动一个定时器,防止另一方没有收到ACK信息并且认为连接仍是打开的。一般来说,这个状态会持续1至2分钟。现在,我们来讨论第一个问题。如果有人(假如一个黑客)在你的Web服务器上留下一个半开或者半关的连接,那就是一个坏消息。每一个连接都要消耗内存,打开数千个虚假的TCP连接可能导致服务器瘫痪。当然,你实际上不可能在不影响TCP正常工作的情况下调整TCP定时器。如果你听说过TCP SYN 攻击的话,那就是这个意思。为了防止出现这种情况,大多数操作系统都要限制半开连接的数量。例如,Linux默认的限制一般是256个。我们前面提过将讨论关于持续流控制问题,现在我们就来讨论这个问题。TCP中实现它的机制是TCP滑动窗口机制。TCP协议使用“重新发送与正向ACK”来保证数据传输的可靠性。发送方将等待一段时间,如果没有收到其发送的数据包的ACK确认信息,发送方就要重新发送。顺便说一下,TCP协议中有许多定时器。这只是其中一个定时器。ACK的概念对于流控制是非常重要的,因为TCP滑动窗口协议使TCP的往复确认变得更有效率。如果TCP要发送一个数据包并且等待每一个ACK确认信息,它实际上就把数据吞吐量削减了一半。
理想的情况是,我们能够一次发送许多数据包,然后等待收到一个确认收到全部数据包的ACK信息,而不用对方发来更多的数据。但是,我们如何知道发送了多少个数据包呢?TCP窗口尺寸可以控制在“已发送但是没有确认”的状态下能够容纳多少个数据包。如果这个窗口尺寸很大,我们不必等待ACK信息就可以发送大量的数据包。这实际上就是流控制。接收方就是控制窗口大小的那一方。如果接收方将窗口大小设为“0”,那么,发送方根本就不能发送任何数据。如果这个窗口的尺寸是“1”,那么,我们就回到了简单的“发送和等待ACK”的协议。如果最后的窗口尺寸是“0”,发送者将发出一个探测信号以搞清这个窗口什么时间再次打开。如果发送方从来没有收到ACK信息,它就一直不断地重试,直到定时器过期。请记住,这个窗口尺寸在TCP头中是一个16位字段。如果你要一个窗口尺寸(按字节计算)大于16位可以表示的容量(2的16次方个字节),还可以使用一个名为“窗口缩放”的TCP协议选项。这个选项允许窗口尺寸乘以比例因子。如果没有极大的窗口尺寸,TCP协议就就无法充分利用GB级别的高速连接。这也是我们需要针对这些新的高速连接调整TCP参数的原因,关于TCP流控制的问题,我们不能不提一下Nagle算法。如果我们在一个telnet连接上使用一个大的TCP窗口会发生什么事情呢?你会输入一个指令(例如敲了一个字母),然后一直等待回应它却迟迟不出现在终端回显上。这对于实时通信来说是一个大问题。而且,telnet也会增加网络的阻塞度,因为一个字节的数据(例如我们的一次击键)需要40个字节的包头。于是RFC 896定义这个Nagle算法,用以消除小的数据包。这个思路是我们应该在数据发送之前给先把小数据集中起来然后一次性发送,以便提高效率。为了更有效率,它还限定只允许存在一个未经确认的数据段,你在得到确认信息之前不能发送更多的数据。Telnet和互动SSH连接使用TCP_NODELAY套接口选项启用这个功能,这样当你按下一个按键的时候,你能够立即得到一个回应。当然,我们仍是忽略了有关TC
您可能关注的文档
- 模联晚会策划方案.doc
- 模具基本知识大全.doc
- 明珠新城创意方案.doc
- 某基础注浆加固建议方案.doc
- 某客运专线xx特大桥0块预压方案.doc
- 某某市三严三实教育活动方案(经典).doc
- 某医院围手术期管理制度.doc
- 纳客运做方案.doc
- 脑萎缩治疗方案.doc
- 耐臭氧试验机的基础知识与选购小窍门.doc
- DB54_T0361-2024_茄子嫁接育苗技术规程_西藏自治区.docx
- DB2327_T073-2023_大兴安岭金莲花栽培技术规范_大兴安岭地区.docx
- TCSEEXXXX-2025电力负荷柔性调控终端技术规范(征求意见稿) .docx
- DB54_T0388-2024_犊牦牛代乳粉饲喂技术规程_西藏自治区.docx
- DB54_T0339-2024_青稞啤酒生产技术规程_西藏自治区.docx
- DB54_T0359-2024_雅江雪牛育肥期饲养管理技术规程_西藏自治区.docx
- DB2327_T068-2023_大兴安岭苍术栽培技术规范_大兴安岭地区.docx
- DB2327_T071-2023_大兴安岭防风栽培技术规范_大兴安岭地区.docx
- DB54_T0371-2024_高羊茅栽培技术规程_西藏自治区.docx
- DB54_T0376-2024_樟子松造林技术规程_西藏自治区.docx
文档评论(0)