跟着小德学C++之TCP基础

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。那么就由我来带领大家拨开迷雾,深入探究我们世界的根本。

上一篇我们介绍了AZ端authserver启动监听,本期我们先来讲讲TCP的内容,为以后打下基础。

什么是TCP

TCP,全称为传输控制协议(Transmission Control Protocol),是一种在网络中用于数据传输的通信协议。以下是TCP的一些关键特性:

  1. 面向连接:在进行数据传输之前,TCP需要建立一个连接,确保数据能够从源头准确到达目的地。
  2. 可靠性:TCP通过各种机制(如确认应答、重传等)来保证数据的可靠传输,即数据不会在传输过程中丢失或出错。
  3. 字节流服务:TCP处理数据时,将数据视为一连串的字节流,而不是独立的数据包。
  4. 流量控制:TCP有能力调节数据传输的速度,以防止快速的发送者压倒慢速的接收者。
  5. 与IP协议共同使用:TCP通常与互联网协议(IP)一起工作,共同构成了TCP/IP协议族,这是互联网通信的基础。
  6. 头部结构:TCP数据包有一个特定的头部结构,包含了源端口、目的端口、序列号、确认号等信息,这些信息用于确保数据的正确传输和接收。
  7. 套接字端点:应用程序通过套接字(Socket)接口与TCP进行交互,套接字定义了通信的端点,包括IP地址和端口号。
  8. 适应多种网络:TCP设计上可以在不同的网络类型上运行,无论是硬线连接还是分组交换网络。
  9. 分层协议体系:TCP位于OSI模型的传输层,为上层的应用层提供服务,同时依赖下层的网络层来进行实际的数据包传输。
  10. 滑动窗口机制:TCP使用滑动窗口机制来进行流量控制,确保数据的有效传输,并允许接收方根据自身的缓冲区大小调整接收数据的速度。

综上所述,TCP是一种复杂的协议,它提供了许多机制来确保数据在不可靠的网络环境中能够可靠地传输。它是互联网通信的基础之一,对于支持全球数据通信至关重要。

为什么需要TCP

在计算机最开始发展的时期,网络传输速率低,而且不稳定,那如何在两台计算机之间进行可靠的数据传输呢?所以就需要有双方的认证机制、重传机制和流量控制机制等。最经典的例子就是TCP连接开始的三次握手协议。

三次握手协议

假如战场上两个将军A和B需要建立可靠的通信,A将军先命令通讯员携带者书信(SYN标记)到B将军处;B将军看到书信后,写了封回信(ACK标记),并命令通讯员返回;A将军看到B将军回信后,又写了一份回信(SYN标记)。至此,A将军和B将军就建立了可靠的连接。

思考

上述连接真的是可靠的吗?其实还是有风险,风险点在哪里呢?就在最后一次握手。最后一次A发出信息后,不再接收B的反馈,所以实际A并不知道B收没收到消息,所以还是有风险。那怎么办呢?别着急,TCP还有重传机制,当一个消息发出去后没回复,TCP会重新发送消息。这两个机制共同确保只要三次握手执行完毕,就可以算作是建立了可靠的连接。

攻击点——Synflooding攻击

这种攻击手段一点也不新鲜,是一种最古老的攻击手段,用通俗的话讲,就是拒绝服务攻击(DoS),该攻击利用TCP/IP协议天生的特点,通过大量的虚假IP地址建立不完整连接,使得服务器超载,陷入瘫痪状态。这种攻击的特点是简单,没有任何技术含量。

面对这种攻击,目前也有很多技术手段反制,比如Syn Cache、Syn Cookie、SYN Proxy防火墙等技术,都可以防御此攻击。

好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

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

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

相关文章

红队打靶练习:GLASGOW SMILE: 1.1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 /how_to.txt /joomla CMS利用 1、爆破后台 2、登录 3、反弹shell 提权 系统信息收集 rob用户登录 abner用户 penguin用户 get root flag 信息收集…

Gitlab和Jenkins集成 实现CI (一)

版本声明 部署时通过docker拉取的最新版本 gitlab: 16.8 jenkins: 2.426.3 安装环境 可参考这篇文章 停止防火墙 由于在内网,这里防火墙彻底关掉,如果再外网或者云上的悠着点 systemctl stop firewalled systemctl disable firewalledsystemctl sto…

K8S之运用亲和性设置Pod的调度约束

亲和性 Node节点亲和性硬亲和实践软亲和性实践 Pod节点亲和性和反亲和性pod亲和性硬亲和实践 pod反亲和性 Pod 的yaml文件里 spec 字段中包含一个 affinity 字段,使用一组亲和性调度规则,指定pod的调度约束。 kubectl explain pods.spec.affinity 配置…

【代码】Processing笔触手写板笔刷代码合集

代码来源于openprocessing,考虑到国内不是很好访问,我把我找到的比较好的搬运过来! 合集 参考:https://openprocessing.org/sketch/793375 https://github.com/SourceOf0-HTML/processing-p5.js/tree/master 这个可以体验6种笔触…

