TCP协议使用操作详解

发表于:2016-5-03 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搜狗测试:陈之歌    来源:51Testing软件测试网原创

  TCP简介
  TCP是面向连接的,在传输数据之前要先和对端建立一个连接,建立连接的过程我们通常叫做3次握手。下面通过图片来给大家展示3次握手的过程
  在数据传输完之后我们可能不再需要这个连接,那么就需要把连接断开。断开连接的过程被称之为4次挥手。
  关于三次握手和四次挥手的过程,有不明白的可以移步: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设置一个超时时间,使它变成我们可控的,让等待时间在毫秒级还是可以接收的。
   ... ...
   查看全文内容,请点击下载:http://www.51testing.com/html/18/n-3708418.html

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号