网络基础扫盲--TCP/UDP

news2024/11/24 3:22:51

博客内容:TCP/UDP


文章目录

  • 一、TCP与UDP
  • 二、tcp可靠性如何保证?
    • 1、三次握手
    • 2、TCP报头
    • 3、TCP四次挥手


一、TCP与UDP

tcp与udp都是传输层的协议,用于数据的传输。
对于tcp而言数据的传输会比较可靠,主要依赖于tcp面向链接的,采用“字节流”,同时会对于数据顺序排序,以及数据的流量控制,重发机制等来保障。
udp是无连接的一种协议,数据报的传输就得不到保证,但是不需要进行链接就意味着数据的传输速度方面就比tcp快。通过对比会发现俩者都是进行一个“互补”。适用的场景不同对于tcp要求可靠,有序、传输量大的应用,比如文件传输,云端备份。udp就适合对于实时要求高的,传输速度快,数据量小,可以容忍对于数据的丢失的,比较实用的就是网络游戏,视屏会议等。

二、tcp可靠性如何保证?

1、三次握手

对于tcp的三次握手来提高对于对于数据安全的链接
在这里插入图片描述

  1. 第一次握手:客户端向服务器发送SYN包,表示请求连接
  2. 第二次握手:服务器收到SYN包后,向客户端发送ACK包,表示确认收到请求,并发送自己的SYN包,表示同意连接
  3. 第三次握手:客户端收到服务器的SYN包后,向服务器发送ACK包,表示确认收到同意连接的消息

这样,服务器收到ACK包后,TCP连接就建立成功了。
客服端发起请求给服务器,服务器收到请求并作出响应。进行数据应答时带上自己的请求,这样的恢复恢复方式叫做捎带应答
这样建立的链接就可以进行数据的传输了,在数据传输的过程中对于发送和接受双方都需要对于数据进行处理。但是对于数据的接受都是有一定大小的不然就会出现你这边已经说的天花乱坠、口干舌燥。然后别人就会给你一个反馈一脸懵。为了防止这样的情况发生就会在双方交流前就说好,我能接受的范围的一个缓冲区MMS的最小值。
如何保证对方接受的消息就是当前需要发送给他的,他回复的应答如何是对于那一句的回复。换句话说就是避免俩个人在进行“交流”时,出现牛头不对马嘴的情况。

  • 顺序控制
    这就是对于消息一个处理,对于数据段中的每一个字节都进行一个编号(序列号),这样就行数据发送时只需要进行对数字的一个确认尽可以了。在范围内进行最后一个数字和消息最后一个编号对应就可以。回答时只需要最后一个编号就可以了。如果在一段时间内没有得到消息回复,无法判断是否收到数据。就会认为是数据包丢失或损坏:如果发送方在规定的时间内(计时器超时时间)没有收到接收方的确认消息,就会认为该数据包已经丢失或损坏。这个时候就会一进行数据的重发来避免数据的丢失问题。就是重发机制。
  • 流控制
    流量控制是指TCP协议使用滑动窗口来控制数据发送的速率。TCP连接的两端会通过一个滑动窗口来控制每个数据包的大小和发送速率。发送方根据接收方发送的确认信息动态调节发送窗口的大小,以限制发送数据的速率,避免网络拥堵和丢包。
    实际上,TCP的流量控制使用了两个窗口:拥塞窗口和接收窗口。拥塞窗口用于限制整个网络的拥塞情况,而接收窗口用于限制接收方的接收能力。TCP发送方的拥塞窗口大小由网络拥塞程度决定,而接收方的窗口大小由接收方的接收能力决定。
    当发送方向接收方发送数据时,接收方会返回一个ACK确认信息,确认接收的数据量,并通知发送方自己的接收窗口大小。发送方会根据这个窗口大小来动态调整自己的发送速率,以避免发送方发送过多数据导致网络拥堵和丢包。

2、TCP报头

看完tcp的报头就会理解tcp的可靠性了。
在这里插入图片描述

TCP头部共有20个字节,包含以下字段:

