网络连接的三次握手
来源:互联网 发布:腾讯软件下载 编辑:程序博客网 时间:2024/06/05 07:42
1. 为什么需要三次握手?
为了防止已经失效的请求传到服务器端,从而发生错误。
具体描述: 当server接受到了已经失效的连接请求,这个时候,server会建立连接,并且傻傻的等待,客户端发出数据。由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。server傻傻等待的过程中,很多资源就白白的浪费了。用我们学过的信息经济学的说法,就是信息不对称。
2. 三次握手的具体的过程以及原理?
第一次握手:建立连接时,客户端发送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存活时间。
- 网络连接的三次握手
- TCP连接的三次握手
- TCP连接的三次握手
- TCP连接的三次握手
- TCP连接的三次握手
- 网络协议的三次握手
- 网络协议的三次握手 .
- TCP连接的三次握手和Socket建立网络连接的步骤
- TCP连接的三次握手和Socket建立网络连接的步骤
- 【网络】关于运输层中TCP协议的三次握手连接和四次握手连接释放过程简述
- TCP连接的三次握手原理
- TCP/IP的三次握手建立连接
- TCP建立连接的三次握手
- TCP连接的三次握手原理(转)
- TCP建立连接的三次握手
- 三次握手建立的连接如何释放?
- TCP连接的三次握手原理
- 建立TCP连接的三次握手
- js 日期函数
- Hibernate之Query接口的uniqueResult()方法
- div 实现长英文字母自动换行CSS
- 此时无足够的可用内存,无法满足操作的预期要求,可能是由于虚拟地址随便造成的。请稍候重试。 .
- printk
- 网络连接的三次握手
- 社交(SNS)网站的完整设计思路
- salesforce’s Tools and Toolkits
- [Bluetooth] Android BluetoothSocket
- STM32的boot引脚设置
- bitmap
- 转 Oracle的时区问题
- Unity3D + Mono 断点调试功能
- 破冰四核老将 32G版HTC One X才不到2K2