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

news2024/9/22 13:39:32

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

上一篇我们介绍了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.coloradmin.cn/o/1440968.html

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

相关文章

FATFA文件系统

一.文件系统基本知识 1.文件系统是什么? 文件系统是一种用于组织和存储计算机上的文件和目录的方法。它是操作系统中的一个重要组成部分,负责管理磁盘或其他存储介质上的文件,使其易于访问和使用。文件系统提供了一种结构化的方式来组织文件…

three.js 匀速动画(向量表示速度)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div>1. 匀速动画(向量表示速度)</div…

RibbonOpenFeign源码(待完善)

Ribbon流程图 OpenFeign流程图

Window环境下使用go编译grpc最新教程

网上的grpc教程都或多或少有些老或者有些问题&#xff0c;导致最后执行生成文件时会报很多错。这里给出个人实践出可执行的编译命令与碰到的报错与解决方法。&#xff08;ps:本文代码按照煎鱼的教程编写&#xff1a;4.2 gRPC Client and Server - 跟煎鱼学 Go (gitbook.io)&…

R语言rmarkdown使用

1、安装 install.packages(rmarkdown) library(rmarkdown) install.packages(tinytex) tinytex::install_tinytex() 2、新建R Markdown 3、基本框架 红色框内为YAML&#xff1a;包括标题、作者和日期等 黄色框内为代码块&#xff1a;执行后面的代码&#xff0c;并可以设置展…

Java风暴:打造高效作家信息管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架&#xff0c;它无需大量的配置即可运行起来&#xff0c;而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势&#xff0c;可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…

NGINX upstream、stream、四/七层负载均衡以及案例示例

文章目录 前言1. 四/七层负载均衡1.1 开放式系统互联模型 —— OSI1.2 四/七层负载均衡 2. Nginx七层负载均衡2.1 upstream指令2.2 server指令和负载均衡状态与策略2.2.1 负载均衡状态2.2.2 负载均衡策略 2.3 案例 3. Nginx四层负载均衡的指令3.1 stream3.2 upstream指令3.3 四…

排序算法---归并排序

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

Docker部署前端项目

某次阿里云的自动流水线失败了&#xff0c;代码本地跑起来莫得问题&#xff0c;错误日志提示让我跑一下npm run build &#xff0c;但是俺忽然发现&#xff0c;我跑了&#xff0c;文件打包好了&#xff0c;但是往哪里运行呢&#xff1f;这涉及到要构建一个环境供打包文件部署吧…

Git的基础操作指令

目录 1 前言 2 指令 2.1 git init 2.2 touch xxx 2.3 git status 2.4 git add xxx 2.5 git commit -m xxxx 2.5 git log及git log --prettyoneline --all --graph --abbrev-commit 2.6 rm xxx 2.7 git reset --hard xxx(含小技巧) 2.8 git reflog 2.9 mv xxx yyy 1…

计算机考研数学】张宇1000题和660哪个更难?

1000题和660题都很难&#xff0c;难的不一样 660题是对于基础深入考察的难 660题是非常经典的客观题练习题&#xff0c;题目难度中等&#xff0c;不难但是每一道题都需要认真的思考才能做出来。如果660题能够吃透&#xff0c;并且每一道题的方法都能够灵活掌握的话&#xff0…

Python Paramiko 使用交互方式获取终端输出报错

近期接到一个需求&#xff0c;要批量登录网络设备获取配置。 原计划使用 Paramiko exec即可&#xff0c;但是后来发现&#xff0c;有些设备命令也执行了&#xff0c;但是没有回显。 于是尝试使用 invoke_shell() 方式。 前期调试倒是OK&#xff0c;直到遇见一个输出内容较长的…

python-pandas查漏补缺

1. create labels for Series 2. 3. 4. 用平均数等去填empty的格子 5. 6. 7.

读千脑智能笔记08_人工智能的未来(下)

1. 机器智能存在的风险 1.1. “人工智能”这个名字应用到几乎所有涉及机器学习的领域 1.2. 技术专家对人工智能的态度也从“人工智能可能永远不会实现”快速转变为“人工智能可能在不久的将来毁灭所有人类” 1.3. 每一项新技术都可能会被滥用…

springboo冬奥会科普平台源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理平台应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

【Flink入门修炼】1-1 为什么要学习 Flink?

流处理和批处理是什么&#xff1f; 什么是 Flink&#xff1f; 为什么要学习 Flink&#xff1f; Flink 有什么特点&#xff0c;能做什么&#xff1f; 本文将为你解答以上问题。 一、批处理和流处理 早些年&#xff0c;大数据处理还主要为批处理&#xff0c;一般按天或小时定时处…

Ubuntu 22 部署Zabbix 6.4

一、安装及配置postgresql sudo apt-get update sudo apt-get install postgresql postgresql-client 修改配置文件&#xff0c;配置远程访问&#xff1a;&#xff08;PostgreSQL安装路径下的data&#xff0c;也是安装时data的默认路径&#xff09;data目录下的 pg_hba.conf …

火星文:网络时代下的语言

引言 在互联网时代&#xff0c;网络语言的发展日新月异。火星文作为一种特殊的网络表达方式&#xff0c;近年来逐渐兴起并成为了网络文化的一部分。 火星文生成器 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.com/huoxingwen 火星文的兴起时代 火星…

为什么是0.1uF电容?

旁路电容是电子设计中常用的电容器之一&#xff0c;主要用于过滤电源噪声和稳定电源电压。在实际应用中&#xff0c;0.1uF电容器是最常用的旁路电容值之一&#xff0c;那么为什么常用旁路电容是0.1uF而不是其他值&#xff1f;这个值又是怎么来的呢&#xff1f;本文将深入探讨这…