TCP/IP 协议中,一端发起第一次握手时,其连接状态?
来源:百度搜索引擎研发。
问题的提出:这道题目看起来考得比较偏。一般地,TCP主要考察三次握手描述( SYN, SYN+ACK,ACK ),差错控制特性,流量控制特性。对状态字的考察,一般比较少。
一个主要的原因是:状态字太多了,不好记。另一个主要的原因是,平时用得少。
那百度为什么会考察这个知识呢?当然是因为他们在工作中时常用到。
实际上,TCP状态字是分析网络性能时经常用到的东东。比如,在发现网络性能比较低时,一个最简单的办法就是使用 netstat 命令。
参考一个典型的应用:
通过apache ab进行系统压力测试时,发现一个很严重的问题
./ab -k -c 15 -n 50000 http://10.20.156.49:2100/member/signin.htm
-k 指定保持keepalive
-c 并发数
-n 请求数
再通过netstat -nat命令看了下tcp状态,发现近2000左右的TIME_WAIT,在停止ab施压后,发现TIME_WAIT连接很快会得到释放
最后通过tcpdump在服务器上,发现了问题,每个请求都是走了新的socket链接,tcp链接快速打开,快速关闭,因此出现了大量了TIME_WAIT状态。
相关资料: