TCP协议建立连接的过程及其意义

news2024/10/5 0:23:19

目录

三次握手

四次挥手

三次握手的意义


  在客户端与服务器传输数据之前,要在两台主机之间先建立连接,然后再传输业务数据。三次握手,就是建立连接的过程,是在传输业务之前,就要先进行。握手好了,才能进行后续的传输。注意:握手只是发送一个不携带业务数据的数据报,不起到任何业务的作用,只是用来“打个招呼”。

三次握手

  建立连接,就是通信双方,各自保存对端的信息。具体完成上述过程,需要经过三次网络交互。三次握手的第一次一定是客户端先发起的。谁先发起,谁就是客户端。如果是“服务器”先发起,它就不应该叫服务器了,而应该叫“客户端”。具体流程如下:

SYN称为同步报文,即一端向另一端主动发送数据时的报文。即把TCP报头中的SYN位置为1,就表示此报文为同步报文。

ACK称为应答报文,表示接收端收到发送过来的报文,再给发送端一个回答。即把TCP报头中的ACK位置置为1。

具体流程就是:客户端先向服务器发送一个SYN,服务器接收到了,就给客户端返回一个ACK,表示收到SYN(客户端向服务器通信是可以的),然后也会向客户端发送一个SYN,用来确定服务器向客户端通信是否成功,客户端如果收到SYN,也会返回一个ACK,告诉服务器,双方通信都是可以的。

注意,中间的两次交互ACK和SYN是可以合并成一个网络数据的。

所谓的合并,就是让这一个TCP数据报,报头中,同时把这两个bit位都置为1

这样就提高了传输的效率。

三次握手的时候,相当于双方各自让对方保存自己的信息,必须两边都把对方的信息保存好,连接才算是建立完成。

四次挥手

  四次挥手就是断开TCP连接的过程,四次挥手整个过程结束之后,TCP连接才会断开。

注:三次握手,一定是客户端先发起第一次请求。而四次挥手则是客户端和服务器都可以主动发起。我们此处以客户端主动提出为例。具体流程如下:

和三次握手的过程基本一致。断开连接,就是通信双方把之前保存对方的信息删除。

四次挥手中间两次能否合并?   常规情况下不能,特殊情况下可以。

这是因为三次握手过程中,SYN和ACK都是内核自动控制发送的。(发送时机是内核控制的,同一时机)服务器收到SYN后,立即返回ACK,也立即返回SYN,同时进行,就可以合并。

而四次挥手过程中,收到FIN后,ACK立即返回,但是FIN并不会立即返回,FIN返回的时机是应用程序代码中调用close方法的时候,才会触发的。

由于两个数据报触发的时机不同,因此就难以合并。

在特殊情况下,TCP触发延时应答机制的时候(要等待一段时间再返回ACK),两个数据报是可以合并的。

三次握手的意义

1)三次握手,相当于“投石问路”,在正式传输业务数据之前,先确认一下通信链路是否通畅。(也相当于TCP可靠传输的一种确认方式,但是只是辅助。核心还是确认应答和超时重传机制)

2)通过三次握手,来确认通信双方,发送能力和接收能力都是正常的。进行三次握手,本质上就是完成上述确认的过程。

3)三次握手的过程中,还需要协商一些必要的参数。有的参数,不是单方面就能确认的,需要双方共同来确定出来。

比如,TCP通信时使用的序号,就是协商出来的。第一次连接和第二次连接,协商出来的起始序号,往往差异很大。

在传输数据的过程中,某个数据报,网络通信的过程中,迷路了(不是丢包)。过了很久才到达服务器,而这个时候,之前的连接已经断开,现在是一个新的连接。服务器收到这样的数据之后,会直接丢弃。

那么如何区分这个数据报是不是上一次连接的数据报?通过序号就可以区分出来。

TCP要避免出现“前朝的剑,斩本朝的官”。每次建立的连接,都是一个新的数字,作为起始序号的。当前本朝的数据,序号一定是沿着我们起始序号往下的数字(不会相差很多)。如果突然收到了一个数据报,序号和当前的起始序号差别非常大,就可以认为这是前朝的数据报了。

一个经典面试题:TCP为啥要要三次握手?/两次行不行?四次行不行?

两次:不行,服务器这边对于通信双方的发送能力和接收能力的验证还没完成。

四次:行。但是没必要。拆开中间的这次交互,虽然不影响tcp的正常功能,但是性能会有损失。

以上,关于TCP,希望对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1669704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优质资料:大型制造企业等级保护安全建设整改依据,系统现状分析,网络安全风险分析

第1章 项目概述 XX 大型制造型企业是国内一家大型从事制造型出口贸易的大型综合企业集团,为了落实国家及集团的信息安全等级保护制度,提高信息系统的安全防护水平,细化各项信息网络安全工作措施,提升网络与信息系统工作的效率&am…

win7 phpstudy 多站点无法保存hosts的原因

1、先找到hosts文件位置 C:\Windows\System32\drivers\etc hosts文件不是txt的后缀,它是一个系统文件 2、如果不显示需要查找隐藏文件 组织-》文件夹和搜索选项-》查看-》取消隐藏文件夹的的√ 3、文件无法编辑 属性不要勾选只读

架构设计之学新而知故

缘由 因为一些特殊的机缘,接触到洋葱架构等一些新架构设计概念。 尝试理解了一段时间,就想简单梳理下对它们的理解,以达到学新而知故 😃 信息增益 以前计算机专业并不设置通信领域的信息论的专业课程,但是&#xf…

