当前位置: 首页 > news >正文

TCP协议的重点知识点

在这里插入图片描述

TCP协议的重点知识点

TCP(传输控制协议)是一种面向连接、可靠的数据传输协议,工作在传输层,提供可靠的字节流服务。它是互联网协议栈中最重要、最复杂的协议之一,也是面试中常被问到的知识点。本文将详细介绍TCP协议的各个重要概念。

TCP基本特性

TCP主要具有以下基本特性:

  • 面向连接:在传输数据前必须先建立连接,形成数据通道。

  • 可靠传输:TCP确保数据完整可靠地到达,如果丢包会重新传输。

  • 流量控制:发送方和接收方都有数据缓冲,通过滑动窗口机制控制传输流量,防止拥塞。

  • 拥塞控制:TCP会监控网络拥塞状况,并根据具体算法调整发送速率。

  • 顺序传输:TCP确保按序发送,接收端也按序接收和交付应用数据。

  • 面向字节:TCP以字节流的形式发送数据,没有记录边界。

TCP三次握手

TCP在传输数据前,必须先通过三次握手建立连接。主要步骤如下:

  1. 客户端向服务器端发起连接,发送SYN数据包,syn=1,随机产生一个初始序号seq=x。

  2. 服务器收到SYN包,需要对这个连接请求进行确认,回传ACK包,ack=x+1,同时也发送一个SYN包,syn=1,初始序号seq=y。

  3. 客户端再回复确认,ack=y+1,此时连接建立,可以开始传输数据。

通过三次握手,客户端和服务器都确认了对方发回的ACK,连接可靠地建立,也同步了序号初始值。

TCP四次挥手

当需要关闭连接时,TCP通过四次挥手完成连接断开:

  1. 客户端发送FIN包,标志位fin=1,序列号为x。

  2. 服务器收到FIN后,发回ACK确认,ack=x+1。但是服务器还可以发送数据,此时称为半关闭。

  3. 服务器处理完毕后,发送FIN包,fin=1,序列号y。

  4. 客户端回复ACK,确认服务器端关闭,ack=y+1。

经过四次挥手,可以确保双方都交付完数据,然后同时关闭各自方向的连接。

TCP流量控制

TCP为了防止拥塞,使用了滑动窗口机制进行流量控制,主要原理是:

  1. 接收方会维护一个窗口大小rwnd,告知发送方自己还有多大缓存。

  2. 发送方根据rwnd调整实际发送量swnd,进行流控。

  3. 接收方根据网络和自身情况动态调整rwnd。

这样通过rwnd和swnd的配合就实现了可变化的流量控制。

TCP拥塞控制

TCP主要使用了四种算法处理网络拥塞:

  1. 慢开始:初始化时先使用较小的窗口,然后指数级增大窗口,快速探测网络。

  2. 拥塞避免:设置ssthresh阈值,超过时线性增大窗口,否则指数增大。

  3. 快重传、快恢复:接收方收到乱序包时,立即冲减ACK通知发送方,进入快恢复模式。

  4. 超时重传:连续重传超时还失败,则降低传输速率。

通过上述四种算法协同运作,TCP可以动态检测并调整传输速度,避免拥塞。

TCP与UDP的区别

TCP与UDP都是工作在传输层的协议,两者有明显区别:

  • TCP面向连接,UDP是无连接的。

  • TCP提供可靠传输,会处理确认、重传、流控等;UDP不可靠。

  • TCP面向字节流,没有边界;UDP面向报文包。

  • TCP有拥塞控制,UDP没有。

  • TCP的连接建立有消耗,UDP简单高效。

  • TCP用于对可靠性要求高的场景,如文件传输;UDP用于对实时性要求高的情况。

总结

TCP通过多种机制实现了可靠、高效的数据传输,是互联网协议栈中最重要的协议之一。理解TCP的原理对网络研发问题的分析至关重要。本文概括了TCP的核心知识点,希望可以帮助大家提高TCP协议方面的理解与应用。