字段名称字节数描述
源端口号2源端口号,标识发送端口
目标端口号2目标端口号,标识接收端口
序列号4本次传输数据的第一个字节在数据流中的序号
确认号4确认号为期望收到的下一个数据包序号,即确认接收方已经收到了序列号到确认号之间的字节
数据偏移4 bits表示TCP头部的长度,单位为4字节,所以该字段的值为TCP头部长度/4,取值范围为0~15
保留6 bits保留字段,保留以后用
控制位6 bits包括URG、ACK、PSH、RST、SYN、FIN六个标志位,用于控制TCP连接的建立、维护和结束
窗口大小2接收窗口大小,表示接收方当前还能接收多少数据
校验和2TCP头部和数据的校验和
紧急指针2表示紧急数据在当前数据流中的位置
选项可变TCP头部的可选项,包括最大段大小、时间戳、SACK等

数据偏移的取值范围是[0,60]字节,对于整个报头是20
字节。所以选项的大小就是:偏移*4-20=选项的大小。

3、TCP四次挥手

TCP四次挥手是指TCP连接的终止过程,

在这里插入图片描述

  1. 主动关闭方发送终止连接请求,即FIN报文段,进入FIN_WAIT_1状态。

  2. 被动关闭方收到FIN报文段后发送确认报文段ACK,进入CLOSE_WAIT状态。

  3. 被动关闭方关闭连接时,发送FIN报文段,进入LAST_ACK状态。

  4. 主动关闭方收到FIN报文段后发送确认报文段ACK,进入TIME_WAIT状态。在等待2倍的最大段生存时间(2MSL)后,进入CLOSED状态。

通过这四个步骤,TCP连接正常地终止。值得注意的是,第三步和第四步可以合并成一步,即被动关闭方发送完FIN报文段后直接关闭连接,但是主动关闭方需要在收到ACK报文段后等待2MSL的时间才能关闭连接。这是为了防止ACK报文段在传输过程中丢失,导致主动关闭方无法正常收到确认信息。

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

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

相关文章

openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期