ubuntu22.04安装部署03: 设置root密码

一、前言 ubuntu22.04 安装完成以后,默认root用户是没有设置密码的,需要手动设置。具体的设置过程如下文内容所示: 相关文件: 《ubuntu22.04装部署01:禁用内核更新》 《ubuntu22.04装部署02:禁用显卡更…

Unity类银河恶魔城学习记录4-4 4-5 P57-58 On Hit Impactp- Attack‘direction fix源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic;…

排序算法---快速排序

原创不易,转载请注明出处。欢迎点赞收藏~ 快速排序是一种常用的排序算法,采用分治的策略来进行排序。它的基本思想是选取一个元素作为基准(通常是数组中的第一个元素),然后将数组分割成两部分,其中一部分的…

苹果mac电脑如何优化系统?保持不卡顿呢

再强悍的性能和优秀的操作系统,但长时间使用后,有时也会出现卡顿的情况。为了让你的苹果电脑保持高效运行,我们将深入探讨导致电脑卡顿的原因,并提供苹果电脑如何优化系统的解决方案,帮助你优化系统。 过多的启动项 …

排序算法---归并排序

原创不易,转载请注明出处。欢迎点赞收藏~ 归并排序是一种常见的排序算法,它采用了分治的思想。它将一个待排序的数组递归地分成两个子数组,分别对两个子数组进行排序,然后将排好序的子数组合并成一个有序数组。 具体的归并排序过…

Spring第二天

一、第三方资源配置管理 说明:以管理DataSource连接池对象为例讲解第三方资源配置管理 1 管理DataSource连接池对象 问题导入 配置数据库连接参数时,注入驱动类名是用driverClassName还是driver? 1.1 管理Druid连接池【重点】 数据库准备…

【集合系列】TreeMap 集合

TreeMap 集合 1. 概述2. 方法3. 遍历方式4. 排序方式5. 代码示例16. 代码示例27. 代码示例38. 注意事项 其他集合类 父类 Map 集合类的遍历方式 TreeSet 集合 具体信息请查看 API 帮助文档 1. 概述 TreeMap 是 Java 中的一个集合类,它实现了 SortedMap 接口。它是…

深入理解Netty及核心组件使用—上

目录 Netty的优势 为什么Netty使用NIO而不是AIO? Netty基本组件 Bootstrap、EventLoop(Group) 、Channel 事件和 ChannelHandler、ChannelPipeline ChannelFuture Netty入门程序 服务端代码 客户端代码 运行结果 Netty的优势 1. API 使用简单&#xff0c…

docker部署showdoc

目录 安装 1.拉取镜像 2.创建容器 使用 1.选择语言 2.默认账户/密码:showdoc/123456​编辑 3.登陆 4.首页 安装 1.拉取镜像 docker pull star7th/showdoc 2.创建容器 mkdir -p /opt/showdoc/html docker run -d --name showdoc --userroot --privilegedtrue -p 1005…

RocketMQ事务消息

事务消息 应用场景: ​ 事务消息是RocketMQ非常有特色的一个高级功能。他的基础诉求是通过RocketMQ的事务机制,来保证上下游的数据一致性。 ​ 以电商为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购…

黄金交易策略:手工同向单减保留仓

虽然保留仓的仓位不大,扛个一年半载不是问题,但闲着也可以手工处理掉(10000点以内的不要处理)。挑一个最大的单,同向相同的手数,并把两单的止盈设置中位数(也没有这么严格,差不多就好…

[嵌入式AI从0开始到入土]5_炼丹炉的搭建(基于wsl2_Ubuntu22.04)

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

深度学习在知识图谱问答中的革新与挑战

目录 前言1 背景知识2 基于深度学习改进问句解析模型2.1 谓词匹配2.2 问句解析2.3 逐步生成查询图 3 基于深度学习的端到端模型3.1 端到端框架3.2 简单嵌入技术 4 优势4.1 深入的问题表示4.2 实体关系表示深挖4.3 候选答案排序效果好 5 挑战5.1 依赖大量训练语料5.2 推理类问句…

app逆向-android-studio安装使用教程

Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 android-studio下载地址:https://developer.android.com/studio/archive androi…

Backtrader 文档学习- Plotting

Backtrader 文档学习- Plotting 虽然回测是一个基于数学计算的自动化过程,还是希望实际通过可视化验证。无论是使用现有算法回测,还是观察数据驱动的指标(内置或自定义)。 凡事都要有人完成,绘制数据加载、指标、操作…

图数据库 之 Neo4j - Browser 介绍(3)

Neo4j Browser 介绍 Neo4j Browser 中有 3 个模块,侧边栏,Cypher 编辑器与结果栏,在进入 Neo4j Browser 时结果栏会展示欢迎界面。 Cypher 编辑器 Cypher 是一种图形查询语言,用于查询和操作图形数据库。它是 Neo4j 图形数据库的…