计算机网络-TCP基础、三次挥手、四次握手过程

TCP基础

  • 定义:TCP是面向连接的、可靠的、基于字节流的传输层通信协议。这意味着在发送数据之前,TCP需要建立连接,并且它能确保数据的可靠传输。此外,TCP将数据视为无结构的连续字节流。
  • 面向连接:TCP只能一对一进行连接、通信。这并不意味着一个端口只能有一个TCP连接,而是说TCP连接是端到端的。
  • 可靠性:TCP通过序列号、确认应答、重传机制、流量控制等手段保证了数据的可靠传输。
  • 字节流:TCP将应用程序交下来的数据流分割成适当长度的报文段,然后交给IP层,由IP层进行发送。

TCP头格式

  • 源端口、目的端口:标识发送端和接收端的应用程序。
  • 序列号:TCP报文段中第一个字节的数据序列标识。建立连接时采用随机数作为初始值,每发送一次累加当此发送的字节数。序列号的作用包括解决包乱序问题,确认已经接收和发送的数据包,防止因网络原因送来的旧报文,以及实现流量控制。
  • 确认号:表示已经成功接收到了这个序列号之前的所有数据,请求从这个序列号开始发送后续的数据。发送方根据确认号确定是否需要重传数据。
  • 头部长度:标识该TCP头部有多少个32bit字。
  • 控制位:包括SYN、ACK、FIN、RST、URG、PSH等,用于控制TCP的各种操作。
  • 窗口大小:表示自己接受数据的窗口大小,用于控制对方的发送速度。
  • 校验和:执行CRC算法以检验报文段在传输过程中是否损坏。
  • 紧急指针:它和序列号字段的值相加表示最后一个紧急数据的下一字节的序号。
  • TCP选项:如MSS,表示TCP数据的最大长度。

TCP连接

  • 连接是为了维护保证可靠性和流量控制的状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。

三次握手过程

  • 服务端开启进程,监听端口。
  • 客户端希望建立连接,发送SYN报文,SYN置1,初始化序列号client_isn,发送后处于SYN-SENT状态。
  • 服务端收到SYN报文,回复SYN+ACK报文,SYN和ACK都置1,初始化自己的序列号server_isn,确认应答号填入client_isn+1,发送后处于SYN-RCVD状态。
  • 客户端收到SYN+ACK报文,回复ACK报文,ACK置1,确认应答号填入server_isn+1,可以携带数据,发送后处于ESTABLISHED状态。
  • 服务端收到ACK报文,确认连接的建立,进入ESTABLISHED状态。

四次挥手过程

  • 主动关闭方发送FIN报文,FIN置1,ACK置1,发送后处于FIN_WAIT_1状态。
  • 被动关闭方收到FIN+ACK报文,回复ACK报文,ACK置1,发送后进入CLOSE_WAIT状态,继续接收数据。
  • 主动关闭方收到ACK报文,收到后进入FIN_WAIT_2状态。
  • 被动关闭方数据接受完毕,发送FIN+ACK报文,FIN置1,ACK置1,发送后处于LAST_ACK状态。
  • 主动关闭方收到FIN+ACK报文,回复ACK报文,ACK置1,发送后进入TIME_WAIT状态。
  • 被动关闭方收到ACK报文,收到后进入CLOSE状态。
  • 主动关闭方等待2MSL,等待后进入CLOSE状态。

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

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

相关文章

RAG文本加载和分块调研

文本加载和分块 一、文本加载 文本加载是RAG文本增强检索重要环节。文件有不同类型(excel、word、ppt、pdf、png、html、eps、gif、mp4、zip等),衍生出了很多第三方库。使用python处理文件是各种python开发岗位都需要的操作。主要涉及到的标准…

