TCP协议使用操作详解

Posted 51Testing软件测试网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议使用操作详解相关的知识,希望对你有一定的参考价值。

↑ 点击上方“ 51Testing软件测试网 ”关注我们



  TCP简介

  TCP是面向连接的,在传输数据之前要先和对端建立一个连接,建立连接的过程我们通常叫做3次握手。下面通过图片来给大家展示3次握手的过程

TCP协议使用操作详解

  在数据传输完之后我们可能不再需要这个连接,那么就需要把连接断开。断开连接的过程被称之为4次挥手。

TCP协议使用操作详解

  关于三次握手和四次挥手的过程,有不明白的可以移步:http://www.51testing.com/html/67/n-3708167.html,本篇文章主要讨论以下几种情况:

  试图与一个不存在的端口建立连接

  服务器端口还没有监听,我们的客户端就调用connect,试图与其建立连接。这是会发生什么呢?没错,这符合触发发送RST分节的条件,目的为某端口的SYN分节到达,而端口没有监听,那么内核会立即响应一个RST,表示出错。客户端TCP收到这个RST之后则放弃这次连接的建立,并且返回给应用程序一个错误。正如上面所说的,建立连接的过程对应用程序来说是不可见的,这是操作系统帮我们来完成的,所以即使进程没有启动,也可以响应客户端。


  试图与一个不存在的主机上面的某端口建立连接

  这也是一种比较常见的情况,当某台服务器主机宕机了,而客户端并不知道,仍然尝试去与其建立连接。根据上面的经验,这次主机已经处于未启动状态,操作系统也帮不上忙了,那么也就是连RST也不能响应给客户端,此时服务器端是一种完全没有响应的状态。那么此时客户端的TCP会怎么办呢?据书上介绍,如果客户端TCP没有得到任何响应,那么等待6s之后再发一个SYN,若无响应则等待24s再发一个,若总共等待了75s后仍未收到响应就会返回ETIMEDOUT错误。这是TCP建立连接自己的一个保护机制,但是我们要等待75s才能知道这个连接无法建立,对于我们所有服务来说都太长了。更好的做法是在代码中给connect设置一个超时时间,使它变成我们可控的,让等待时间在毫秒级还是可以接收的。

.......

本文出自《51测试天地》原创测试文章系列(四十一)

阅读全文内容,请点击左下角“阅读原文”吧!

以上是关于TCP协议使用操作详解的主要内容,如果未能解决你的问题,请参考以下文章

《TCP-IP详解卷1:协议》PDF下载

tcp/ip协议详解!!

TCP-IP协议详解(3) IP/ARP/RIP/BGP协议

TCP协议详解

TCP协议详解

TCP协议详解