对于TCP/IP一书中TCP部分,我认为关键要掌握3点 1.建链和拆链过程 http://bbs./viewthread.php?tid=332819 2.数据交互规则 http://bbs./viewthread.php?tid=332827 3.流量控制原则 http://bbs./viewthread.php?tid=332828 针对这几点,我进行了简要概括,希望有助于初学者理解 数据交互规则 TCP的数据交互过程,采用的也是发送应答方式。对于数据交互,非常重要的是要了解数据包编号的应用 如上图所示,每个发送包都会有一个自己的编号,而 “包编号+包的数据长度”就是下一个连续包的编号。如上图中第一个包编号是1000,数据长度是512,则下个包的编号是1000+512=1512。而接收端的确认消息中,只包含它期望收到的下一个包的包号,用于告知发送端数据包的接收的进展。当发送端发现确认的包号不是将要发送的包号,则可能发生了丢包,需要进行重发,如下图所示: 仔细看上图,会发现重发的包与原先的包的大小不同,从100变成了200,这并不是错误,TCP的重发只是从丢包的包号开始重新发数据,但是数据的大小可以不一样,可以包含更多的数据。同样,接收端会忽略比已收到的包号小的数据包,确认消息中,只包含根据已收包得出的最大的期望收包号。也就是说,接收端不需要对每个收到的包单独确认,而只需要确认最大的接收包号就可以完成对之前所有包的确认。而在交互应用时,一个数据包会同时携带本端的确认消息,如下图所示: 1.建链和拆链过程 http://bbs./viewthread.php?tid=332819 3.流量控制原则 http://bbs./viewthread.php?tid=332828 [ 本帖最后由 chris_waity 于 2009-5-20 06:55 编辑 ] |
|