TCP连接的建立与终止
T C P是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间
建立一条连接。这里将详细讨论一个 T C P连接是如何建立的以及通信结束后是如何终止的。
这种两端间连接的建立与无连接协议如 U D P不同。
连接的建立与终止
为了了解一个T C P连接在建立及终止时发生了什么,我们在系统 s v r 4上键入下列命令:
t e l n e t命令在与丢弃对应的端口上与主机 b s d i建立一条
T C P连接。这服务类型正是我们需要观察的一条连接建立与终止的服务类型,而不需要服务
器发起任何数据交换。
t c p d u m p的输出
显示了这条命令产生T C P报文段的t c p d u m p输出。
这7个T C P报文段仅包含T C P首部。没有任何数据。
对于T C P段,每个输出行开始按如下格式显示:
键入Ctrl和右括号,使Telnet客户进程终止连接
源 > 目的: 标志
这里的标志代表T C P首部中6个标志比特中的4个。图显示了表示标志的5个字符的含义。
在这个例子中,我们看到了 S、F和句点“.”标志符。我们将在以后看到其他的两个标志( R
和P)。T C P首部中的其他两个标志比特 — ACK 和 U R G — t c p d u m p将作特殊显示。
上图4个标志能同时出现在一个报文段中,但通常一次只见到一个。
RFC 1025 [Postel 1987], “TCP and IP Bake Off”,将一种报文段称为K a m i k a z e分组 ,
在这样的报文段中有最大数量的标志比特同时被置为1(SYN, URG, PSH, FIN和1字节的
数据)。这样的报文段也叫作nastygram, 圣诞树分组,灯测试报文段(lamp test segment)。
在第1行中,字段1 4 1 5 5 3 1 5 2 1 : 1 4 1 5 5 3 1 5 2 1 ( 0 )表示分组的序号是1 4 1 5 5 3 1 5 2 1,而报文段中
数据字节数为0。t c p d u m p显示这个字段的格式是开始的序号、一个冒号、隐含的结尾序号
及圆括号内的数据字节数。显示序号和隐含结尾序号的优点是便于了解数据字节数大于 0时的
隐含结尾序号。这个字段只有在满足条件( 1)报文段中至少包含一个数据字节;或者( 2)
S Y N、F I N或R S T被设置为1时才显示。图1 8 - 1中的第1、2、4和6行是因为标志比特被置为1而
显示这个字段的,在这个例子中通信双方没有交换任何数据。
在第2行中,字段ack 1415531522 表示确认序号。它只有在首部中的 A C K标志比特被
设置1时才显示。
每行显示的字段win 4096表示发端通告的窗口大小。在这些例子中,我们没有交换任
何数据,窗口大小就维持默认情况下的 4 0 9 6(我们将在2 0 . 4节中讨论T C P窗口大小)。
图1 8 - 1中的最后一个字段<mss 1024>表示由发端指明的最大报文段长度选项。发端将
不接收超过这个长度的 T C P报文段。这通常是为了避免分段(见 11 . 5节)。我们将在1 8 . 4节讨
论最大报文段长度,而在1 8 . 1 0节介绍不同TCP 选项的格式。