【TCP三次握手+四次挥手(个人理解版本)】

news2024/12/24 2:35:56

TCP协议介绍

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议(它是全双工工作模式)。以下是对它的具体介绍:

基本概念
定义:TCP是Transmission Control Protocol的缩写,由IETF定义在RFC 793中。它是一种面向连接的、可靠的、基于字节流的传输层通信协议,旨在适应支持多网络应用的分层协议层次结构。
工作原理:TCP通过三次握手建立连接,确保数据包的可靠传输,并通过四次挥手优雅地关闭连接。
主要功能
流量控制:TCP使用滑动窗口机制来控制发送方的数据流量,防止接收方被数据淹没。
拥塞控制:TCP采用慢启动、拥塞避免、快速重传和快速恢复等算法来管理网络拥塞,提高数据传输效率。
发展历程
历史:TCP的正式定义始于1981年的RFC 793,并随着时间的推移不断演进,增加了如选择性确认、显式拥塞通知等功能。
标准文档:TCP相关的标准和扩展被记录在多个RFC文档中,这些文档共同构成了TCP协议的详细规范。
协议结构
头部信息:TCP头部通常包含源端口、目的端口、序号、确认号、数据偏移、保留位、控制位、窗口、校验和、紧急指针、选项和填充等字段。
数据格式:TCP将应用层的数据分割成适当大小的段,并在网络层进行封装和传输。
应用场景
Web服务:TCP是HTTP协议的基础,支撑着全球互联网的数据传输。
电子邮件:SMTP协议使用TCP作为传输层协议,确保邮件的可靠发送。
性能优化
优化技术:TCP采用了多种技术来优化性能,包括延迟应答、捎带应答和自适应调整窗口大小。
优化效果:这些技术提高了网络利用率,减少了延迟,增强了用户体验。

三次握手

TCP报文当中有SYN,ACK,FIN等标识
**SYN:**代表建立连接
**ACK:**确认响应
**FIN:**关闭连接

初始状态下,他们三个的默认值是0
在这里插入图片描述

第一步:

服务器和客户端的初始序号是随机生成的

客户端开启“SYN”,向服务端发送请求建立,此时SYN=1,在发送请求连接的时候将自己的序号发送出去
例如,此时的序号为seq=X,X=8633,(隐藏ack=0)
此时发过去的信息是 SYN=1,seq=X,ACK=0

第二步:

当服务器收到客户端的请求之后,在报文当中开启ACK确认同步响应,此时服务器会自己有一个序号,我们假设是seq=Y,Y=303,确认号:ack=seq(客户机)+1,即确认号=对方序号+1
做完之后服务器将这段 信息发送给客户机 : SYN=1,ACK=1,seq=y,ack=seq(客户机)+1,
为了防止DDoS攻击,服务器不会保存确认号,而是根据服务器的IP地址和端口号等私有信息进行算法的运算得到序号

第三步

因为此时,服务器不知道自己发送出去的信息是否被收到,所以客户端收到信息之后,将信息ack=seq(服务器)+1,seq=ack(服务器)
即自己的序号等于对付的确认号码,自己的确认号等于对方的序号+1

四次挥手

挥手这个动作,客户机或者服务器都可以作为发起方,我们这里以客户机开始挥手为例
在这里插入图片描述
第二版图片:
在这里插入图片描述

第一步:

这里不会使用固定数字,
客户端发送FIN和ACK给服务器
发送信息是,FIN,ACK,seq,ack

第二步

自己的序号使用使用的确认号,自己确认号使用对面的序号+1
seq=ack(客户端),ack=seq(客户端)+1
虽然发送了报文,但是因为服务器那边可还有需要发生的数据信息,所以等服务端发送完数据之后,挥在发送一个FIN+ACK进行确认,此时seq,ack不会发生变化即还是
“ seq=ack(客户端),ack=seq(客户端)+1”

第三步

这一步和握手的一样,自己的序号是对方的确认号,自己的确认号是对方的序号+1

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

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

相关文章

PHP无缝对接预订无忧场馆预订系统小程序源码

无缝对接,预订无忧 —— 场馆预订系统,让每一次活动都完美启航! 一、告别繁琐流程,预订从未如此简单 你是否曾经为了预订一个合适的场馆而焦头烂额?繁琐的咨询、确认、支付流程,让人心力交瘁。但现在&…

如何利用Java进行快速的足球大小球及亚盘数据处理与分析

在当今信息爆炸的时代,大量的数据产生和积累,对于企业和个人来说,如何高效地处理和分析这些数据成为了一项重要的任务。Java作为一门强大的编程语言,提供了丰富的工具和库,可以帮助我们快速进行数据处理与分析。下面将…

vue3中实现拖拽排序(vue-draggable-next的使用)

1.安装插件 npm i vue-draggable-next 2.引入使用 <template> <vue-draggable-next v-model"list" tag"div" handle".warn-card" group"warngroup" ghost-class"ghost"class"mb10 warn-card-box" ani…

【mysql】逻辑运算符

逻辑运算符 逻辑运算符主要是为了判断表达式的真假,返回结果也是1,0,null OR 这里面或就是两个条件或的关系,比如我要department_id等于10和等于20的情况就可以使用或. SELECT last_name,salary,department_id FROM employees WHERE department_id10 OR department_id20 …

Unreal游戏初始化流程

前言 本文主要是总结Unreal在游戏启动时的初始化流程&#xff0c;包括讨论PIE和Standalone的区别&#xff0c;避免把一些初始化逻辑放在不合适的位置&#xff0c;比如我希望在所有Actor BeginPlay后执行某个逻辑&#xff0c;那我如果把它放在Subsystem的initialize中显然就会搞…

