对TCP三次握手的思考
从第一次了解到TCP的连接方式到现在有一年半了,但好像一直没有把三次握手的由来弄透彻,解释上总有一些瑕疵在,现在来说说昨晚的思考。
对于一个通信链路,由于种种原因发送方发送的消息未必能传达到接收方,所以一条消息发送出去了,但没人回,有两种情况:一是数据没有传送成功,二是传送成功但对方没有立即回应。当我们规定,在试探链路时,发送的消息必须回应,这样如果发送方依然没有收到回应,则可以判断是链路出了问题,如果收到回应说明链路可通,可以安心发送了。(所以叫你一声你要答应才礼貌)
但这只是单向发送,作为被接收的一方只是发送了一个应答,站在它的角度,它能接收对面来的消息说明来路可通,但并不知道去路是否可通。而如果发送方收到应答后,此时该方知道来去路都是通的(establish),所以它还需要把这个消息告诉对方,让对方也放心。
所以三次握手的本质是在一开始确立全双工的关系。同样四次挥手也是如此,只不过分解成了两次应答,让先发送完的一方先告知对方自己已发完,但对方未必发完,所以只好分开确认。如果两边速度完全一样则也可以合并成三次挥手。
除此之外还有双方默认消息在一定时间内没有回应为此时链路不通,重新改送,多次发送不通则失败,所以收到对方的重复消息说明我方刚才的消息没有送到,需重发。(与三次握手的思想不冲突,柔和在一起形成基本通信协议)
对TCP三次握手的思考的更多相关文章
- TCP三次握手的思考?
		
大家都知道TCP有三次握手的过程,今天我就仔细想了想为什么TCP要有三次握手 先贴一张三次握手的示意图,说明一点是在三次握手中A是在第二次握手后申请缓存资源,B是在第一次握手后申请. 其实这个问题就是 ...
 - 关于Tcp三次握手的思考
		
一.为什么不能使两次握手,两次握手就应该可以保证线路的畅通? 1) 只能建立一个方向的连接,称为半连接 记住TCP是全双工的. A向B发出请求,同时收到B的确认,这时只有A.B知道A到B的连接成功了. ...
 - 【HTTP协议】---TCP三次握手和四次挥手
		
TCP三次握手和四次挥手 首先我们知道HTTP协议通常承载于TCP协议之上,HTTPS承载于TLS或SSL协议层之上 通过上面这张图我们能够知道. 在Http工作之前,Web浏览器通过网络和W ...
 - TCP三次握手原理,你真的了解吗?
		
最近碰到一个问题,Client 端连接服务器总是抛异常.在反复定位分析.并查阅各种资料搞懂后,我发现并没有文章能把这两个队列以及怎么观察他们的指标说清楚. 问题描述 场景:Java 的 Client ...
 - TCP 三次握手原理,你真的理解吗?
		
最近,阿里中间件小哥哥蛰剑碰到一个问题——client端连接服务器总是抛异常.在反复定位分析.并查阅各种资料文章搞懂后,他发现没有文章把这两个队列以及怎么观察他们的指标说清楚. 因此,蛰剑写下这篇文章 ...
 - TCP三次握手和四次挥手、HTTP协议
		
TCP三次握手和四次挥手 首先我们知道HTTP协议通常承载于TCP协议之上,HTTPS承载于TLS或SSL协议层之上 通过上面这张图我们能够知道. 在Http工作之前,Web浏览器通过网络和W ...
 - TCP协议--TCP三次握手和四次挥手
		
TCP三次握手和四次挥手 TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) 一.TCP三次握手 第一次握手 客户端向服务器发出连 ...
 - 【解读】TCP三次握手和四次挥手
		
TCP有6种标识: 1.SYN(建立连接) 2.ACK(确认) 3.PSH(传送) 4.FIN(结束) 5.RST(重置) 6.URG(紧急) 一.TCP三次握手 第一次握手(发送:连接请求 ...
 - 阿里二面,面试官居然把 TCP 三次握手问的这么细致
		
TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...
 
随机推荐
- Intellij idea使用过程中遇到的一些问题
			
问题:使用maven命令时,在报错信息里中文乱码,比如一些数据库配置报错什么的,是中文报错,设置里该设置为UTF-8的都设置了. 解决方法:idea.exe.vmoptions里增加-Dfile.en ...
 - hive  中间会话临时文件自动清理脚本
			
hive在运行过程中,我们经常会发现 hdfs /tmp/hive/hive or hdfs 目录占用空间巨大,我这里已经清理过了所以,相对较小.但是初次使用hive的用户,一定会发现 随着时间的推移 ...
 - 最大化等比例测试演化Demo-传统方法
			
demo-1: <!doctype html> <html> <head> <meta charset="utf-8"> <t ...
 - RocketMQ源码分析:(二)消息发送的三种方式
			
1. 同步传输(可靠,适用于重要的通知消息.短信通知.短信营销系统等) package com.miaoying.rocketmq.client; import lombok.extern.slf4j ...
 - Could not create local repository at /home/yizhenn/.m、IDEA倒入maven项目无法导报问题
			
问题描述: 用自己电脑新搭建环境,用idea倒入项目后发现无法倒入jar包,很少郁闷,折腾了很久,最终发现问题 settings文件中下面这个配置,需要是自己电脑的路径 <localReposi ...
 - Web漏洞扫描工具(批量脱壳、反序列化、CMS)
			
一.什么是Web漏洞扫描工具 即是指“扫描Web应用以查找安全漏洞(如跨站脚本,SQL注入,命令执行,目录遍历和不安全服务器配置)的自动化工具”,其中许多可能是由不安全或不正确的编码和设计.另一方面, ...
 - leetCode191. 位1的个数
			
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量) 示例 1: 输入:00000000000000000000000000001011 输出:3 解 ...
 - leetCode66:加一
			
/** * @param {number[]} digits * @return {number[]} */ var plusOne = function(digits) { if(digits[di ...
 - bootstrap的使用集锦
			
在使用div样式的时候可以根据页面布局来调整大小 <div class="col-md-8 col-md-offset-3"># col-md-8 div所占的空间大小 ...
 - matlab-调用摄像头人脸识别
			
----------------------------边学边写边学习------------------------------------- 版本:2014a 调用摄像头 a = imaqhwin ...