TCP传输工作原理

引言

在TCP/IP体系结构中,IP协议只管将数据包尽力传送到目的主机,无论数据传输正确与否,它都不做验证,不发确认,也不保证数据包的顺序,因而不具有可靠性。这一问题要由传输层TCP协议来解决,TCP协议为Internet提供了可靠的无差错的通信服务。

一、OSI参考模型和TCP/IP参考模型

OSI模型(open system interconnection reference model)是基于国际标准化组织(ISO)的建议而发展起来的,它分为如图1所示的七层。

TCP/IP最初是为ARPANET网开发的网络体系结构,主要由两个重要协议即TCP协议和IP协议而得名。

虽然TCP/IP不是ISO倡导的标准,但它有广泛的商业应用,因此TCP/IP是一种事实上的标准。由于Internet已经得到了全世界的承认,因而Internet所使用的TCP/IP体系在计算机网络领域中就占有特殊重要的地位。

    图1 OSI模型和TCP/IP模型

TCP/IP协议体系分为四个层次。由于TCP/IP协议集中没有考虑具体的物理传输介质,因此在TCP/IP的标准中并没有对数据链路层和物理层做出规定,而只是将最低的一层取名为网络接口层,只是规定了与物理网络的接口。这样,如果不考虑网络接口层,那么TCP/IP体系实际上就只有三个层次:应用层、传输层和网际层。

应用层有许多著名协议,如远程登录协议TELNET,文件传送协议FTP,简单邮件传送协议SMTP等。

传输层使用两种不同的协议。一种是面向连接的传输控制协议TCP;另一种是无连接的用户数据报协议UDP。传输层传送的数据单位是报文或数据流。

网际层主要协议就是无连接的网络互连协议IP。该层传送的数据单位是分组。与IP协议配合使用的还有三个协议:Internet控制报文协议ICMP、地址解析协议ARP和逆地址解析协议RARP。

二、TCP协议简介
TCP是专门用于在不可靠的因特网上提供可靠的、端对端的字节流通信的协议。通过在发送方和接收方分别创建一个称为套接字的通信端口就可以获得TCP服务。

TCP协议是一个可靠的面向连接的传输层协议,它将某结点的数据以字节流的形式无差错地传送到互联网的任何一台机器上。发送方的TCP将用户递交的字节流划分成独立的报文进行发送,而接收方的TCP将接收的报文重新装配上交给接收用户。TCP同时处理有关流量控制的问题,以防止快速的发送方“淹没”慢速的接收方。一旦数据报被破坏或丢失,通常是TCP将其重新传输,而不是应用程序或IP协议。

三、TCP数据报的传输

1.TCP数据报报头

发送和接收方TCP实体以数据报的形式交换数据。一个数据报包含一个固定的20字节的头、一个可选部分以及0或多字节的数据。TCP必须与低层的IP(使用IP定义好的方法)和高层的应用程序(使用TCP-ULP元语)进行通信。TCP还必须通过网络与其他TCP软件进行通信。图2给出了TCP数据报头的格式:

                 图2 TCP数据报头结构

●源端口、目的端口:16位长。标识出远端和本地的端口号。
●顺序号:32位长。表明了发送的数据报的顺序。
●确认号:32位长。希望收到的下一个数据报的序列号。
●TCP头长:4位长。表明TCP头中包含多少个32位字。
接下来的6位未用。
●URG:报文携带了紧急数据,urgent offset有效。
●ACK:ACK位置1表明确认号是合法的。如果ACK为0,那么数据报不包含确认信息,确认字段被省略。
●PSH:表示是带有PUSH标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。
●RST:用于复位由于主机崩溃或其它原因而出现的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。
●SYN:用于建立连接。
●FIN:用于释放连接。
●窗口大小:16位长。窗口大小字段表示在确认了字节之后还可以发送多少个字节。
●校验和:16位长。是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。
●可选项:0个或多个32位字。包括最大TCP载荷,窗口比例、选择重发数据报等选项。

2可靠传输

当TCP发出一个分组后,它启动一个超时计时器,如果在超时计时器到期之前收到了对方的确认,就撤销已设置的超时计时器。如果不能及时收到一个确认,就认为刚才发送的分组丢失了,将重发这个分组,这就叫超时重传。

