七字真言解读TCP三次握手
三次握手所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。
一、七字真言解读三次握手
二、为什么需要三次握手?
主机建立连接为什么需要三次握手?为了防止已经是失效连接突然又重新回到了服务端而产生的错误。“比如一个客户端发出一个连接请求报文虽然没有丢失,但是由于一些原因在在某个网络节点中长时间滞留,以至于在断开连接后才到达服务端。这本身就是一个已经失效的报文。但是服务器误以为是客户端的又一个新的请求。假设没有三次握手那么只要服务端发出确认链接就建立了。由于客户端也没有给服务端发请求,因此也不回复服务端的确认。但是服务端确认为新的连接开始了,等待客户端发数据。这样就容易造成服务端的资源的浪费。采用三次握手可以防止这种情况发生。
三、图解三次握手、四次挥手
- 三次握手
第一次握手:客户端申请连接(SYN=1),发送seq=j的数据包
第二次握手:服务器端申请连接(SYN=1),确认收到客户端的申请(ACK=1).;服务器期望下次收到J+1数据包(ack=j+1),发送seq=k的数据包
第三次握手:客户端确认收到请求(SYN=1),发送服务器期望的数据包(j+1).完成连接
- 四次挥手
第一次挥手:客户端请求断开连接(FIN=1),发送序号为j的数据(seq=u)
第二次挥手:确认收到请求(ACK=1),我期望收到u+1d的数据包(ack=u+1),发送序号为k的数据(seq=k)
第三次挥手:服务器申请断开连接(FIN=1),确认收到你之前的请求(ACK=1);期望收到u+1的数据(ack=u+1),发送序号为v的数据
第四次挥手:确认收到请求(ACK=1),发送序号为u+1的数据(seq=u+1)。断开连接
四、为什么握手三次,挥手四次?
三次握手
因为要保证信道的可靠,就需要双方沟通并且达成一致。而要解决这个文件3次是最小值。所以三次握手并不是真对TCP来说的,而是为了保证信道的可靠。
个人理解:三次握手并不准确,准确的说是双方各一次握手,各确认一次。中间第二次是握手与确认合并在一起为什么挥手比握手多一次
因为tcp连接是全双工的,因此每个方向都必须单独的断开连接客户端申请断开连接,只是不再发送数据,还能接收数据。需要等待服务端将数据发送完毕后,等待服务端申请断开连接。
七字真言解读TCP三次握手的更多相关文章
- 网络编程之TCP三次握手与四次挥手、基于TCP协议的套接字编程
目录 TCP三次握手和四次挥手 背景描述 常用的熟知端口号 TCP概述 TCP连接的建立(三次握手) TCP四次挥手 如果已建立连接,客户端突然断开,会怎么办呢? 基于TCP协议的套接字编程 什么是S ...
- 【解读】TCP三次握手和四次挥手
TCP有6种标识: 1.SYN(建立连接) 2.ACK(确认) 3.PSH(传送) 4.FIN(结束) 5.RST(重置) 6.URG(紧急) 一.TCP三次握手 第一次握手(发送:连接请求 ...
- 三报文握手而不是三次握手 wireshark 封包详细信息 (Packet Details Pane) wireshark与对应的OSI七层模型 TCP包的具体内容 分析TCP三次握手过程
总结: 1.tcp报文非数据部分4*6字节 2.RFC 973 <计算机网络> 谢希仁 three way (three message) handshake 只是一次握手 同步位SYN. ...
- 监听套接字描述字 已连接套接字描述字 和打电话的情形非常不一样的地方 完成了 TCP 三次握手,操作系统内核就为这个客户生成一个已连接套接字
1. accept: 电话铃响起了-- 当客户端的连接请求到达时,服务器端应答成功,连接建立,这个时候操作系统内核需要把这个事件通知到应用程序,并让应用程序感知到这个连接.这个过程,就好比电信运营商完 ...
- 【linux】关于TCP三次握手和四次挥手
1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数 ...
- TCP三次握手与四次分手
TCP简介 首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层--Transport层,IP在第三层--Network层,ARP在第二层--Data Link层:在第 ...
- 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...
- TCP三次握手,四次分手
1.什么是HTTP连接 http是建立在TCP协议之上的一种应用. 最显著的特点是每次请求,都需要服务器响应,请求结束后,会主动释放连接. 1)在HTTP 1.0中,客户端的每次请求都要建立一次单独的 ...
- [转帖]脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手 http://www.52im.net/thread-1729-1-1.html 1.引言 网络编程中TCP协议的三次握手和 ...
随机推荐
- jquery中防止冒泡事件
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 ...
- android-iconify 使用详解
android-iconify 使用详解 有图有真相 1.android-iconify简介 iconify的github地址:https://github.com/JoanZapata/androi ...
- python教程6-2:字符串标识符
标识符合法性检查. 1.字母或者下划线开始. 2.后面是字母.下划线或者数字. 3.检查长度大于等于1. 4.可以识别关键字. python35 idcheck.py idcheck.py impo ...
- Linux系统C语言socket tcp套接字编程
1.套接字的地址结构: typedef uint32_t in_addr_t; //32位无符号整数,用于表示网络地址 struct in_addr{ in_addr_t s_addr; //32位 ...
- 引水入城[NOI2010 ]
题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度. 为了 ...
- ORA-01036: 非法的变量名/编号 解决方案
今天又一次遇到了 ORA-01036: 非法的变量名/编号 的问题,之前在项目中也遇见过这个问题,但是具体怎么解决的忘记了,今天又是遇见了,花了半个小时才解决.我今天遇到的情况是这样的: 存储过程中有 ...
- VM虚拟机的配置
1.软件安装 点击如图所示文件安装虚拟机 点击下一步,再安装过程中输入密钥 1F04Z-6D111-7Z029-AV0Q4-3AEH8 设置相关内容完成安装 2.加载虚拟机 点击软件图标打开软件 软件 ...
- POJ-1915 Knight Moves (BFS)
Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 26952 Accepted: 12721 De ...
- Cordova + idea 环境搭建
1.安装前期工作 1).安装Node.js http://nodejs.cn/download/ 里面内置了npm,可以用来安装 Cordova,把该路径添加到环境变量,这样就可以在 cmd 里面任何 ...
- Spyder项目创建,打开与使用
1.Spyder项目的创建 新建一个Spyder项目需要点击Spyder上方标签栏中的Projects中的New Project 2.Spyder项目的打开 Spyder项目文件夹必须 存在.spyp ...