文章目录 openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期114.1 注意事项114.2 操作步骤 openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期 114.1 注意事项 创建新用户时,需要限制用户的操作期限(有…

Prompt 设计与大语言模型微调,没有比这篇更详细的了吧!

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。 输入编码:ChatGPT将经过预…

如何使用Python和matplotlib绘制机器人运动偏差路径图——实用教程与代码解析

前言 科研论文中需要绘制一个精美的机器人运动路径图(其中包含了机器人的期望运动路径和实际运动路径)。我的期望路径是是一个方形,用Python代码是这样表示的: n_list [n1,n2,n3,n4] e_list [e1,e2,e3,e4] #n_list和e_list的各…

C++笔记之动态数组的申请和手动实现一个简单的vector

C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向…

项目实战:展示第一页数据

1、在FruitDao接口中添加查询第一页数据和查询总记录条数 package com.csdn.fruit.dao; import com.csdn.fruit.pojo.Fruit; import java.util.List; //dao :Data Access Object 数据访问对象 //接口设计 public interface FruitDao {void addFruit(Fruit fruit);vo…

文件复制加密、文件落地加密、文件移动加密如何设置?

文件加密在保护信息安全方面具有重要作用。合格、好用的文件加密软件可以帮助企业保护商业机密、更遵守法律法规、提高企业核心竞争力、防止数据泄密等。 一般的加密都是对文件本身加密,比如加密某个WORD /PPT之类的,很少有能够加密某个文件夹的。今天就…

单链表基本操作的实现,初始化,头插,尾插,判空,获取个数,查找,删除,获取前置和后置位,清空,销毁

目录 一.单链表的设计 二.单链表的实现 三.单链表的总结 一.单链表的设计 1.单链表的结构定义: typedef struct Node{int data;//数据域struct Node* next;//后继指针}Node,*List; 2.单链表的设计示意图: 3.注意,单链表的最后一个节点的next域为NULL; 4.为什么要有一个头…

唯一ID如何生成,介绍一下目前技术领域最常使用的几种方法

纵使十面大山,又如何,无妨… 概述 唯一ID(Unique Identifier)是在计算机科学和信息技术领域中用于标识某个实体或数据的唯一标识符。生成唯一ID的方法可以根据具体需求和应用场景的不同而有所不同。以下是一些目前技术领域中常用…

2023-mac rz sz 安装

之前安装过一次,没问题,这次按照之前教程装了就不管上传下载都会卡住; step1: brew install lrzsz step2:在/usr/local/bin 路径下配置两个sh,之前从网上找到的直接用都不对,下面这个是调试过的正式可用的 iterm2…

【C语言进阶】之动态内存管理

【C语言进阶】之动态内存管理 1.为什么我们需要动态内存管理2.动态内存管理的函数介绍2.1malloc函数和free函数2.1.1malloc函数2.1.2 free函数 2.2calloc函数2.3realloc函数 3.动态内存管理中经常出现的一些问题总结。3.1 越界访问3.2 对空指针进行解引用操作3.3 对同一片空间进…

安全防御——二、ENSP防火墙实验学习

安全防御 一、防火墙接口以及模式配置1、untrust区域2、trust区域3、DMZ区域4、接口对演示 二、防火墙的策略1、定义与原理2、防火墙策略配置2.1 安全策略工作流程2.2 查询和创建会话 3、实验策略配置3.1 trust-to-untrust3.2 trust-to-dmz3.3 untrust-to-dmz 三、防火墙的区域…

归并排序--C语言实现

1. 简述 归并排序的原理是将&#xff0c;两个较大的数组分为大小几乎一致的两个数组。 再将两个数组进行合并成新的有序数组。 合并两个数组的时候需要额外的一个数组的空间。 2. 实现 上图说明过程 代码 #include <stdio.h>void Merge(int *arr, int *tmp, int …

freertos入门(stm32f10c8t6版闪烁灯)

首先到官网下载freertos源码&#xff0c;然后找一个stm32f10c8t6的空模板&#xff0c;这个空模板实现点灯之类的都行。 然后在这个空模板的工程下新建一个FreeRtos文件夹 接着在FreeRtos文件夹下新建三个文件夹&#xff0c;分别是src存放源码 inc 存放头文件&#xff0c;port …

Linux下查看文件夹大小命令

在Vscode上连接服务器&#xff0c;想查看文件夹大小&#xff1b; du -h path

4 个最常见的自动化测试挑战及应对措施

有人说&#xff1a;“杂乱无章的自动化只会带来更快的混乱。”不仅更快&#xff0c;而且是更严重、更大的混乱。如果使用得当&#xff0c;自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用&#xff0c;这是初始最困难的部分。…

动态路由协议OSPF优化提速特性

1.OSPF协议通信过程与部署&#xff1b; 2.OSPF协议在项目上的应用场景&#xff1b; 3.OSPF有哪些优化特性&#xff1f; - OSPF - 开放式最短路径优先 - 一个动态路由协议 - 路由协议 - 理解魏 运行在路由器的一个软件 - 目的&#xff1a;为了帮助路由器和路由器彼…

短期经济波动:均衡国民收入决定理论(二)

短期经济波动:国民收入决定理论(二) 文章目录 短期经济波动:国民收入决定理论(二)[toc]1 IS曲线1.1 IS曲线的代数推导1.1.1 代数法&#xff1a;计划支出等于实际支出1.1.2 代数法&#xff1a;计划投资等于储蓄1.1.3 代数法&#xff1a;非计划存货等于0 1.2 IS曲线的几何推导1.2…

ZZ038 物联网应用与服务赛题第D套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (D卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工具、软件安装文件等,都…

如何理解所谓的【指令执行速度】

公式&#xff1a; 指令执行速度 主频/平均CPI 先不看主频&#xff0c;如下图&#xff0c;假设一秒钟能有4个正弦波&#xff0c;那就说明频率是4。 而计算机很厉害&#xff0c;一秒能有很多个正弦波 把一个正弦波&#xff0c;看做一个时钟周期 则主频表示&#xff0c;计算机…

《视觉SLAM十四讲》-- 概述与预备知识

文章目录 01 概述与预备知识1.1 SLAM 是什么1.1.1 基本概念1.1.2 视觉 SLAM 框架1.1.3 SLAM 问题的数学表述 1.2 实践&#xff1a;编程基基础1.3 课后习题 01 概述与预备知识 1.1 SLAM 是什么 1.1.1 基本概念 &#xff08;1&#xff09;SLAM 是 Simultaneous Localization a…