TCP中保持可靠性的方式就是确认和重传机制,这样就可以在不可靠的传输网络上实现可靠的通信。

3.传输策略

如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据报。但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。

4.拥塞控制

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

拥塞控制方法:慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )。

发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。

慢开始算法:当主机开始发送数据时,因为现在并不清楚网络的负荷情况。因此,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。

通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。每经过一个传输轮次,拥塞窗口 cwnd 就加倍。慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。

为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量(如何设置ssthresh)。慢开始门限ssthresh的用法如下:
当 cwnd < ssthresh 时,使用上述的慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。

拥塞避免算法:让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

如下图,用具体数值说明了上述拥塞控制的过程。现在发送窗口的大小和拥塞窗口一样大。

参考文献:

[1] TCP传输工作原理.
http://hi.baidu.com/qu_wj/item/e2d76d4418daf236fa8960d4

[2] TCP的流量控制和拥塞控制.
http://blog.sina.com.cn/s/blog_6988593e01015wu0.html

[3] 谢希仁.计算机网络(第5版)[M].北京:电子工业出版社,2007

时间: 2025-01-01 08:57:14

TCP传输工作原理的相关文章

IP传输工作原理

目前,电视节目直播信号选择通过IP传输方式来实现,主要是依靠通信运营商的网络.直播信号经过发送端编码设备编码后形成能在通信网络中传输的数据流,并附加了接收端在通信网络中所对应的唯一IP地址,当数据流到达接收端,再通过解码设备解码生成所需的视音频信号.IP编解码设备接入通信网络的技术已经日趋成熟,接入网络的方式也变得越来越丰富,既能通过有线网络和无线WiFi接入,又可以使用移动数据4G网络接入.可以说,只要有网络覆盖,就能实现电视节目直播信号的IP传输. I P传输系统具有结构简单.安全高效以及传

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输

[网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结

TCP.UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议.一.UDP主要特点:传输的是用户数据报协议.1.UDP是无连接的,即发送数据之前不需要建立连接.2.UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制.3.UDP是面向报文的.UDP没有拥塞控制,很适合多媒体通信的要求.4.UDP支持一对一.一对多.多对一和多对多的交互通信.5.UDP的首部开销小,只有 8个字节.发送方 UDP对

TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结

TCP.UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议. 一.UDP主要特点:传输的是用户数据报协议. 1.UDP 是无连接的,即发送数据之前不需要建立连接. 2.UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制. 3.UDP 是面向报文的.UDP 没有拥塞控制,很适合多媒体通信的要求. 4.UDP 支持一对一.一对多.多对一和多对多的交互通信. 5.UDP 的首部开销小,只有 8

TCP/IP协议族——IP工作原理及实例详解(上)

 IP协议详解 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址.目的端IP地址,知道IP分片和重组. IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的所有主机和路由器上.他们决定数据报是否应该转发以及如何转发. IP服务的特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的

FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端发送 PORT 命令到FTP server.Passive模式FTP的客户端发送 PASV命令到 FTP Server. 下面介绍一个这两种方式的工作原理: Standard模式 FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个

TCP/IP 协议工作原理与Linux系统下调优

TCP/IP建立连接的三次握手过程: 建立TCP连接共需要三个packet Client--> syn=1,ack=0,fin=0 -->  Server Client<--  syn=1,ack=1,fin=0 <--  Server Client-->  syn=0,ack=1,fin=0 -->  Server TCP/IP关闭连接的四个过程: 关闭TCP连接需要四个packet: Client-->  FIN  -->  Server Client&

TCP/IP协议族——ARP、DNS工作原理及实例详解

 测试网络: 通过VMware创建了两个虚拟机,并利用桥接方式联网以此模拟两台主机连接一台路由器的情况.测试网络图如下: ARP协议工作原理 ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换.其工作原理是:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址.此网络上的其他机器都将接收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址. 以太网ARP请求/应答报文 以太网ARP请求/应答报文格式如下

LVS介绍及工作原理图解

很多人使用过LVS集群系统,但对于LVS集群,大多数人不清楚它到底是个什么东西.接下来我们就聊聊LVS及其工作原理. 一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发,目前是负载均衡性能最好的集群系统. 二.Lvs原理介绍 图示如下: 1.首先用户向负载均衡器调度器(Director Server)发起请求,负载均衡器将请求发往