一篇理解TCP协议

news2024/10/5 21:18:09

一、TCP协议概念。

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它主要用于在计算机网络中,通过建立可靠的通信连接来进行数据传输。

TCP协议的特点如下:

  • 可靠性:TCP使用确认、重传和超时等机制,确保数据可靠地传输到目标主机,并且按照正确的顺序组装。
  • 面向连接:数据传输之前需要在发送端和接收端建立连接,传输完成后再释放连接。
  • 全双工通信:TCP允许同时进行双向的数据传输,即发送方和接收方可以同时发送和接收数据。
  • 流量控制:TCP通过滑动窗口机制进行流量控制,控制发送速率,以适应接收方的处理能力。
  • 拥塞控制:TCP通过拥塞窗口机制和慢启动算法来进行拥塞控制,防止网络拥塞。
  • 高效性:TCP使用各种优化算法,如快速重传、快速恢复等,提高数据传输的效率。
  • 适用性广泛:TCP被广泛应用于互联网和局域网等各种计算机网络中,支持各种应用程序的可靠数据传输。

二、TCP工作流程。

通过NDS获取IP地址之后,就会把HTTP的传输工作交给TCP协议完成。
在这里插入图片描述

三、TCP报文格式。

在这里插入图片描述

四、三次握手和四次挥手。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 为什么需要四次挥手?
    把ACK和FIN分开发送的原因是因为当主动方在数据传送结束后发出连接释放的通知,由于被动方可能还有必要的数据要处理,所以会先返回 ACK 确认收到报文。当被动方也没有数据再发送的时候,则发出FIN通知,对方确认后才完全关闭TCP连接。
  • 为什么TIME_WAIT等待时间是2MSL?
    MSL是报文的最大生存时间,超过这个时间,报文就将丢弃。
    确保对方能够收到最后一个ack报文,如果服务端没有收到最后的ACK报文,就会触发超时重传FIN报文,从客户端发送ACK报文到接到到服务端重传的FIN报文,一去一来,最多就需要2MSL。

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

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

相关文章

满足你甜食需求的葡萄酒是怎样的?

也许这是不言而喻的,但我们认为,如果没有一杯完美的葡萄酒来补充你最喜爱的菜肴的复杂风味,一顿美食就不完整。无论您是享用美味的葡萄酒作为开胃菜,还是搭配主菜,我们相信我们最喜爱的饮料是一餐中任何部分的完美补充…

ESP32设备驱动-TFT_eSPI显示中文

TFT_eSPI显示中文 文章目录 TFT_eSPI显示中文1、安装TFT_eSPI库2、创建字库3、生成字库头文件4、使用字库本文将详细介绍如何使用TFT_eSPI显示中文。 1、安装TFT_eSPI库 2、创建字库 TFT_eSPI字体工具使用Processing软件创建字体。 下载并安装Processing:https://processin…

css的gap设置元素之间的间隔

在felx布局中可以使用gap来设置元素之间的间隔&#xff1b; .box{width: 800px;height: auto;border: 1px solid green;display: flex;flex-wrap: wrap;gap: 100px; } .inner{width: 200px;height: 200px;background-color: skyblue; } <div class"box"><…

6-5 头插法创建单链表(C) 分数 10