【智能算法】随机油漆优化算法(SPO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,A Kaveh等人受到绘画艺术启发,提出了减法平均优化器(Stochastic Paint Optimizer,SPO)。 2.算法原理 2.1算法思想 SPO将搜索空间…

von Mises-Fisher Distribution (Appendix)

2. Relation to Normal Distribution 疑问:有没有不各向同性的 vMF? 答:应该是没有的,如果想让各方向偏离中心的速度不一致,则协方差矩阵不为 I \bm{I} I 的倍数. 正态分布的概率密度函数为: f ( x ) 1 …

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测 目录 时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索…

RuntimeError: Error(s) in loading state_dict for ZoeDepth解决方案

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波…

代码随想录学习Day 26

332.重新安排行程 题目链接 from collections import defaultdictclass Solution:def findItinerary(self, tickets):targets defaultdict(list) # 创建默认字典,用于存储机场映射关系for ticket in tickets:targets[ticket[0]].append(ticket[1]) # 将机票输入…

win11网络驱动怎么安装,windows11怎么安装驱动

win11网络驱动怎么安装呢?驱动程序是系统中非常重要的部分,当安装新硬件时,相应的硬件没有驱动程序,那么在计算中就无法工作。而有了驱动后,计算机就可以与设备进行通信。例如,电脑如果缺少了网络驱动,那么就会无法上网,需要安装上网的驱动程序。由于win11系统变化太大…

Echarts柱状图多样式实现

样式一 样式二 在这里插入代码片

数据库索引详解

目录 第一章、快速了解索引1.1)索引是什么1.2)为什么使用索引1.3)操作索引示例 第二章、索引分类2.1)按数据结构分类2.1.1)树型数据结构索引二叉树B树B 树 2.1.2)Hash数据结构索引2.1.3) 其他数…

【JavaWeb】Day34.MySQL概述——数据库设计-DDL(一)

项目开发流程 需求文档: 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提供的页面原型及需求文档。 设计: 拿到产品原型和需求文档之后,我们首先要做的不是编码,而是要先进行项目的设计&am…

docker搭建EFK

目录 elasticsearch1.创建网络2.拉取镜像3.创建容器如果出现启动失败,提示目录挂载失败,可以考虑如下措施 开放防火墙端口4.验证安装成功重置es密码关闭https连接创建kibana用户创建新账户给账户授权 kibana1.创建容器2.验证安装成功3.es为kibana创建用户…

java对象是怎么在jvm中new出来的,在内存中查看java对象成员变量字段属性值

java对象是怎么在jvm中new出来的 查看java对象字段属性在内存中的值 java 对象 创建 流程 附上java源码 public class MiDept {private int innerFiled999;public MiDept() {System.out.println("new MiDept--------------");}public String show(int data) {Sy…

电脑怎么才能用动态ip上网?步骤详解与优势分析

在数字化时代,互联网已成为我们生活与工作中不可或缺的一部分。为了保障网络安全、提升网络效率或满足特定应用场景的需求,有时我们需要为电脑配置动态IP地址上网。那么,如何为电脑设置动态IP地址呢?本文将为您详细介绍动态IP的配…

为什么AI模型需要合乎道德的数据

道德问题简介 “合乎道德的数据”和“负责任的数据”这两个词的含义可能并不明确。在科技界和AI数据界,道德原则是指负责任地采集和使用数据用以训练模型,并确保这些模型不带偏见地与人类交互。不仅为训练模型负责任地采集和使用数据很重要,…

Java的jmap命令使用详解

jmap命令简介 jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。 以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用的…

Elastic:5 个原因解释为什么可观察性和安全性能够很好地协同工作

作者:来自 Elastic Jennifer Ellard, Gagan Singh 网站可靠性工程师(site reliability engineers - SREs)和安全分析师 (security analysts) —— 尽管担任着非常不同的角色 —— 分享了许多相同的目标。他们都采用主动监控和事件响应策略来识…

【随笔】Git 高级篇 -- 撤销变更 reset | revert(十四)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Cuda编程-NPP库

Cuda编程先前有过研究,现在记录下Cuda相关的库使用 目录 0.参考文档1.NPP简介1.1 头文件1.2 库文件1.3 编译时链接关系1.4 NPP函数的命名方式1.5 General Conventions 一般约定1.6 Image Processing Conventions 图像处理约定 2.举例:NPP实现YUV转BGR2.1…

基于Android的记单词App系统的设计与实现

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…