计算机网络自顶向下方法 第三章 3.5 面向连接的运输:TCP

计算机网络自顶向下方法总结3.5面向连接的运输:TCP

目录

3.5 面向连接的运输:TCP

        3.5.1 TCP连接

        3.5.2 TCP报文段结构

        3.5.3 往返时间的估计与超时

        3.5.4 可靠数据传输

        3.5.5 流量控制

        3.5.6 TCP连接管理


3.5 面向连接的运输:TCP

        3.5.1 TCP连接

        TCP被称为是面向连接的(connection-oriented),在两个数据交换进程之间,这两个进程必须先进行“握手”,即相互发送某些预备报文段,以建立确保数据传输的参数。

        由于TCP协议只在端系统中运行,而不在中间的网络元素(路由器和链路层交换机)中运行,所以中间的网络元素不会维持TCP连接状态,即不是有连接的。

        TCP提供全双工服务(full-duplex service),也是点对点(point-to-point)的。

        TCP连接的建立过程常被称为三次握手(three-way handshake)。详细介绍见书中。

        注意最大报文段长度(Maximum Segment Size,MSS)是指在报文段里应用层数据的最大长度,而不是指包括首部的TCP报文段的最大长度。

        TCP连接的组成包括:一台主机的缓存,变量和与进程连接的套接字,以及另一台主机的另一组缓存,变量和与进程连接的套接字。

        3.5.2 TCP报文段结构

        TCP的报文段由首部字段和一个数据字段组成。

        首部包括源端口号和目的端口号,检验和字段(check)。还包括32比特的序号字段(sequence number field)和32比特的确认号字段(acknowledgement number field),16比特的接收窗口字段(receive window field),4比特的首部长度字段(header length field),6比特的标志字段(falg field)等等。详细介绍见书中。

        TCP把数据看成一个无结构的,有序的字节流。一个报文段的序号(sequence number for a segment)因此是该报文段首字节的字节流编号。一条TCP连接的双方均可随机地选择初始序号。

       主机A填充进报文段的确认号时主机A期望从主机B收到的下一字节的序号。

        TCP被称为提供累积确认(cumulative acknowledgement)

        当主机在一条TCP连接中收到失序报文段时怎么办?

  • 接收方立即丢弃失序的报文段
  • 接收方保留的失序的字节,并等待缺少的字节以填补该间隔。

        对客户到服务器的数据确认被装载在一个承载服务器到客户的数据的报文段中,这种确认被称为是被捎带(piggybacked)

        3.5.3 往返时间的估计与超时

        TCP采用超时重传机制来处理报文段的丢失问题。

        估计往返时间和设置和管理重传超时间隔详细见书中,这部分有点复杂。

        有些版本的TCP在收到三个冗余的ACK时,会在超时之前出发对该报文段的重传。

        一个发送方能够具有的未被确认的报文段的具体数量是由TCP的流量控制和拥塞控制机制决定的。

        3.5.4 可靠数据传输

        TCP在IP不可靠的尽力而为服务之上创建了一个可靠数据传输服务(reliable data tranfer service),确保数据流是无损坏,无间隔,非冗余和按序的数据流。

        TCP发送方有3个与发送和重传有关的主要事件:从上层应用程序接收数据,定时器超时和收到ACK。详细见书中。

        当超时事件发生时,TCP重传时会将下一次的超时间隔设为先前的两倍,而在另外两个事件(收到上层应用的数据和收到ACK中)的任意一个启动时,TimeoutInterval由最近的EstimatedRTT和DevRTT值推算到。

        冗余ACK(duplicate ACK)就是再次确认某个报文段的ACK,而发送方先前已经收到对该报文段的确认。一旦收到3个冗余的ACK,TCP就执行快速重传(fast retransmit),即在该报文段的定时器过期之前重传丢失的报文段。

        3.5.5 流量控制

        TCP为它的应用程序提供了流量控制服务(flow-control service)。TCP通过让发送方维护一个称为接收窗口(receive window)的变量来提供流量控制。接收窗口用于给发送方一个指示——该接收方还有多少缓存空间,可以保证发送方发送数据,不会使接收方的接收缓存溢出。详细见书中。

        3.5.6 TCP连接管理

        客户TCP通过三次握手(three-way handshake)的方式与服务器中的TCP建立一条TCP连接。

        第一步:客户端的TCP向服务器发送一个特殊的TCP报文段,SYN置为1。

        第二步:服务器向客户TCP发送允许连接的报文段,该允许连接的报文段被称为SYNACK(SYNACK segment)。

        第三步:客户接收服务器发送SYNACK报文段,并发送另外一个报文段,SYN置为0。

        这些报文段中还携带了另外的数据,初始序号,确认号字段等信息。

        关闭TCP连接:

        客户TCP向服务器进程发送一个特殊的TCP报文段,FIN置为1。当服务器接收到该报文段后,向发送方返回一个确认字段。然后,服务器发送它 的终止报文段,客户对这个报文段进行确认。详细见书中,在这个过程中有许多细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值