struct Node* buildLinkedList(int* arr, int n) {//创建哨兵位struct Node* head (struct Node*)malloc(sizeof(struct Node));head->link NULL;struct Node* node NULL;for (int i 0; i < n; i){//循环创建每一个结点node (struct Node*)malloc(sizeof(struct Nod…

Android系统定制之监听USB键盘来判断是否弹出软键盘

一.项目背景 在设备上弹出软键盘,会将一大部分UI遮挡起来,造成很多图标无法看到和点击,使用起来不方便,因此通过插入usb键盘输入代替软键盘,但是点击输入框默认会弹出软键盘,因此想要插入USB键盘时,默认关闭软键盘,拔出键盘时再弹出,方便用户使用 二.设计思路 2.1…

Python大数据之PySpark(六)RDD的操作

文章目录 RDD的操作函数分类Transformation函数Action函数基础练习[Wordcount快速演示]Transformer算子 -*- coding: utf-8 -*-Program function&#xff1a;完成单Value类型RDD的转换算子的演示1-创建SparkContext申请资源2-key和value类型算子groupByKey[(b, <pyspark.res…

【Java】微服务——Gateway网关

目录 1.为什么需要网关2.gateway快速入门1&#xff09;创建gateway服务&#xff0c;引入依赖2&#xff09;编写启动类3&#xff09;编写基础配置和路由规则4&#xff09;重启测试5&#xff09;网关路由的流程图 3.3.断言工厂3.4.过滤器工厂3.4.1.路由过滤器的种类3.4.2.请求头过…

idea插件(free mybatis plugin)

安装&#xff1a; 由于我用的idea版本是2023的&#xff0c;所以搜出来的是Free MyBatis Tool,和Free MyBatis plugin是一样的 主要功能&#xff1a; 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui…

Java高级之反射

关于反射的举例&#xff1a; 示例代码&#xff1a;Fan.java package testFanShe;/*** author: Arbicoral* Description: 测试反射&#xff1a;* 成员变量&#xff1a;2个public&#xff0c;2个private* 构造器&#xff1a;4个public&#x…

HTML 笔记 表格

1 表格基本语法 tr&#xff1a;table row th&#xff1a;table head 2 表格属性 2.1 基本属性 表格的基本属性是指表格的行、列和单元格但并不是每个表格的单元格大小都是统一的&#xff0c;所以需要设计者通过一些属性参数来修改表格的样子&#xff0c;让它们可以更更多样…

yolov5 web端部署进行图片和视频检测

目录 1、思路 2、代码结构 3、代码运行 4、api接口代码 5、web ui界面 6、参考资料 7、代码分享 1、思路 通过搭建flask微型服务器后端&#xff0c;以后通过vue搭建网页前端。flask是第一个第三方库。与其他模块一样&#xff0c;安装时可以直接使用python的pip命令实现…

防火墙-——iptables

目录 安全技术&#xff1a;&#xff08;市场上常见的防御&#xff09; 1.入侵检测机制 2.入侵防御 3.防火墙 4.防水墙 通信的五大要素和四要素 iptables 四个表 数据流程图 安装iptables iptables管理选项: 匹配条件 通用匹配规则 1.查看filter中的 INPUT表 2.清…

性能测试笔记

一、性能测试的概念 性能测试的概念 使用自动化工具&#xff0c;模拟不同的场景&#xff0c;对软件各项性能指标进行测试和评估的过程 性能测试的目的 评估当前系统能力&#xff0c;出现性能bug后&#xff0c;优化性能&#xff1a;预测未来的性能需求是否满足 例如&#xf…

Sketch for mac v98.3(ui设计矢量绘图)

Sketch是一款为用户提供设计和创建数字界面的矢量编辑工具。它主要用于UI/UX设计师、产品经理和开发人员&#xff0c;帮助他们快速设计和原型各种应用程序和网站。 Sketch具有简洁直观的界面&#xff0c;以及丰富的功能集&#xff0c;使得用户可以轻松地创建、编辑和共享精美的…

javaWeb网上购物系统的设计与实现

摘 要 随着计算机网络技术的飞速发展和人们生活节奏的不断加快&#xff0c;电子商务技术已经逐渐融入了人们的日常生活当中&#xff0c;网上商城作为电子商务最普遍的一种形式&#xff0c;已被大众逐渐接受。因此开发一个网上商城系统&#xff0c;适合当今形势&#xff0c;更加…

Unity中Shader的光照模型Lambert

文章目录 前言一、Lambert光照模型1、公式可以使用图形计算器来看出这个点积对于结果的影响 前言 Unity中Shader的光照模型Lambert 一、Lambert光照模型 1、公式 A&#xff1a;可以理解为环境光的颜色 K&#xff1a;反射系数 LC&#xff1a;主要的入射光的颜色 N&#xff1a;…

模拟滤波器的基础知识和设计

信号处理工作中滤波器的应用是非常广泛的&#xff0c;可以分成模拟滤波器和数字滤波器两种&#xff0c;数字滤波器主要包括两种&#xff0c;IIR和FIR&#xff0c;这两种滤波器后面统一说&#xff0c;今天先来说一说模拟滤波器&#xff08;主要是我先用Python实现了Matlab书里面…

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

阻塞、非阻塞、异步、同步

IO | bRPC 一般有三种操作IO的方式&#xff1a; blocking IO: 发起IO操作后阻塞当前线程直到IO结束&#xff0c;标准的同步IO&#xff0c;如默认行为的posix read和write。non-blocking IO: 发起IO操作后不阻塞&#xff0c;用户可阻塞等待多个IO操作同时结束。non-blocking也…

【Java 进阶篇】HTML列表标签详解与示例

HTML&#xff08;Hypertext Markup Language&#xff09;是网页开发中的标准标记语言&#xff0c;用于构建网页内容。在网页中&#xff0c;常常需要展示信息的列表&#xff0c;例如商品列表、文章目录、任务清单等。HTML提供了多种列表标签&#xff0c;用于创建不同类型的列表。…