1.定位:
传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP (Transmission Control Protocol ) 和 用户数据包协议UDP (User Datagram Protocol)。
传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。
原理:应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。
之后TCP协议把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);
如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算和校验。
2.特点:
1)TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。TCP提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。
2)在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。
窗口机制:
在发送方传输数据段之后,以及在它从接收方收到确认之前,有一段时间间隔,发送方可以利用这个间隔来发送更多的数据。发送方机器在没有收到对所传送数据的确认时,被允许发送的数据段的数量(以字节计)就称为―窗口。
说明:窗口用来控制未被确认的数据段的数量。因此,窗口的尺寸大小控制了有多少信息从一端传送到另一端。
如:当将窗口尺寸配置为1时,发送方机器在传送下一个数据段时,必须等待对它所传送每一个数据段的确认。如果已经将窗口尺寸配置为3,就允许在收到确认之前一次性传送3个数据段
说明:如果接收方主机不能收到应当确认的所有数据段,接收方主机将减小窗口尺寸,以改进通信会话质量。
窗口可以看作是缓冲区,数据到另一方不是直接被处理,而是被加载到缓冲区。(例中,通过发送ACK3 …给发送方)
3)在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法),该算法主要包括三个主要部分:1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。
4.TCP通过下列方式来提供可靠性:
- 1)应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment。
- 2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
- 3)TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
- 4)既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
- 5)既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
- 6)TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
5.TCP报头长度为20字节