tcp服务器在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的最大容纳数目。

SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

最新文章

  1. Android Studio 运行出现 Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
  2. Smart210学习记录-----Linux i2c驱动
  3. zoj 3755
  4. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记
  5. 2017angular、vue、react热度
  6. lua语言自学知识点----简单了解
  7. Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理
  8. 关于Eclipse导入项目jsp出现红色叉的解决办法
  9. SSO单点登录原理
  10. This 关键字的三个用处
  11. a^b%p and a*b%p快速幂
  12. postgresql数据库3种程序(rule,trigger ,FUNCTION )
  13. Spring Cloud之配置中心搭建
  14. eclipse调试的时候怎么后退?
  15. go语言中的并发
  16. 第四章 PCA降维
  17. Harbor 学习分享系列1 - centos7.4安装harbor1.5.2
  18. 国外IOS UI指南
  19. jni&&jvmti&&JMC
  20. vue组件讲解(is属性的用法)

热门文章

  1. android recovery 系统代码分析 -- 选择进入【转】
  2. bzoj2763: [JLOI2011]飞行路线(分层图spfa)
  3. Python 35 线程(2)线程特性、守护线程、线程互斥锁
  4. android service--delphixe 10.3
  5. CSS3 中弹性盒模型--容器的属性
  6. ROS-URDF-Xacro
  7. 认识JDK、JRE、JVM
  8. SQL SERVER 2000 如何提高大数据筛选GROUP BY 的效率
  9. 查看Oracle数据库表空间大小,是否需要增加表空间的数据文件
  10. CSS框架Bootstrap