第十七章 TCP传输控制协议

TCP的服务

TCP通过下列方式来提供可靠性:

? 应用数据被分割成 TCP认为最适合发送的数据块。这和 UDP完全不同,应用程序产生的数据报长度将保持不变。由 TCP传递给 IP的信息单位称为报文段或段( segment)。

? 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能 及时收到一个确认,将重发这个报文段。

? 当TCP收到发自 TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。

? TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输 过程中的任何变化。如果收到段的检验和有差错, TCP将丢弃这个报文段和不确认收到 此报文段(希望发端超时并重发)。

? 既然 TCP报文段作为 IP数据报来传输,而 IP数据报的到达可能会失序,因此 TCP报文段 的到达也可能会失序。如果必要, TCP将对收到的数据进行重新排序,将收到的数据以 正确的顺序交给应用层。

? 既然IP数据报会发生重复, TCP的接收端必须丢弃重复的数据。

? TCP还能提供流量控制。 TCP连接的每一方都有固定大小的缓冲空间。 TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

 

两个应用程序通过 TCP连接交换 8 bit字节构成的字节流。 TCP不在字节流中插入记录标识符。我们将这称为字节流服务( byte stream service)。另外,TCP对字节流的内容不作任何解释。 TCP不知道传输的数据字节流是二进制数据, 还是ASCII字符、 EBCDIC字符或者其他类型数据。对字节流的解释由 TCP连接双方的应用层解释。

TCP的首部

每个 TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加 上IP首部中的源端 IP地址和目的端 IP地址唯一确定一个 TCP连接。

有时,一个 IP地址和一个端口号也称为一个插口( socket)。这个术语出现在最早的 TCP 规范( RFC793)中,后来它也作为表示伯克利版的编程接口(参见 1.15节)。插口对( socket pair)(包含客户 IP地址、客户端口号、服务器 IP地址和服务器端口号的四元组 )可唯一确定互 联网络中每个 TCP连接的双方。

序号用来标识从 TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一 个数据字节。如果将字节流看作在两个应用程序间的单向流动,则 TCP用序号对每个字节进 行计数。序号是 32 bit的无符号数,序号到达 232-1后又从0开始。

当建立一个新的连接时, SYN标志变 1。序号字段包含由这个主机选择的该连接的初始序 号ISN(Initial Sequence Number)。该主机要发送数据的第一个字节序号为这个 ISN加1,因为 SYN标志消耗了一个序号(将在下章详细介绍如何建立和终止连接,届时我们将看到 FIN标志 也要占用一个序号)。

既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。 因此,确认序号应当是上次已成功收到数据字节序号加 1。只有 ACK标志(下面介绍)为 1时 确认序号字段才有效。

发送ACK无需任何代价,因为 32 bit 的确认序号字段和 ACK标志一样,总是 TCP首部的一 部分。因此,我们看到一旦一个连接建立起来,这个字段总是被设置, ACK标志也总是被设 置为1。

TCP为应用层提供全双工服务。这意味数据能在两个方向上独立地进行传输。因此,连 接的每一端必须保持每个方向上的传输数据序号。

TCP可以表述为一个没有选择确认或否认的滑动窗口协议(滑动窗口协议用于数据传输 将在 20.3节介绍)。我们说 TCP缺少选择确认是因为 TCP首部中的确认序号表示发方已成功收 到字节,但还不包含确认序号所指的字节。当前还无法对数据流中选定的部分进行确认。例 如,如果 1~1024字节已经成功收到,下一报文段中包含序号从 2049~3072的字节,收端并不 能确认这个新的报文段。它所能做的就是发回一个确认序号为 1025的ACK。它也无法对一个 报文段进行否认。例如,如果收到包含 1025~2048字节的报文段,但它的检验和错, TCP接收端所能做的就是发回一个确认序号为 1025的ACK。在21.7节我们将看到重复的确认如何帮 助确定分组已经丢失。

首部长度给出首部中 32 bit字的数目。需要这个值是因为任选字段的长度是可变的。这个 字段占4 bit ,因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是 20字节。

在TCP首部中有 6个标志比特。它们中的多个可同时被设置为 1。我们在这儿简单介绍它 们的用法,在随后的章节中有更详细的介绍。

?    URG  紧急指针( urgent pointer)有效(见 20.8节)。

?    ACK  确认序号有效。

?    PSH  接收方应该尽快将这个报文段交给应用层。

?    RST  重建连接。

?    SYN  同步序号用来发起一个连接。这个标志和下一个标志将在第 18章介绍。 FIN 发端完成发送任务。

TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始 于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个  16 bit 字段, 因而窗口大小最大为 65535字节。在 24.4节我们将看到新的窗口刻度选项,它允许这个值按比例变化以提供更大的窗口。

检验和覆盖了整个的 TCP报文段: TCP首部和 TCP数据。这是一个强制性的字段,一定是 由发端计算和存储,并由收端进行验证。 TCP检验和的计算和 UDP检验和的计算相似,使用 如11.3节所述的一个伪首部。

只有当URG标志置 1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值 相加表示紧急数据最后一个字节的序号。 TCP的紧急方式是发送端向另一端发送紧急数据的 一种方式。我们将在 20.8节介绍它。

