TCP三次握手(通俗易懂)
一--导读
前不久中国和外国RPEC协议的签订,标志着东亚自贸区的建立成功。现在韩国和日本要做贸易。日本一直监听着韩国总统的一举一动,但他又不会主动。(服务器的监听状态)只是被动的等着韩国总统先开口。首先韩国总统发送信息给日本。信息内容为“安倍兄,我想和你做点小生意,我发500台三星手机给你”。安倍收到之后回复:“我是安倍,小文啊,收到你的消息了,我要500+1台三星,并且我以50辆汽车作为对等交换”。韩国总统收到安倍会话,并回复:“安倍兄,你的消息我已收到,我给你发500+1台手机,但你也得给我发50+1辆汽车”。由于韩国小,船也小,只能分批次去运这些手机,并且安排相应的人员去管理当前发送两个国家都有自己的接收人员和发送人员去管理这些货物 。并且如果这些手机在路上不小心被抢了或者丢了。韩国都得重新让专门的人去发送手机台数和接收汽车辆数。
TCP服务器的传输控制块:
指向发送和接收缓存的指针(管发和收的人)
指向重传队列的指针(重新发送的人)
当前的发送和接收序号(管现在发多少和收多少的人)
二---TCP连接要解决的三个问题
TCP的连接建立主要解决以下三个问题:
1--使TCP双方能够知道对方的存在
2--使TCP双方能够协商一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量)
3--使TCP双方能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
三---图解TCP三次握手

图中
SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号
同步位SYN=1,表明这是一个TCP连接请求报文段(相当于导读中的“安倍”)。
seq=x(相当于导读中的“500台三星”),作为TCP客户进程选择的初始字号,(
注意:TCP规定的SYN被设置为1的报文段不能携带数据,但要消耗一个序号)。(也就是韩国总统没有说到500,但是他说了一句话)
第一个ACK=1(相当于导读中的“小文啊,收到你的消息了”)。
seq=y (相当于导读中的50辆汽车)
ack=x+1(相当于导读中的500+1)。
第二个ACK=1(相当于导读中的“安倍兄,你的消息我已收到”)
seq=x+1(我给你发500+1台三星)
ack=y+1(但你得给我发50+1台汽车)
四--能否只有两次握手?
答案肯定是不能。看下图
红线部分为一个迟到的连接请求,并且重传计时器结束了他还没有到达,于是发生重传(黑线)。
若只有两次握手,当迟到的到达后,接收方收到了,然后就按规矩建立连接,安排专人(资源)去等待发送方发送数据。但是发送方已经重传过了,他并不知道这个迟到的请求到达了(他也以为重传过了就不会再有重复请求到达),于是接收方就这样傻傻的等待。

三次握手能防止已失效的连接请求报文段突然又传到TCP服务器,导致错误,浪费资源。
TCP三次握手(通俗易懂)的更多相关文章
- TCP‘三次握手’和‘四次挥手’(通俗易懂)
概述 我们都知道 TCP 是 可靠的数据传输协议,UDP是不可靠传输,那么TCP它是怎么保证可靠传输的呢?那我们就不得不提 TCP 的三次握手和四次挥手. 三次握手 下图为三次握手的流程图 下面通 ...
- 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...
- [转帖]脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手 http://www.52im.net/thread-1729-1-1.html 1.引言 网络编程中TCP协议的三次握手和 ...
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP三次握手四次挥手
看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
随机推荐
- PyQt(Python+Qt)学习随笔:gridLayout的layoutHorizontalSpacing和layoutVerticalSpacing属性
layoutHorizontalSpacing和layoutVerticalSpacing属性在Qt Designer中是网格布局(gridLayout)和表单布局(formLayout)都有的属性, ...
- 数据结构——创建链表或树节点的小trick(哑结点)
一般创建链表时,我们可以创建一个哑结点,来保存头部 * struct ListNode { * int val; * ListNode *next; * ListNod ...
- 个人项目(wc.exe)
一.项目在GitHub上的地址: ·https://github.com/DawsonHuang/Word_Count 二.项目描述: ·项目名:WordCount(以下简称WC或项目) ·项目简述: ...
- JavaScript异步编程的四种方法
1.回调函数 f1(f2); 回调函数是异步编程的基本方法.其优点是易编写.易理解和易部署:缺点是不利于代码的阅读和维护,各个部分之间高度耦合 (Coupling),流程比较混乱,而且每个任务只能指定 ...
- 使用 swagger 加注解 有的方法显示 有的不显示
在使用swagger 的时候 ,加完注解 运行后发现,有很多加了注解的没有显示,debug 也有返回数据 ,最终发现,有一个方法中有个参数 是Boolean 类型, 但是这个 参数 我没有添加 ...
- 【APIO2020】交换城市(Kruskal重构树)
Description 给定一个 \(n\) 个点,\(m\) 条边的无向连通图,边带权. \(q\) 次询问,每次询问两个点 \(x, y\),求两点间的次小瓶颈路.不存在输出 -1. Hint \ ...
- 使用HBase Shell命令
使用HBase Shell命令 或 使用HBase Java API完成: 列出HBase所有的表的相关信息,例如表名: 在终端打印出指定的表的所有记录数据: 向已经创建好的表添加和删除指定的列族或列 ...
- Vue高仿网易云网页端源码
音乐播放器虽然烂大街了,但是作为前端没自己撸一个一直是个遗憾, 而且偶然间发现 pc 端 web 版的网易云音乐做的实在是太简陋了, 社区仿 pc 客户端的网易云也不多见,为了弥补这个遗憾, 就用 ...
- Springboot 使用logback直接将日志写入Elasticsearch
正常情况下,一般组合为elk 即日志会通过logstash写入es,但本文主要为轻量级项目直接利用appender写入es 首先需要引入包 <dependency> <groupId ...
- INS-06004 file operation on user's .ssh directory is not permitted
在搭建rac的时候不能先ssh到另一台服务器,否则安装程序无法自动创建/home/oracle/.ssh这个目录,然后就会报INS-06004这个错误了. 原因:在/home/oracle/这个路径下 ...