Golang使用ReverseProxy实现反向代理

目录 1.源码结构体 2.官方单机示例 3.使用示例 4.简单的http服务&#xff08;用于测试&#xff09; 1.源码结构体 type ReverseProxy struct {// Rewrite 必须是一个函数&#xff0c;用于将请求修改为要使用 Transport 发送的新请求。然后&#xff0c;其响应将原封不动地…

打造古风炫酷个人网页:用HTML和CSS3传递笔墨韵味

需要用到的背景大家可以自己找喜欢的风格!!! 当然俺把俺用的背景放到文章最后了哦&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 感谢关注和支持 长期更新哦~~~ 1. 简洁的页面布局&#xff1a;保持优雅和对称 在古风设计中&#xff0c;布局的对称性非常重要…

【知识图谱】3.Protege下载安装

一、Protege 1.相关介绍 Protg软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件&#xff0c;或者说是本体开发工具&#xff0c;也是基于知识的编辑器&#xff0c;属于开放源代码软件。 这个软件主要用于语义网中本体的构建&#xff0c;是语义…

第15-02章:理解Class类并获取Class实例

我的后端学习大纲 我的Java学习大纲 1、Java反射机制原理图&#xff1a; 源代码通过Javac编译得到字节码文件&#xff0c;当我执行到new一个对象的时候&#xff0c;字节码文件会通过ClassLoader被加载&#xff0c;然后得到一个Class类对象&#xff0c;存放在堆中&#xff0c;加…

系统分析师10:知识产权与标准化

1 内容提要 保护范围与对象&#xff08;★★★★)保护期限&#xff08;★)知识产权人确定(★★★)侵权判断(★★★)标准的分类标准代号的识别 2 保护范围与对象 使用许可 按照被许可使用权的排他性强弱不同&#xff0c;可以将使用许可分为以下三种: ①独占使用许可-仅1个授权…

中国电子学会202406青少年软件编程(Python)等级考试试卷(一级)真题与解析

青少年软件编程(Python)等级考试试卷(一级) 分数:100题数:37 一、单选题(共25题,共50分) 1.在使用turtle绘制图形时,如果要控制小海龟移动到 x 坐标为 200,y 坐标为150 的位置,以下代码能够实现效果的是?( ) A. turtle.go(150, 200) B. turtle.go(200, 150) …

在线客服如何与呼叫系统结合使用?

以下是在线客服与呼叫系统结合使用的常见方式&#xff1a; 1.从客户接入角度 a多渠道整合&#xff1a; 将网站在线客服、手机APP在线客服、社交媒体平台&#xff08;如微信公众号、微博私信等&#xff09;以及呼叫系统的电话接入渠道整合在一个统一的平台上。例如&#xf…

HTTP跨域请求时为什么要发送options请求

跨域请求 浏览器同源策略同源策略一般限制Ajax网络请求&#xff0c;不能跨域请求server不会限制<link> <img> <script> <iframe> 加载第三方资源 JSONP实现跨域 <!-- aa.com网页 --> <script>window.onSuccess function(data) {consol…

如何选择PCB板材?

pcb板材的基本参数有哪些&#xff1f; 1. 厚度&#xff1a;PCB板材厚度是指板子的整体厚度。常见的厚度有0.8mm、1.0mm、1.6mm、2.0mm等。在选择时需要根据实际需求进行选择&#xff0c;通常需要根据元件数量、限制空间和性能要求来决定。 2. 热膨胀系数&#xff1a;热膨胀系数…

把设计模式用起来(3)用不好的原因之时机不对

上一篇&#xff1a;《把设计模式用起来&#xff08;3&#xff09;——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因&#xff0c;这是第二个&#xff1a;使用设计模式的时机不对。 二、时机不对 这里…

linux的文本编辑器vim常用操作命令介绍

目录 一、vim介绍 二、vim的特点 1、模式编辑 2、强大的命令集 3、可配置性 4、插件系统 5、多平台支持 三、vim的基础用法 1、打开或创建文件 2、移动光标 3、编辑文件 4、返回命令模式 5、保存文件并退出 6、不保存并退出 四、vim的部分进阶用法 1、快速删除行 2、撤销操作…

数据结构——复杂度讲解

已经太久没用更新了&#xff0c;由于各种原因&#xff0c;导致很久没用更新了&#xff0c;但是停更期间我也是一直在很努力的学习与复习之前学过的知识&#xff0c;读了两本C语言的数据&#xff0c;初学者也是可以看的&#xff0c;推荐给大家&#xff0c;如果需要pdf&#xff0…

SAP TR传输工具

实现效果 不用释放请求&#xff0c;可以把对方对象从DEV直接释放到目标系统中 表对象设计 表结构设计 1. ZSAB0007 Develop toolset: current working objects 2. Structure&#xff1a;ZSAB0008 发版计划请求列表 3. ZSAB0022 Development objects - object search r…

Bootstrap布局实例(偏移列)

偏移是一个用于更专业的布局的有用功能。它们可用来给列腾出更多的空间。例如&#xff0c;.col-xs-* 类不支持偏移&#xff0c;但是它们可以简单地通过使用一个空的单元格来实现该效果。 为了在大屏幕显示器上使用偏移&#xff0c;请使用 .col-md-offset-* 类。这些类会把一个…

Vue3: setup语法糖

一. setup语法糖 在 Vue 3 中&#xff0c;setup 语法糖是一种简化组件内部状态和方法管理的特性。它允许你将组件的逻辑直接编写在组件的定义中&#xff0c;而不是像 Vue 2 那样需要在 methods 和 data 属性中管理。setup 语法糖基于 ES6 的类的静态方法&#xff0c;允许你更灵…