网站大量收购独家精品文档,联系QQ:2885784924

tcp协议的规则解说.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

tcp协议的规则

TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它有以下主要规则:

一、连接建立规则

三次握手(Three-wayHandshake)

第一次握手:客户端向服务器发送一个SYN(Synchronize)报文段。这个报文段中,客户端会选择一个初始序列号(SequenceNumber),例如设为x。SYN标志位被设置为1,表示这是一个连接请求。这一步就像是客户端在说“我想和你建立连接”。

第二次握手:服务器收到客户端的SYN报文段后,会返回一个SYN-ACK报文段。服务器会确认客户端的SYN,将确认号(AcknowledgmentNumber)设置为x+1。同时,服务器也会选择自己的初始序列号,设为y,并且设置SYN和ACK标志位都为1。这就好比服务器在回答“我收到你的请求了,我也准备好建立连接,这是我的初始序列号”。

第三次握手:客户端收到服务器的SYN-ACK报文段后,会向服务器发送一个ACK报文段。这个ACK报文段的确认号为y+1,ACK标志位为1。这一步表示客户端确认收到了服务器的序列号,此时连接正式建立,就好像客户端回应“我也收到你的序列号了,我们可以开始通信啦”。

二、数据传输规则

字节流传输

TCP将应用层交付下来的数据看成是一连串无结构的字节流。例如,一个文件传输应用程序通过TCP发送一个文件,TCP不会对文件的内容结构(如文件是由多个记录组成还是一个连续的数据块)进行任何处理,只是将文件内容按照字节顺序依次发送。

发送端和接收端都各自维护一个字节流的序列号。发送端在发送数据时,会给每个字节分配一个序列号,接收端根据序列号来确认收到的数据是否完整、有序。

流量控制(FlowControl)

TCP使用滑动窗口机制来进行流量控制。接收端会向发送端通告一个接收窗口(ReceiveWindow)的大小。这个窗口大小表示接收端当前还有多少缓冲区空间可以用于接收新的数据。

例如,接收端的接收窗口大小为1000字节,发送端就可以发送不超过1000字节的数据。当接收端处理完一部分数据,缓冲区空间增加时,它会更新接收窗口大小并告知发送端,发送端根据新的窗口大小调整发送的数据量。

可靠传输

确认机制(Acknowledgment):接收端收到数据后,会向发送端发送确认信息。确认号表示接收端期望收到的下一个字节的序列号。例如,发送端发送了序列号为1-100的字节,接收端成功收到后,会发送一个确认号为101的确认报文段,告诉发送端“我已经收到了1-100字节,我现在期望收到序列号为101的字节”。

重传机制(Retransmission):如果发送端在一定时间内没有收到接收端的确认信息,或者收到了多个相同的确认号(表示接收端可能没有收到后续的数据),发送端会认为数据丢失或者损坏,就会重新发送这些数据。例如,发送端发送了一个数据包,在超时时间(这个时间可以根据网络状况动态调整)内没有收到确认,就会重新发送该数据包。

三、连接终止规则

四次挥手(Four-wayHandshake)

第一次挥手:主动关闭方(假设是客户端)发送一个FIN(Finish)报文段,表示客户端没有数据要发送了,请求关闭连接。此时客户端进入FIN-WAIT-1状态。

第二次挥手:服务器收到客户端的FIN报文段后,会发送一个ACK报文段给客户端,确认收到了客户端的关闭请求。此时服务器进入CLOSE-WAIT状态,客户端收到这个ACK后进入FIN-WAIT-2状态。在CLOSE-WAIT状态下,服务器可能还需要发送一些剩余的数据给客户端。

第三次挥手:当服务器也没有数据要发送了,它会发送一个FIN报文段给客户端,请求关闭连接。此时服务器进入LAST-ACK状态。

第四次挥手:客户端收到服务器的FIN报文段后,会发送一个ACK报文段给服务器,确认收到服务器的关闭请求。然后客户端等待一段时间(这个时间称为2MSL,MaximumSegmentLifetime的两倍)后才真正关闭连接,服务器收到ACK后就立即关闭连接。2MSL等待时间主要是为了确保最后一个ACK能被服务器收到,并且防止在这个连接上产生的旧的重复数据包干扰新的连接。

文档评论(0)

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

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

1亿VIP精品文档

相关文档