第18章TCP连接的建立与终止
18.1 引言
T CP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本章将详细讨论一个T CP连接是如何建立的以及通信结束后是如何终止的。
这种两端间连接的建立与无连接协议如U DP不同。我们在第11章看到一端使用U DP向另一端发送数据报时,无需任何预先的握手。
18.2 连接的建立与终止
为了了解一个T CP连接在建立及终止时发生了什么,我们在系统s vr4上键入下列命令:
键入Ctrl和右括号,使Telnet客户进程终止连接
t elnet命令在与丢弃( discard)服务(参见1 .12节)对应的端口上与主机b sdi建立一条T CP连接。这服务类型正是我们需要观察的一条连接建立与终止的服务类型,而不需要服务器发起任何数据交换。18.2.1 tcpdump的输出
图1 8-1显示了这条命令产生T CP报文段的t cpdump输出。
图18-1 TCP连接建立与终止的t c p d u m p输出显示
这7个T CP报文段仅包含T CP首部。没有任何数据。对于T CP段,每个输出行开始按如下格式显示:
源> 目的: 标志
这里的标志代表T CP首部(图1 7-2)中6个标志比特中的4个。图1 8-2显示了表示标志的5个字符的含义。
标志
3字符缩写
描述
同步序号
发送方完成数据发送复位连接
尽可能快地将数据送往接收进程以上四个标志比特均置0
图18-2 t c p d u m p对TCP首部中部分标志比特的字符表示
在这个例子中,我们看到了S、F和句点“.”标志符。我们将在以后看到其他的两个标志(R和P)。T CP首部中的其他两个标志比特—ACK 和U RG—t cpdump将作特殊显示。
图18-2所示的4个标志比特中的多个可能同时出现在一个报文段中,但通常一次只见到一个。
RFC 1025 [Postel 1987], “TCP and IP Bake Off”,将一种报文段称为Kamikaze分组,在这样的报文段中有最大数量的标志比特同时被置为1(SYN, URG, PSH, FIN和1字节的数据)。这样的报文段也叫作nastygram, 圣诞树分组,灯测试报文段(lamp test segment)。在第1行中,字段1 415531521:1415531521(0)表示分组的序号是1 415531521,而报文段中数据字节数为0。t cpdump显示这个字段的格式是开始的序号、一个冒号、隐含的结尾序号及圆括号内的数据字节数。显示序号和隐含结尾序号的优点是便于了解数据字节数大于0时的隐含结尾序号。这个字段只有在满足条件(1)报文段中至少包含一个数据字节;或者(2)S YN、F IN或R ST被设置为1时才显示。图1 8-1中的第1、2、4和6行是因为标志比特被置为1而显示这个字段的,在这个例子中通信双方没有交换任何数据。
在第2行中,字段ack 141553152表示确认序号。它只有在首部中的2A CK标志比特被设置1时才显示。
每行显示的字段win 4096表示发端通告的窗口大小。在这些例子中,我们没有交换任何数据,窗口大小就维持默认情况下的4 096(我们将在2 0.4节中讨论T CP窗口大小)。
图1 8-1中的最后一个字段
图1 8-3显示了这些分组序列的时间系列(在图6 -11中已经首次介绍了这些时间系列的一些基本特性)。这个图显示出哪一端正在发送分组。我们也将对t cpdump输出作一些扩展(例如,印出S YN而不是S)。在这个时间系列中也省略窗口大小的值,因为它和我们的讨论无关。18.2.3 建立连接协议
现在让我们回到图1 8-3所示的T CP协议中来。为了建立一条T CP连接:
K amikaze是神风队队员或神风队所使用的飞机。在第二次世界大战末期,日本空军的神风队队员驾驶满载炸弹的飞机去撞击轰炸目标,企图与之同归于尽。
TCPIP协议详解-第十八章TCP连接的建立与终止



