计算机网络TCP“三次握手”
终于有时间写这篇文章了,最近真的比较忙!
TCP协议 之 “三次握手”
引言:我们知道,TCP是面向连接的协议(相较于UDP无连接的协议),会在传送数据之前先在 发送端 & 接收端 之间建立一条连接,所以实现了可靠传输。而运输链接是用来传送TCP报文的。TCP运输连接的建立,是面向连接的通信协议传送数据之前必需的一个步骤。
一次传输涉及到三个步骤:
- 建立连接(本篇所涉及)
- 传送数据
- 释放连接
在建立连接时,有趣的“三次握手”就粉墨登场了。
所谓三次握手,其实是发送端&接收端在传送数据之前的 一次握手,发送了三次报文而已。下面具体说明连接建立(握手)的过程。
Notice:发送端以及接收端 通常指 客户端和它所请求的服务器,书上一般是这样写的,但这里我还是采用 发送端&接收端 来叙述。
在传送之初,发送端进程(应用层) 先创建传输控制块(Transmission Control Block, TCB)。当要向某端发送数据(TCP报文段)时:
发送端:--------------------1
发出连接请求报文段(规定不能携带数据,但要消耗序号,以便识别应答报文段):先将报文段首部的 同步位SYN = 1, 并选择一个初始序号 seq = x, 发出此报文段(发送端口&目的端口等也要设置好),进入 SYN-SENT(同步请求已发送)状态。
接收端:(此前一直处于Liscen 侦听状态,就像服务器一样)----------------------2
收到连接请求报文段后,若同意连接(就像服务器允许访问,不允许就返回错误码),向发送端 发送确认连接报文段:同样 同步位SYN = 1,确认位 ACK = 1(表明确认报文段有效/这是有效回答报文段), 同样需要选择报文序号 seq = y, 应答号ack = x+1(表明是对序号x的请求报文段的确认应答),向原发送端发出此报文段(端口要绑定好),进入SYN-RCVD(同步接受)状态。
发送端:--------------------3
收到确认连接报文段后,再次向接收端给出确认(Why?后续文章会解释):已经达到了同步,于是此报文段就不再需要SYN,直接 确认ACK = 1, seq = x+1,ack = y+1,发送报文段。发送端进入ESTABLISHED(运输连接已建立)状态。
接收端:
收到发送端的确认后,进入ESTABLISHED(运输连接已建立)状态。(未发送报文,不算在内)
传送数据......
释放连接......(后面文章)。
其实,在我看来,“三次握手”即“三报文握手”,就像是 表白 一样。下面是有趣的理解:
“三次握手”------表白版
男生:---------------------1
“小姐姐, 我喜欢你, 你喜欢我吗?” SYN=1, seq=x 进入表白发送完成状态
漂亮姐姐: --------------2
(如果同意)“啊!是吗!我也喜欢你呢!” SYN=1, ACK=1, seq=y, ack=x+1 进入表白接受状态
男生:---------------------3
“那小姐姐以后就是我的啦!” ACK=1, seq=x+1, ack=y+1 进入恋爱状态
漂亮姐姐:进入恋爱状态。
计算机网络TCP“三次握手”的更多相关文章
- 计算机网络--TCP三次握手和四次挥手
TCP(传输控制协议) TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.通过三次握手建立连接,通讯完成时要拆除连 ...
- JAVA面试-计算机网络-TCP三次握手
学习原因 这个是面试的一个常问热点,所以务必要掌握. 通俗示例 小红是人事部门的员工,现在正在招收IT人员,小明看到招聘信息和待遇,感觉很适合自己,所以准备和小红发消息了解具体情况.而简历在本故事中代 ...
- 计算机网络(四),TCP三次握手
目录 1.三次握手详情 2.为什么需要三次握手才能建立连接 3.首次握手的隐患---SYN超时的问题 4.建立连接之后,Client出现故障 四.TCP三次握手 1.三次握手详情 (1)一开始,客户端 ...
- 面试问题之计算机网络:TCP三次握手四次挥手
转载于:https://www.cnblogs.com/Andya/p/7272462.html TCP三次握手: 起初A和B都处于CLOSED关闭状态 B创建TCB,处于LISTEN收听状态,等待A ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- TCP三次握手,数据传输,四次挥手
TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它 ...
- 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...
- 【linux】关于TCP三次握手和四次挥手
1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数 ...
- TCP三次握手四次断开
今天被问到三次握手了,当时只是脑子里有印象,却忘了一些SYN细节,手动微笑. 这么下去还怎么混...赶紧复习个... 三次握手是什么? TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双 ...
随机推荐
- ionic2 关于启动后白屏问题跟app启动慢的问题
问题描述: 在ionic2下创建的项目打包生成apk,运行在真机上,进入启动页然后有5秒左右的白屏情况才进入首页,在真实项目中更严重,启动画面后更有时候十几秒都是白屏,体验性非常差. 在各种搜索之下, ...
- border-image属性把边框的背景设置为图片
一.浏览器对它的支持Firefox3.5-Firefox15 需要加-moz-前缀Firefox15以上 同样支持-moz-前缀的css代码,但是必须在css代码中加 ...
- 动车上的书摘-java网络 连接服务器
摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 应该有些延迟,你会看到黑幕中弹出 来自USA的X原子的计量时间: ...
- 【原创】单片系统SoC
人们根据需要把一些功能模块(蓝牙.GPRS.TCP/IP通信模块等等)与MCU进行有机的结合,制造出集成度更高的系统级的芯片. SoC是System on Chip的缩写,直译是“芯片级系统” ...
- 字符串不相同出现相同HashCode(算法)
转自:https://blog.csdn.net/fly_grass_fish/article/details/81742794 在Java中有HashCode的说法,以前以为HashCode是唯一的 ...
- 系统不支持WP开发
好伤心,,,系统不支持WP开发... 买的ThinkPad S5 自带的win8,既不属于专业版,也不属于家庭版,,不属于各种版本. 其他条件都满足了.. 难道我要还系统吗??
- FFmpeg中overlay滤镜用法-水印及画中画
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10434209.html 1. overlay技术简介 overlay技术又称视频叠加技术 ...
- retry重试常见场景及实现
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现. ...
- Java线程实现与安全
目录 1. 线程的实现 线程的三种实现方式 Java线程的实现与调度 2. 线程安全 Java的五种共享数据 保证线程安全的三种方式 前言 本篇博文主要是是在Java内存模型的基础上介绍Java线程更 ...
- OOP面向对象
一:什么是面向过程 我们是怎么思考和解决上面的问题呢? 答案是:我们自己的思维一直按照步骤来处理这个问题,这是我们的常规思维,这就是所谓的面向过程POP编程 二:面向过程POP为什么转换为OOP ...