最常见的可选字段是最长报文大小,又称为 MSS (Maximum Segment Size) 。每个连接方 通常都在通信的第一个报文段(为建立连接而设置 SYN标志的那个段)中指明这个选项。它 指明本端所能接收的最大长度的报文段。

17.4   小结

TCP提供了一种可靠的面向连接的字节流运输层服务。TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据 进行确认,对失序的数据重新排序,丢弃重复数据; TCP提供端到端的流量控制,并计算和 验证一个强制性的端到端检验和。

许多流行的应用程序如 Telnet、Rlogin、FTP和SMTP都使用TCP。

 

时间: 2024-08-06 04:14:04

第十七章 TCP传输控制协议的相关文章

TCP传输控制协议

TCP 在TCP/IP协议模型中, 传输层协议有TCP和UDP, 这里主要介绍下可靠传输TCP协议, 目前是传输层协议首选. 特点 面向数据流(字节流形式) 虚电路连接 有缓冲传输(提供push机制 ) 无结构数据流(无边界) 全双工 连接建立 socket接口使用 connect()时建立连接,  采用三次握手, 请看下图 : 在这个过程中完成了几个重要功能 : 建立连接, 做好传送数据准备. 协商各自报文段初始序号ISN( 任意选取, TCP准规定不可为1, 其中一个原因是避免IP欺骗).

《TCP/IP详解》读书笔记(17章)-TCP传输控制协议

1.TCP的服务 在一个TCP连接中,仅有两方进行彼此通信.TCP通过下列方式来提供可靠性: 1)应用数据被分割成TCP认为最适合发送的数据块.这和UDP完全不同,应用程序产生的数据报长度保持不变.由TCP传递给IP的信息单位称为报文段或段. 2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段.如果不能及时收到一个确认,将重发这个报文段,这将在21章中重传策略中讨论. 3)当TCP收到发自TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通过将推迟几分之一秒,

TCP/IP协议详解 卷一:协议 17章、TCP传输控制协议

1.TCP服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. (1)面向连接 两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接.过程与打电话相似,先拨号振铃,等待对方摘机说"喂",然后才说明是谁. 说明:在一个TCP连接中,仅有两方彼此进行通信.广播和多播不能用于TCP. (2)可靠性 TCP通过下列方式来提供可靠性: 1)应用数据被分割成TCP认为最适

TCP 传输控制协议

开头先说几个协议: IP:网际协议 TCP:传输控制协议 Http:超文本传输协议 AMQP:高级消息队列协议 一:TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层: 在第二层上的数据,我们把它叫Frame,在第

《TCP/IP详解卷2:实现》笔记--TCP:传输控制协议

传输控制协议,即TCP,是一种面向连接的传输协议,为两端的应用程序提供可靠的端到端数据流传输服务,它完全不同于 无连接的.提供不可靠数据传输服务的UDP协议. 下图描述了各TCP函数与其他内核函数之间的关系,带阴影的椭圆分别表示我们将要讨论的9个主要的TCP函数. 1.TCP的protosw结构 下图列出了TCPprotosw结构的成员变量,它定义了TCP协议与系统内其他协议之间的交互接口. 2.TCP的首部 tcphdr结构定义了tcp首部.下图给出了tcphdr结构的定义和TCP首部. 大多

传输控制协议TCP学习(一)

时间:2014.06.25 地点:基地 --------------------------------------------------------------------------------- 一.TCP服务 TCP位于应用层与网络层之间,提供介于应用程序和网络功能之间的服务.主要包括如下服务: 1.1进程到进程的通信 与UDP一样,TCP也使用端口号提供进程到进程的通信 1.2流交付服务 与UDP不一样,TCP是一种面向流的协议. UDP中,进程将已定义好边界的报文发给UDP以便进行

传输控制协议TCP

1.TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP是运输层的重要协议,运输层是位于IP层之上,应用层之下的中间层.应用层向运输层发送用于网间传输的.用8位字节表示的数据流,然后运输层把数据流分区成适当长度的报文段.之后运输层把结果包传给IP层,由它来通过网络将包传送给接收端实体的运输层.为了保证不发生丢包,给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收.然后接收端实体对

TCP:传输控制协议

概述: 书中采用了8章来介绍TCP,可见其重要性.TCP是一种面向连接的.可靠的字节流服务,也就是说两方要交换数据必须先建立一个连接. TCP的信息单位称为segment.TCP对字节流的内容不作任何解释,这项工作交给TCP连接双方的应用层去做. TCP为应用层提供全双工服务,即数据能在两个方向上独立地传输. TCP首部: TCP首部通常是20个字节加可选字段.它的前8位必须使源端口号和目的端口号,这是因为ICMP差错至少会返回除了IP首部外的前8个字节,这样方便检查差错对应于哪个连接.MSS为

17.TCP:传输控制协议

TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接.在一个TCP连接中,仅有两方进行彼此通信.广播和多播不能用于TCP. TCP通过下列方式来提供可靠性: 1. 应用数据被分割成 原文地址:https://www.cnblogs.com/i-hard-working/p/10703765.html