单片机智能灯控制系统源程序仿真原理图与论文全套资料

目录 1、设计描述 2、仿真图 3、程序 4、资料内容 资料下载地址:单片机智能灯控制系统源程序仿真原理图与论文全套资料下载 1、设计描述 设计了一款智能控制系统。 AT89C51LCD1602DS1302按键LED组成了这样一个完整的设计。 P2.0-P2.3 4个LED等代表庭院内的4…

拥抱智能物联新场景,畅享4G智能插座的领先优势!

在智能化浪潮席卷全球的今天,智能插座作为智能家居、智能办公、智能工业、智能校园、智能实验室等领域的核心设备,正逐渐受到人们的关注和青睐。近期,一款全新的4G智能插座正式上市,凭借其独特的优势和创新功能,已经迅…

防火墙技术基础篇:网络地址转换(NAT):防火墙技术的核心机制

防火墙技术基础篇:网络地址转换(NAT):防火墙技术的核心机制 网络地址转换(NAT)是现代网络架构中不可或缺的一个组成部分,尤其在防火墙技术的实现中扮演着重要角色。本文旨在全面解读NAT的工作机…

20-LINUX--网络编程

一. 主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同。大 端字节序是指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址 处。小端字节序则是指整数的高位字节存储在内存的高…

【Linux系统编程】第十七弹---进程理解

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、进程的基本概念 2、描述进程-PCB 2.1、什么是PCB 2.2、为什么要有PCB 3、task_ struct 3.1、启动进程 3.2、创建进程…

Qt之QMqtt 发送图片数据

简述 MQTT(消息队列遥测传输)是ISO标准下基于发布/订阅范式的消息协议;它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件; MQTT是一个基于客户端-服务器的消息发布/订阅传输协议;MQT…

Spring Security 复盘

1、什么Spring Security? Spring Security 是一种强大的框架,它在 Spring 生态系统中扮演着保护应用安全的关键角色。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。 2、认证 和 授权 1.什么是认证&#xff1…

电子合同怎么加盖电子章?

加盖电子章在电子合同上的过程通常涉及以下几个步骤,这里提供一个较为通用的流程,但请注意,具体操作可能会因不同的电子签名平台或软件而有所差异: 准备电子合同: 将合同内容编辑完成后,通常会保存为PDF格式…

解锁得物搬砖秘籍:实现稳定收益的秘诀大公开

01、项目介绍 目前比较常用的平台是淘宝,京东,拼多多,唯品会这些为主,以各品牌APP,小程序为辅。 从这些电商平台通过抢购,折扣等方式购买到相对低价的鞋子衣服等,货到手检查没有问题后&#x…

python绘制圣诞树 如何用python绘制一个圣诞树

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 圣诞树,是指用灯烛和装饰品把枞树或洋松装点起来的常青树。作为是圣诞节重要的组成元素之一,近代圣诞树起源于德国,后来逐步在世界范围内流行起来

掌握 Spring Boot 观察者模式:打造松耦合事件驱动应用程序

掌握 Spring Boot 观察者模式:打造松耦合事件驱动应用程序 观察者模式是一种常用的设计模式,用于解决事件驱动编程中的问题。该模式定义了一对多的依赖关系,其中一个对象(主题)向一组依赖它的对象(观察者&a…

供应商管理库存用什么软件

库存的管理是一个非常重要的话题,不管是企业还是个人,在日常工作中多多少少都会涉及到库存的管理,那么作为供应商,也是需要对库存进行管理的,因为需要对分销商进行出货,所以库存的有效管理非常重要。 供应商…

【cocos creator】2.4.0 import android.support.v4.app.ActivityCompat;失败的解决方案

时间是2024年5月,某cocos creator项目用的是2.4.0编辑器。需求是获取录音权限,需要import ActivityCompat。但是失败,提示Cannot resolve symbol app。 尝试了一些方案失败之后,决定升级cocos creator编辑器版本。升级到2.4.10。…

矿用光缆型号和规格

管道矿用光缆生产厂家,矿用光缆特点是什么,矿用通信光缆 矿用光缆 MGTS光缆的结构是将250 m光纤套入高模量材料制成的松套管中,松套管内填充防水化合物。缆芯的中心是一根金属加强芯,对于某些芯数的光缆来说,金属加强…

vue3 自定义国际化、elementPlus 国际化

自定义国际化 1. 引入 vue-i18n 插件 pnpm install vue-i18nnext 2. 页面添加语言文件目录,添加自定义的语言文件 3.语言目录里添加 index.ts, 内容如下 import { createI18n } from "vue-i18n";// 自定义语言文件 import zhCN from "…

灾备建设中虚拟机备份自定义数据块大小应用

灾备建设中,传输备份数据时,自定义数据块大小可以帮助优化数据传输和存储效率。 确定数据块大小,首先,需要确定合适的数据块大小。这可以根据备份数据量和网络带宽来决定。通常情况下,较小的数据块可以更好地适应网络…

Python构建网络控制和管理应用程库之使用详解

概要 POX是一种广泛使用的Python开发工具,主要用于构建网络控制和管理应用程序。作为一个灵活的软件平台,POX支持快速开发网络通信协议,尤其是在软件定义网络(SDN)领域中得到了广泛应用。本文将全面介绍POX库的安装、主要特性、基本与高级功能,并结合实际应用场景,展示…