相关文章:

TCP协议的重点知识点

TCP协议的重点知识点 TCP(传输控制协议)是一种面向连接、可靠的数据传输协议,工作在传输层,提供可靠的字节流服务。它是互联网协议栈中最重要、最复杂的协议之一,也是面试中常被问到的知识点。本文将详细介绍TCP协议的各个重要概念。 TCP基本特性 TCP主要具有以下基本特性: …...

大数据——一文熟悉HBase

1、HBase是什么 HBase是基于HDFS的数据存储,它建立在HDFS文件系统上面,利用了HDFS的容错能力,内部还有哈希表并利用索引,可以快速对HDFS上的数据进行随时读写功能。 Hadoop在已经有一个HiveMapReduce结构的数据读写功能&#x…...

如何有效进行RLHF的数据标注?

编者按:随着大语言模型在自然语言处理领域的广泛应用,如何从人类反馈进行强化学习(RLHF)已成为一个重要的技术挑战。并且RLHF需要大量高质量的人工数据标注,这是一个非常费力的过程。 本文作者在数据标注领域具有丰富经…...

2023年8月22日OpenAI推出了革命性更新:ChatGPT-3.5 Turbo微调和API更新,为您的业务量身打造AI模型

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

windows配置wsl,Unbuntu启动GPU加速

wsl全称Windows Subsystem for Linux,windows电脑下的linux子系统,对于想用Linux的Windows用户来说wsl是一个不错的选择。 安装wsl 两种方法可以安装wsl,这个默认安装在C盘。 方法一运行命令安装 wsl --install方法二,在windo…...

Postman测WebSocket接口

01、WebSocket 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直…...

【内网穿透】搭建我的世界Java版服务器,公网远程联机

目录 前言 1. 搭建我的世界服务器 1.1 服务器安装java环境 1.2 配置服务端 2. 测试局域网联机 3. 公网远程联机 3.1 安装cpolar内网穿透 3.1.1 windows系统 3.1.2 linux系统(支持一键自动安装脚本) 3.2 创建隧道映射内网端口 3.3 测试公网远程…...

Unable to Locate package python2| Linux Ubuntu系统下python2的安装

Linux Ubuntu系统下python2的安装 FSL的安装脚本是用Python2写的,新版本的Ubuntu (16以后)在默认情况下没有安装Python2。在终端输入 python2,若提示没有相应的命令,则需要先安装Python2,如下指令&#xf…...

从上帝视角俯瞰vue2路由(简单易懂)

