第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只意味着在这一方向上没有数据流动。
先看懂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只意味着在这一方向上没有数据流动。
相关文章推荐
- 第17章TCP 基本概念
- 使用事件驱动模型实现高效稳定的网络服务器程序
- TCP/IP TIME_WAIT状态原理
- 网络通讯基础
- HDU 3549【网络流入门--然而我还是XXX】
- HDU 3572Task Schedule(网络流)
- POJ 1459:Power Network 能源网络
- POJ 1459:Power Network 能源网络
- 网络请求时WiFi边上的菊花
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1273:Drainage Ditches 网络流模板题
- POJ 1149:PIGS 网络流经典题
- POJ 1149:PIGS 网络流经典题
- HTTP - 条件请求
- iOS 异步请求网络数据,传值问题
- 传输层(2)-TCP连接的建立和终止、TIME_WAIT状态
- 27-监管网络状态信息netstat
- 网络通信之网页源码查看 并显示屏幕上
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- Android第六讲——数据存储(五种)SharedPreferences、内部存储(缓存cache)、外部存储(Sdcrad)、SQLite数据库、网络存储