您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > TCP_IP协议017_TCP连接的建立与终止
wangzhanf@hotmail.com2004-embedTCP_IP协议_TCP连接的建立与终止王占峰wangzhanf@hotmail.comwangzhanf@hotmail.com2004-embed概述TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。TCP两端间连接的建立与无连接协议如UDP不同。(UDP向另一端发送数据报时,无需任何预先的握手)wangzhanf@hotmail.com2004-embed连接的建立与终止键入下列命令:telnet命令在与连接服务对应的端口上与主机建立一条TCP连接。这服务类型正是我们需要观察的一条连接建立与终止的服务类型,而不需要服务器发起任何数据交换。键入Ctrl和右括号,使Telnet客户进程终止连接wangzhanf@hotmail.com2004-embed建立连接协议1)请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。2)服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。3)客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)。这三个报文段完成连接的建立。这个过程也称为三次握手(three-wayhandshake)。wangzhanf@hotmail.com2004-embedwangzhanf@hotmail.com2004-embed连接终止协议建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端几经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后仍能发送数据。而这对利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的TCP应用程序这样做。首先进行关闭的一方(即发送第一个FIN)将执行主动关闭,而另一方(收到这个FIN)执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭,双方都可以执行主动关闭。图中的报文段4发起终止连接,它由Telnet客户端关闭连接时发出。键入quit命令后发生。将导致TCP客户端发送一个FIN,用来关闭从客户到服务器的数据传送。当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。同时TCP服务器还向应用程序传送一个文件结束符。接着这个服务器程序就关闭连接,导致TCP端发送一个FIN(报文段6),客户必须发回一个确认,并将确认序号设置为收到序号加1(报文段7wangzhanf@hotmail.com2004-embedwangzhanf@hotmail.com2004-embed超时有很多情况导致无法建立连接。一种情况是服务器主机没有处于正常状态。客户间隔多长时间发送一个SYN?第2个SYN与第1个的间隔是5.8秒,而第3个与第2个的间隔是24秒。另外,因为这是系统启动后的第一个TCP连接,因此客户的端口号是1024。wangzhanf@hotmail.com2004-embedTCP的状态变迁图
本文标题:TCP_IP协议017_TCP连接的建立与终止
链接地址:https://www.777doc.com/doc-2851641 .html