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

ops/2024/10/19 3:35:46/

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.ppmy.cn/ops/110215.html

相关文章

R语言结构方程模型分析与实践技术应用

结构方程模型(Sructural Equation Model)是一种建立、估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归、因子分析、协方差分析等方法,利用图形化模型方式清晰展示研究系统中变量间的因果网络关系,…

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用,卷积层也逐渐衍生出了许多变种,比较有代表性的有: 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolu…

一月通关华为OD,感谢冯姐

诚挚感谢 首先感谢小冯姐不懂华为OD的小冯 在整个过程中的帮助,因为我之前是在前公司做Java实习的,实习了两个多月了,算法题面试八股几乎没有,但是小冯姐非常负责,对于我提的“小白”问题都很耐心的解答。全程跟面试进…

MySQL基础作业三

查询 1.分别查询student表和score表的所有记录 mysql> select *from student; ---------------------------------------------------- | id | name | sex | birth | department | address | ---------------------------------------------------- | 901 | 张三丰…

2.3.2 协程调度器实现与性能测试

LINUX 精通 8 day24 20240909 晚19:35 - 20: 47 课程链接地址 老师画图用的是excalidraw 可以在线 本地! Excalidraw:开源实用的白板画图工具(在线/本地安装)-CSDN博客 2.3.2 协程调度器实现与性能测试 复习了上…

等保测评中的访问控制策略:企业优化指南

在信息安全等级保护(等保)测评中,访问控制作等保测评中的访问控制策略:企业优化指南为保障信息系统安全的关键环节,其策略的合理性和有效性直接影响到测评结果。企业如何优化访问控制策略,以满足等保测评的…

苍穹外卖——day1

前后端联调 前端先传给nginx再传给后端服务器 反向代理 我们可以看到前端和后端的访问地址不一样,那么怎么实现进行访问的呢? 我们是通过一种反向代理技术来实现的 利用nginx反向代理来实现前后端联调 下面是如何在我们的idea项目中使用nginx反向代理…

android studio 模拟器 loadlibrary failed with 126:找不到指定的模块

loadlibrary failed with 126:找不到指定的模块 解决方法 解决方法:设备管理器-> 显示适配器-> 禁用 AMD Redeon 重启AndroidStudio