TCP是一个面向链接的协议,任何一个面向连接的协议,我们都可以将其类比为我们最熟悉的打电话模型

如何类比呢?我们可以从建立和销毁两个阶段分别来看这件事情。

建立连接阶段

首先,我们来看看TCP中经典的3次握手协议:


# 主机A、B建立连接阶段3次握手过程 1. 主机A向主机B发送请求报文(其中SYN位为1)。  2. 主机B接受到报文后,向主机A回复ACK报文,并为此处连接分配资源。 3. 主机A接受到ACK报文后,也向主机A回复ACK报文,并分配资源。一次TCP连接就这样建立了。

如果类比成打电话,那么就是


# A给B打电话,B拿起听筒后 1. A首先对着听筒“喂”了一声。 2. B听到“喂”之后,向A回复“请讲”。//此时A可以确认B能够听到他说话 3. A听到B的“请讲”之后,回复“你好”。 //此时B也确认了A能够听到他说话

至此,TCP是3次握手,而不是2次或是4次握手的原因也就一目了然了:A和B发出的第一个报文都是为了获得对方的回答,以便确 大专栏  如何理解TCP的三次握手协议?认对方能接受到自己的消息。

销毁连接阶段

销毁连接阶段,要经历4次握手:


1. Client端发起FIN中断连接请求。 2. Server端接受到该请求,Server端发送ACK给Client端,Client端进入FIN_WAIT状态。此时,Server端可以继续发送数据到Client端。 3. Server端数据发送完毕,发起FIN中断连接请求。 4. Client端接受到中断请求,发送ACK给Server端,Server端若收到该请求,断开连接。Client端等待30s后,若没收到Server端的消息,也断开连接。

上面的流程,我们同样可以用打电话做类比:


# A和B正在打电话 1. A对B说:“我的话说完了,准备挂了啊。” 2. B对A说:“等等,blablabla。” 3. B对A说:“我也说完了,挂吧。” 4. A对B说:“好的。”, 然后挂断了电话。B听到电话传来嘟嘟声之后也挂断了电话。

由于TCP和打电话一样都是全双工协议(意味着连接的双方都可以向对方发送消息),因此,销毁连接时,任意一方都可以发起销毁连接的请求(即谁都可以挂电话),但在断开连接之前,需要保证对方的消息已经发送完毕。这也是关闭一条连接需要4次握手的原因。

如何理解TCP的三次握手协议?的更多相关文章

  1. 最简单的理解 建立TCP连接 三次握手协议

     最简单的理解一:建立TCP连接:三次握手协议    客户端:我要对你讲话,你能听到吗:服务端:我能听到:而且我也要对你讲话,你能听到吗:客户端:我也能听到.…….互相开始通话…….. 二:关闭TCP ...

  2. 你应该这么理解TCP的三次握手和四次挥手

    前言: TCP协议是计算机的基础,他本身是一个非常非常复杂的协议. 本文只是蜻蜓点水,将从网络基础以及TCP的相关概念介绍开始,之后再将三次握手,四次挥手这些内容来阐述. 最后介绍一些常见问题,并给出 ...

  3. 通俗理解TCP的三次握手

    三次握手流程的本质,可以这么理解:TCP的三次握手其实是双方各一次握手,各一次确认,只是其中一次握手和确认合并在一起. 当然也可以更通俗的去理解: "喂,你听得到吗?" " ...

  4. TCP/IP三次握手协议

    一.简介         三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互,OSI参考模型中的网络层,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一 ...

  5. 【俗话说】换个角度理解TCP的三次握手和四次挥手

    PS:通俗一点的解释都会在引用块中 Nothing is true, Everything is permitted. 0. 什么是TCP TCP,全称Transmission Control Pro ...

  6. 理解TCP/IP三次握手与四次挥手的正确姿势

    背景 注:以下情节纯属虚构,我并没有女朋友==. 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的 ...

  7. TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。

    这个TCP连接就是一次追女生-谈恋爱-分手,追求比分手简单,但是分手比追求复杂.哥,谈了半年的女朋友,在就快要成功了的时候分了,原因是因为有人在后面该老子背后搞SYN洪泛攻击,最后女朋友丢失了.学会T ...

  8. 理解 TCP/IP 三次握手与四次挥手

    TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6. 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要 ...

  9. TCP在三次握手协议和四波(图)

    设定TCP需要建立一个三次握手的能力,断开需要握手.整步骤,如看到下面的附图: 先来看看怎样建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...

随机推荐

  1. goweb-安装go及配置go

    安装go及配置go 安装go 写这篇博客时,我的电脑的windows已经安装过了go,用的是标准包安装,不过我的linux操作系统还没安装,可以考虑用第三方工具安装,因为看了goweb这本书,我才知道 ...

  2. 懒人JS

    1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafte ...

  3. JAVA8 函数式接口

    一.什么是函数式接口 1.只包含一个抽象方法的接口,称为函数式接口. 2.你可以通过Lambda表达式来创建该接口的对象.(若Lambda表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进 ...

  4. Educational Codeforces Round 80 (Rated for Div. 2)D E

    D枚举子集 题:https://codeforces.com/contest/1288/problem/D题意:给定n个序列,每个序列m个数,求第i个和第j个序列组成b序列,b序列=max(a[i][ ...

  5. 【转】浅述WinForm多线程编程与Control.Invoke的应用

    环境:VS2008.C#3.0 在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的 ...

  6. Linkage Disequilibrium|D‘|r2

    I.10 Other Measures of Linkage Disequilibrium 因为D的取值强烈地依赖于人为制定的等位基因频率(PA及PB),所以它不利于LD程度的比较.标准化的不平衡系数 ...

  7. ofo小黄车做信息流!这到底算怎么回事?

    不得不说,现在ofo绝对处于商业处境和舆论的风口浪尖上.近段时间以来,ofo各种大动作实在是让业界和大众都"看不懂".但毋庸置疑的是,ofo的种种举措都是为了"自救&qu ...

  8. 2020 CCPC Wannafly Winter Camp Day2-K-破忒头的匿名信

    题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移 ...

  9. dao层单元测试报错CONDITIONS EVALUATION REPORT

    0 环境 系统:win10 编辑器:IDEA 1 正文 1.1 起因 在controller层测试 测试url时没问题的 但是我单元测试就报错 1.2 排查 因为controller层 springb ...

  10. cas sso单点登录 登录过程和登出过程原理说明

    CAS大体原理我就不说了,网上一大把,不过具体交互流程没说清楚,所以有这篇文章,如果有错误,请多多指教 登录过程 用户第一次访问一个CAS 服务的客户web 应用时(访问URL :http://192 ...