您的位置:首页 > 理论基础 > 计算机网络

第18章(一)TCP连接建立和终止的正常情况

2015-09-08 21:18 816 查看
一、预备知识

先看懂tcpdump的输出

序号 时间(间隔时间) 发送方向 报文段信息





信息:S 1823083521:1823083521(0)ack 1415531522 win4096 <mss 1024>

S说明这是一个同步报文段, win 4096 表示发端通告窗口的大小。<mss 1024>指明最大报文段长度。发端将不接受超过这个长度的TCP报文段。通常是为了避免分段。

1823083521:1823083521(0)对应【序号】:【隐含结尾序号】(【数据字节数】)这样一个格式。

注意这里是个特例,实际中大多数形式是这样的: 37:44(7)

37是报文段的序号,44是下条报文段开始序号,也就是本报文段最后一个字节数据序号+1。7就是本报文段数据长度为7字节。

1823083521:1823083521(0)这种形式,只有当SYN、FIN或RST被设置为1的时候才这样显示。

这种情况报文内没有数据,但是要占用一个序列号。是为了使得对方能够确认,使用序号对SYN报文进行确认。

所以可能有人会有这样的疑惑,为什么SYN、FIN报文要占一个序号,而ack报文却不要,就是这个原因。Ack不需要确认。

二、TCP连接建立



(1)请求端(客户)发送一个SYN段指明客户打算连接的服务器端口,以及初始序列ISN(本图例中的客户端ISN为1415531521,连接的每一方都有各自独立的序号,这里服务器段的ISN就是报文段中1823083521)。这个SYN段为报文段1。

(2)服务器发回包含服务器的的初始序号的SYN报文段(报文段2)作为应答。同时将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。ack 1415531522 意思就相当于我已经接受到了1415531522之前的报文段,请继续发送从1415531522序号开始的报文段。

(3)客观必须将确认序号只为服务器的ISN+1 = 1823083522对服务器的SYN报文段进行确认。

这三个报文段完成连接的建立。这个过程被称为TCP的三次握手Three-way handshake。

发送第一个SYN的一段执行主动打开(active open)。接受这个SYN并发回下一个SYN的另一端执行被动打开(Passive open)

双方第一次发送SYN时候使用的序号又称ISN,系统初始化的时候ISN被初始化为1,这个变量没0.5秒增加64000,并隔9.5小时又回到0.另外,每次建立连接这个变量都将增加64000。

三、TCP连接终止



建立一个连接需要三次握手,而终止一个连接要经过4次握手。这是由TCP的半关闭(half-close)造成的。

收到一个FIN只意味着在这一方向上没有数据流动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: