tcp为什么需要3次握手4次挥手
一、起因
在网络请求中,为了提升性能,通常会采用长连接的方式避免在每一次交互都进行网络链接的创建和关闭,而长连接就是tpc的链接方式。因而有必要对tcp的创建链接和关闭有所了解。在网络上查询了一些知识,加以理解,整理成了如下的总结,然后给组装到自己的认识体系中。
二、创建链接三次握手
tpc创建链接需要三次握手:
1)client 发送链接请求到server
2)server发送响应请求给到client
3)client再次发送响应请求给到server端
三次握手之前是知道,但为什么要用三次握手,而不是两次、四次呢?
现在能查到的解释是有两种:1)为了避免已失效的链接再次到达服务端而引起的错误,2)是网络中存在延迟的网络分组。这两个解释对应的事同样的。
要解决的问题是:client向server发送了一个创建链接的请求,但由于网络原因,在达到客户端的超时时间后还没有收到server端的响应,客户端就重发一次建链请求,这次顺利的创建链接,然后开始进行数据传输,然后关闭链接。当关闭链接后,client第一次发送的建链请求才到达server,如果按照两次握手,server任务链接创建成功,而client发现server的响应请求超出了时间,直接进行丢弃,也不向server发送通知请求。而server还在等待客户端发送数据,这样就会造成server资源浪费。
三次握手和我们去饭店点餐有些类似:1)食客先选择菜品 2)服务员查看点餐单,然后再向食客重复一遍 3)食客确定,然后服务员会把菜品报给厨房开始烹制。如果是两次握手,那就有可能出现食客说这个菜品我们没有点啊或者是我们点了那个菜品怎么没有上啊。。
另外,二次握手可能会存在死锁问题:client向server发送建链请求,server然后向clent发送确认请求,然后server向client发送数据。当由于网络原因或client的问题,导致client未能获取到server发送的响应请求,就会一直等待server发送确认响应,但此时server确一直在发送数据,而不再发送确认响应,导致死锁问题。
上述的解释存在几个前提:
1)client在创建网络连接时,如果server在规定时间内没有响应,将会从自己的存储中移除该次的创建网络请求数据
2)client只有在接收到server发出响应请求,验证通过后,才接受server发出的数据
三、关闭链接四次握手
tcp关闭链接四次握手原因在于tpc链接是全双工通道,需要双向关闭。
client向server发送关闭请求,表示client不再发送数据,server响应。此时server端仍然可以向client发送数据,待server端发送数据结束后,就向client发送关闭请求,然后client确认。
类似的例子是面试,面试本身是一个双向沟通的过程,也即全双工。面试官吧啦吧啦向面试人员问了一堆问题,问完了告诉面试人员我没有问题了,面试人员确认。但这个时候面试人员还是可以向面试官问问题了,等面试人员也问完了,向面试官说:我也没有问题了,面试官说:好的,我们就到此为止,后续有hr同学联系你,这次的面试结束。
tcp为什么需要3次握手4次挥手的更多相关文章
- python摸爬滚打之----tcp协议的三次握手四次挥手
TCP协议的三次握手, 四次挥手 三次握手过程 1, 服务器时刻准备接受客户端进程的连接请求, 此时服务器就进入了LISTEN(监听)状态; 2, 客户端进程然后向服务器发出连接请求报文, 之后客户端 ...
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- TCP/IP报文 三次握手 四次挥手
1.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序 ...
- TCP、UDP之三次握手四次挥手
1. http协议的简介 HTTP,HyperText Transfer Protocol.超文本传输协议,是互联网上应用最为广泛的一种网络协议.基于TCP的协议,HTTP是一个客户端和服务器端请求和 ...
- 关于TCP传输的三次握手四次挥手策略
简单小总结: 一般为了能够准确无误地把数据送达目标处,TCP协议采用了三次握手策略.用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达. 注:握手过程中使用 ...
- IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式
IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个 ...
- TCP传输的三次握手四次挥手策略
为了准确无误地数据送达目标处,TCP协议采用了三次握手策略.用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达.握手中使用了TCP的标志:SYN和ACK 发 ...
- TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...
- TCP连接为什么三次握手四次挥手
前几天面试某电商被问住了,问的很细,我就说了说连接过程,必然凉凉.在csdn上找了一篇很详细的博客.https://blog.csdn.net/hyg0811/article/details/1023 ...
随机推荐
- jdbc实现简单的增删改查
先是Book类. 略 然后一个主页,写一个表单,提交Book的信息到AddBook. 略 AddBook.jsp连接jdbc,并向Book表插入. <%@ page language=" ...
- HTML5之语义化标签
HTML 5的革新之一:语义化标签一节元素标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即使我们用css样式的id和class形容这块内容的意义).这些标 ...
- ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容
ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容“ 2013-05-10 21:18 2271人阅读 评论(0) 收藏 举报 今天上午在实验室一顿乱整,不知道整坏了什么, ...
- A Xamarin.Forms Infinite Scrolling ListView
from:http://www.codenutz.com/lac09-xamarin-forms-infinite-scrolling-listview/ The last few months ha ...
- Cocos2dx.3x入门三部曲-软件环境配置(一)
一.环境: Win7 32位 二.必备软件: l Java JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/inde ...
- IIS7 HTTPS 绑定主机头
IIS7下面默认HTTPS绑定是无法指定主机头的,但我们可以通过手工修改IIS配置来实现主机头绑定. 打开C:\Windows\system32\inetsrv\config\applicationH ...
- Android 图片的裁剪与相机调用
有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来. 贴上部分代码: //调用图库 Intent intent = new Intent ...
- gpg的一些常用操作
(1)列出keys # gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/98681A63 2 ...
- 支付宝Wap支付你了解多少?
上几篇文章详细介绍了支付宝APP支付.微信APP支付 此文章来介绍下支付宝Wap支付(也叫作手机网站支付) 目录 1.创建应用并获取APPID 2.配置应用环境 3.配置沙箱环境 4.服务端实现(Ma ...
- js遍历jsonTree
var json = [{tcName:"11", children:[{tcName:"22", children:[{tcName:"33&quo ...