TCP连接和建立
2015-08-29 00:00
405 查看
摘要: 三次握手
四次挥手
TCP三次握手
第一次握手:客户端向服务器发送→SYN J(调用connect进行主动打开。表示同步,告诉服务器客户将在连接中发送的数据的初始序列号,此时connect阻塞)
第二次握手:服务器向客户端响应一个→SYN K和→ACK J+1,客户端收到后connect返回(调用accept被动打开,告诉客户端服务器将在连接中发送的数据的初始序列号,此时accept阻塞)
第三次握手:客户端向服务器发送→ACK K+1,服务器收到后accept返回。
TCP四次挥手
第一次挥手:某个应用先调用close(主动关闭)。这一端的TCP发送一个→FIN M。
第二次挥手:收到FIN后(被动关闭),响应一个→ACK M+1。
第三次挥手:一段时间后,收到文件结束符的应用进程调用close关闭套接口。导致它的TCP也发送一个→FIN N。
第四次挥手:收到FIN的原发送端TCP进行确认发送一个→ACK N+1。
TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?
三次握手是为了防止已失效的连接请求再次传送到服务器端。
二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。
四次挥手
TCP三次握手
第一次握手:客户端向服务器发送→SYN J(调用connect进行主动打开。表示同步,告诉服务器客户将在连接中发送的数据的初始序列号,此时connect阻塞)
第二次握手:服务器向客户端响应一个→SYN K和→ACK J+1,客户端收到后connect返回(调用accept被动打开,告诉客户端服务器将在连接中发送的数据的初始序列号,此时accept阻塞)
第三次握手:客户端向服务器发送→ACK K+1,服务器收到后accept返回。
TCP四次挥手
第一次挥手:某个应用先调用close(主动关闭)。这一端的TCP发送一个→FIN M。
第二次挥手:收到FIN后(被动关闭),响应一个→ACK M+1。
第三次挥手:一段时间后,收到文件结束符的应用进程调用close关闭套接口。导致它的TCP也发送一个→FIN N。
第四次挥手:收到FIN的原发送端TCP进行确认发送一个→ACK N+1。
TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?
三次握手是为了防止已失效的连接请求再次传送到服务器端。
二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。
相关文章推荐
- Linux(Centos6.5)下安装svn服务器,并通过http访问
- RESTful HTTP的实践
- 网络排错大讲解 推荐
- ios开发进阶之多线程03 RunLoop 网络编程
- 虚拟机网络模式
- hdoj 4292 Food 【拆点 网络流】
- Android键盘的显示控制、网络检查、网络监测
- HTTP文件传输
- Android 网络请求超时处理方案
- linux下的apache在httpd.conf配置目录别名和include引入自配置文件配置的方法
- Android中的几种网络请求方式详解
- 《TCP/IP详解卷1:协议》——第2章:链路层(转载)
- Android(java)学习笔记201:网络图片浏览器的实现(ANR)
- 衡量企业网络广告效果的九个指标
- 8成企业不满网络广告评估方法
- 初识Java,基本名字的了解(摘自网络)
- 网络广告效果提高九要诀
- TCP 的那些事儿(下)
- TCP 的那些事儿(上)
- TCP通信的三次握手和四次撒手的详细流程