文章目录 路由原理(hash)路由安装和使用(vue2)路由跳转路由的传参和取值嵌套路由路由守卫完整代码 路由原理(hash) 单页应用的路由模式有两种 哈希模式(利用hashchange 事件监听 url的hash 的…...

STL-空间配置器的了解

前言 空间配置器,顾名思义就是为了各个容器高效的管理空间(空间的申请与回收)的,在默默的工作的。虽然在常规上使用STL时,可能用不上它,但是站在学习研究的角度,学习它的实现原理对我们有很大的…...

哔哩哔哩 B站 bilibili 视频视频音效调节 清澈人声

视频音效调节方式:直接视频播放内容界面内鼠标右键点击视频音效调节 注意:需要使用的是谷歌浏览器,我的火狐浏览器试了不行,都没选项,火狐的出来的界面是这样的: 目录 具体操作如下: 1、谷歌…...

下一代存储解决方案:湖仓一体

文章首发地址 湖仓一体是将数据湖和数据仓库相结合的一种数据架构,它可以同时满足大数据存储和传统数据仓库的需求。具体来说,湖仓一体可以实现以下几个方面的功能: 数据集成: 湖仓一体可以集成多个数据源,包括结构…...

IntelliJ IDEA 2023.2.1 修复版本日志

我们刚刚发布了 v2023.2 的第一个错误修复更新。 您可以从 IDE 内部、使用工具箱应用程序或通过快照(如果您使用的是 Ubuntu)更新到此版本。您也可以直接从我们的网站下载。 以下是最新版本中包含的最值得注意的改进和修复的列表: 我们已经解…...

算法通关村十三关 | 数组字符串加法专题

1. 数组实现整数加法 题目:LeetCode66,66. 加一 - 力扣(LeetCode) 思路 我们只需要从头到尾依次运算,用常量标记是否进位,需要考虑的特殊情况是digits [9,9,9]的时候进位,我们组要创建长度加1…...

k8s--基本概念理解

必填字段 在要创建的 Kubernetes 对象的文件中.yaml,您需要设置以下字段的值: apiVersion- 您使用哪个版本的 Kubernetes API 创建此对象 kind- 你想创建什么样的对象 metadata- 有助于唯一标识对象的数据,包括name字符串、UID和可选namesp…...

流媒体开发千问【持续更新】

H.264中IDR帧和I帧区别 H.264/AVC编码标准中,IDR帧和I帧都是关键帧,即它们都不依赖于其他帧进行解码。但是,它们之间存在明确的区别: 定义与功能: I帧(Intra-frame):I帧是一个内部编…...

全球各国官方语言大盘点,英语不得不学哇。。。

因国家和地区范围界定不同,官方语言只是个相对概念。具体而言是一个国家通用的正式语言或认定的正式语言。它是为适应管理国家事务的需要,在国家机关、正式文件、法律裁决及国际交往等官方场合中规定一种或几种语言为有效语言的现象。官方语言也是一个国…...

【mq】如何保证消息可靠性

文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下,kafka的结构和rocketmq的机构基本上一样,都需要一个注册…...

疲劳检测-闭眼检测(详细代码教程)

简介 瞌睡经常发生在汽车行驶的过程中,该行为害人害己,如果有一套能识别瞌睡的系统,那么无疑该系统意义重大! 实现步骤 思路:疲劳驾驶的司机大部分都有打瞌睡的情形,所以我们根据驾驶员眼睛闭合的频率和…...

大数据日常运维命令

1、HDFS NameNode /usr/local/fqlhadoop/hadoop/sbin/hadoop-daemon.sh start namenode /usr/local/fqlhadoop/hadoop/sbin/hadoop-daemon.sh stop namenode bin/hdfs haadmin -DFSHAAdmin -getServiceState n1 2、HDFS DataNode /usr/local/fqlhadoop/hadoop/sbin/hadoop-…...

解锁安全高效办公——私有化部署的WorkPlus即时通讯软件

在当今信息时代,高效的沟通与协作对于企业的成功至关重要。然而,随着信息技术的发展,保护敏感信息和数据安全也变得越来越重要。为了满足企业对于安全沟通和高效办公的需求,我们隆重推出私有化部署的WorkPlus即时通讯软件&#xf…...

IDEA使用git

文章目录 给所有文件配置git初始化本地仓库创建.gitignore文件添加远程仓库分支操作 给所有文件配置git 初始化本地仓库 创建.gitignore文件 添加远程仓库 分支操作 新建分支 newbranch 切换分支 checkout 推送分支 push 合并分支 merge...

【跟小嘉学 Rust 编程】十八、模式匹配(Patterns and Matching)

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

keepalived+lvs+nginx高并发集群

keepalivedlvsnginx高并发集群 简介: keepalivedlvsnginx高并发集群,是通过LVS将请求流量均匀分发给nginx集群,而当单机nginx出现状态异常或宕机时,keepalived会主动切换并将不健康nginx下线,维持集群稳定高可用 1.L…...

剑指Offer65.不用加减乘除做加法 C++

1、题目描述 写一个函数&#xff0c;求两个整数之和&#xff0c;要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a 1, b 1 输出: 2 2、VS2019上运行 使用位运算的方法 #include <iostream>class Solution { public:/*** 计算两个整…...

【linux命令讲解大全】004.探索Linux命令行中的chmod和chown工具

文章目录 chmod概要主要用途参数选项返回值例子 chown补充说明语法选项参数实例 从零学 python chmod 用来变更文件或目录的权限 概要 chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --referenceRFILE FILE...主要用途…...

nginx会话保持

ip_hash:通过IP保持会话 作用&#xff1a; nginx通过后端服务器地址将请求定向的转发到服务器上。 将客户端的IP地址通过哈希算法加密成一个数值 如果后端有多个服务器&#xff0c;第一次请求到服务器A&#xff0c; 并在务器登录成功&#xff0c;那么再登录B服务器就要重新…...

SpringBoot使用Druid连接池 + 配置监控页面(自定义版 + starter版)

目录 1. Druid连接池的功能2. 自定义版2.1 pom.xml添加依赖2.2 MyDataSourceConfig实现2.3 application.properties配置编写Controller进行测试2.4 druid监控页面查看 3. starter版3.1 pom.xml添加依赖3.2 自动配置分析3.3 使用application.properties对druid进行配置3.4 druid…...

【业务功能篇77】微服务-OSS对象存储-上传下载图片

3. 图片管理 文件存储的几种方式 单体架构可以直接把图片存储在服务器中 但是在分布式环境下面直接存储在WEB服务器中的方式就不可取了&#xff0c;这时我们需要搭建独立的文件存储服务器。 3.1 开通阿里云服务 针对本系统中的相关的文件&#xff0c;图片&#xff0c;文本等…...

【CSS 常用加载动画效果】

常用加载效果 呼吸灯效果波浪光效果转圈加载 呼吸灯效果 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div id"ti"></div></body><style>b…...

wordpress建企业站教程/培训心得体会100字

这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下删除指定的元素A{a,c,b,d,e}print("原集合&#xff1a;",A)A.remove(a) # 不存在会报错print("删除…...

专门做淘宝代运营的网站/竞价推广招聘

配置PHP.ini 更改配置项&#xff08;必须&#xff09;auto_prepend_file "C:\xampp\htdocs\auto_prepend_file.php" 更改配置项&#xff08;可选&#xff09;allow_url_include On auto_prepend_file.php文件内容 <?php /*** 引入static文件* param {array|str…...

建网站的公司哪里有/百度推广关键词

我正在使用Python绑定到通过以下instructions安装的OpenCV 2.4。我的问题类似于this one&#xff0c;但是我需要Windows计算机解决方案。问题:当我尝试使用时cap cv2.VideoCapture(0)print cap.grab()它工作正常&#xff0c;但是以下代码cap cv2.VideoCapture(filename)print…...

wordpress滑动门/青岛app开发公司

鉴于numpy中矩阵的运算居多&#xff0c;所以以下内容中参与运算的数据元素都默认为矩阵&#xff0c;且以矩阵的逐元素相乘这个操作为例子进行说明。 numpy中的广播(broadcast)说白了就是干一件事——扩展矩阵&#xff0c;而且扩展对象都是纬度比较小的矩阵&#xff0c;将维度较…...

西宁做网站的好公司/seo网站推广实例

十六. 文件查找命令find: 下面给出find命令的主要应用示例&#xff1a; /> ls -l #列出当前目录下所包含的测试文件 -rw-r--r--. 1 root root 48217 Nov 12 00:57 install.log -rw-r--r--. 1 root root 37 Nov 12 00:56 testfile.dat -rw-r--r--.…...

高端品牌网站建设的特点/org域名注册

https://leetcode-cn.com/problems/palindrome-number/ 思路&#xff1a;统计位数&#xff0c;然后按中间分隔为2个int&#xff0c;进行对比即可。注意&#xff1a;奇偶位数 bool isPalindrome(int x) { if (x < 0) { return false; } int temp_x x;…...