TCP三次握手及四次分手过程--待完善
转至《TCP/IP详解 卷1:详解》;pc1:svr4,pc2:bsdi
总用时 (间隔时间) 发送端>接受端 tcp标志 tcp数据状态
图1显示了这条命令产生TCP报文段的tcpdump输出。
这7个TCP报文段仅包含TCP首部。没有任何数据。
对于TCP段,每个输出行开始按如下格式显示:
这里的标志代表TCP首部中6个标志比特中的4个。图2显示了表示标志的5个字符的含义。
图2 tcpdump对TCP首部中部分标志比特的字符表示
在这个例子中,我们看到了S、F和句点“.”标志符。我们将在以后看到其他的两个标志(R和P)。TCP首部中的其他两个标志比特—ACK和URG—tcpdump将作特殊显示。
图2所示的4个标志比特中的多个可能同时出现在一个报文段中,但通常一次只见到一个。
在第1行中,字段1415531521:1415531521(0)表示分组的序号是1415531521,而报文段中数据字节数为0。tcpdump显示这个字段的格式是开始的序号、一个冒号、隐含的结尾序号及圆括号内的数据字节数。
在第2行中,字段ack1415531522表示确认序号。它只有在首部中的ACK标志比特被设置1时才显示。
每行显示的字段win4096表示发端通告的窗口大小。在例子中,我们没有交换任何数据,窗口大小就维持默认情况下的4096。
图1中的最后一个字段<mss1024>表示由发端指明的最大报文段长度选项。发端将不接收超过这个长度的TCP报文段。这通常是为了避免分段
3 建立连接协议
现在让我们回到图18-3所示的TCP协议中来。为了建立一条TCP连接:
请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。
服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)。
这三个报文段完成连接的建立。这个过程也称为三次握手(three-wayhandshake)。
图3连接建立与终止的时间系列