网工基础协议——TCP/UDP协议

TCP和UDP的不同点:

TCP(Transmission Control Protocol,传输控制协议);

UDP(User Data Protocol,用户数据报协议);

TCP:传输控制协议,面向连接可靠的协议,只能适用于单播通信,基于建立好的连接,灵活的对接下来的数据传输控制。

UDP:用户数据包协议,面向无连接不可靠的协议。保证数据正常传输,UDP无法进行控制,则需要基于上层协议进行控制。

区别:

TCP——无法很好满足及时性业务(文件类传输业务好满足,可靠);

UDP——可以很好满足及时性业务(对时间要求高的业务)。

UDP:上层数据过大,UDP无法分片,交于网络层进行分片。

TCP:自带分片功能,感知上层数据大小做分片,网络层不做分片。

传输层:实现“端到端”的服务,应用到应用;基于应用级别的互访就是端口到端口的互访。

端口范围:0~65535;TCP/UDP;端口占用/释放

范围0~1023,知名端口,提前保留出来的端口;

范围>=1024,随机高端口,随机产生;

TCP协议:telnet服务[23];HTTP服务[80];HTTPS[443];SSH[22];FTP服务[20/21]

UDP协议:DNS服务[53];DHCP协议[67/68]

协议字段protocol:6,代表TCP协议;17代表UDP协议;

五元组——适用于高级ACL(源端口、目的端口、源IP、目的IP、协议号)

超时重传机制:RTTS,加权的平均往返时间(数据全丢)

TCP流量控制

TCP协议字段注释:

SYN:同步SYN,在连接建立时用来同步序号(当SYN=1,ACK=0时表示这是一个连接请求报文段,当对方同意建立连接时恢复一个SYN=1,ACK=1的报文段)。

seq-Sequence Number:表示这个TCP包的序列号(TCP协议拼凑接收到的收据包时,根据seq来确定顺序并且能够确定是否有数据包丢失)。

ack-acknowledgment Number:表示这个包的确认号。(首先确认已收到对方的多少数据,其次告诉对方接下来的包的seq要从ack确定的数值继续接力+1)。

FIN:终止FIN,用来释放连接。(当FIN=1时,表示此报文段的发送方的数据已发送完毕,并要求断开此连接)

窗口的功能:减少多次确认;缓存机制(备份);重传(存在丢包,在哪里丢,从哪里传)

以太网≤1500B;窗口的大小=一次性可发送的包个数。

TCP的端口号(区分应用程序的流量):FTP-21/20;HTTP-80;telnet-23;SMTP-25;HTTPS-443

注释:

1、源/目的端口:源/目的主机的应用程序端口号;

2、序号、确认序号:TCP可靠传输的关键部分。序号是本报文段发送数据组的第一个字节的序号(在TCP传输流中,每一个字节一个序号。如:e.g的序号为300,数据部分为100字节,则下一个报文段的序号为400),所以序号保证了TCP传输的有序性。确认序号,即Ack,指明下一个期待收到的字节序号,表明该序号之前所有数据已全部正确收到(确认序号只有当Ack=1是有效)。

3、数据偏移/首部长度:由于首部可能含有可选项内容,因此TCP头部的长度是不确定的,报头不包含任何可选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转换为十进制为15,15*32/8=60,故报头最大长度为60字节。首部长度也叫数据偏移(首部长度实际指示了数据区在报文段中的起始偏移值)。

4、保留:为将来定义新的用途保留,为0.

5、控制位:

        1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

        2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

        3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

        4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

        5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

        6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

UDP——直播、会议、大流量、游戏等应用数据使用的传输协议。

UDP传输过程:不提供重传机制,占用资源少,处理效率高。

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

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

相关文章

Windows版MySQL5.7解压直用(免安装-绿色-项目打包直接使用)

windows下mysql分类 MySQL分为 安装版和解压版 安装版: 安装方便,下一步------下一步就OK了,但重装系统更换环境又要重新来一遍,会特别麻烦解压版(推荐): 这种方式(项目打包特别方便&#xf…

每日两题2

不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m1, vector<int>(n1,0));//创建dp表dp[0][1] 1;//初始化//填表for(int i 1; i < m; i){for(int j 1; j < n; j){dp[i][j] dp[i-1][j] dp[i][j-1];}}ret…

第十五届蓝桥杯题解-好数

题目大意&#xff1a;一个数的低位为奇数&#xff0c;次低位为偶数&#xff0c;以此类推的数成为好数&#xff0c;例如&#xff1a;1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9 给定一个n&#xff0c;求1-n所有好数的个数&#xff0c;n<1e7 思路&#xff1a;一…

智慧煤矿软硬一体化解决方案 计算机视觉助力煤场的智能化作业建设与升级

一、背景介绍 随着科技的不断进步&#xff0c;AI视频分析已经广泛应用于各个领域&#xff0c;包括煤矿行业。智慧煤矿方案通过引入AI视频分析系统&#xff0c;实现对煤矿生产过程的实时监控和管理&#xff0c;从而提高智慧矿山的安全性和生产效率。为了解决井下作业距离地面远…

6-pytorch - 网络的保存和提取

前言 我们训练好的网络&#xff0c;怎么保存和提取呢&#xff1f; 总不可以一直不关闭电脑吧&#xff0c;训练到一半&#xff0c;想结束到明天再来训练&#xff0c;这就需要进行网络的保存和提取了。 本文以前面博客3-pytorch搭建一个简单的前馈全连接层网络&#xff08;回归问…

开通订阅plus

提示&#xff1a; 您的信用卡被拒绝了&#xff0c;请尝试用借记卡支付。您的金融卡已被拒绝。您拒绝了&#xff0c;请尝试用签账卡支付。我们未能验证您的支付方式&#xff0c;请选择另一支付方式并重试。 我都崩溃了&#xff0c;一次又一次的不行&#xff0c;换了好多方式。…

Java switch使用

Java switch使用 涉及关键字&#xff1a; switch&#xff1a; 表达式 变量类型可以是&#xff1a; byte、short、int 或者 char。从 Java SE 7 开始&#xff0c;switch 支持字符串 String 类型&#xff0c; case&#xff1a; 分支语句&#xff0c;需要指定当前分支的常量或者字…

【图文教程】在PyCharm中导入Conda环境

文章目录 &#xff08;1&#xff09;在Anaconda Prompt中新建一个conda虚拟环境&#xff08;2&#xff09;使用PyCharm打开需要搭建环境的项目&#xff08;3&#xff09;配置环境 &#xff08;1&#xff09;在Anaconda Prompt中新建一个conda虚拟环境 conda create - myenv py…

Day99:云上攻防-云原生篇K8s安全实战场景攻击Pod污点Taint横向移动容器逃逸

目录 云原生-K8s安全-横向移动-污点Taint 云原生-K8s安全-Kubernetes实战场景 知识点&#xff1a; 1、云原生-K8s安全-横向移动-污点Taint 2、云原生-K8s安全-Kubernetes实战场景 云原生-K8s安全-横向移动-污点Taint 如何判断实战中能否利用污点Taint&#xff1f; 设置污点…

STM32学习和实践笔记(14):按键控制实验

消除抖动有软件和硬件两种方法 软件方法就是在首次检测到低电平时加延时&#xff0c;通常延时5-10ms&#xff0c;让抖动先过去&#xff0c;然后再来检测是否仍为低电平&#xff0c;如果仍然是&#xff0c;说明确实按下。 硬件方法就是加RC滤波电路&#xff0c;硬件方法会增加…

✌粤嵌—2024/4/3—合并K个升序链表✌

代码实现&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…

DNS服务器配置与管理(3)——综合案例

DNS服务器配置与管理 前言 在之前&#xff0c;曾详细介绍了DNS服务器原理和使用BIND部署DNS服务器&#xff0c;本文主要以一个案例为驱动&#xff0c;在网络中部署主DNS服务器、辅助DNS服务器以及子域委派的配置。 案例需求 某公司申请了域名example.com&#xff0c;公司服…

第七周学习笔记DAY.1-封装

学完本次课程后&#xff0c;你能够&#xff1a; 理解封装的作用 会使用封装 会使用Java中的包组织类 掌握访问修饰符&#xff0c;理解访问权限 没有封装的话属性访问随意&#xff0c;赋值也可能不合理&#xff0c;为了解决这些代码设计缺陷&#xff0c;可以使用封装。 面向…

vue快速入门(二十八)页面渲染完成后让输入框自动获取焦点

注释很详细&#xff0c;直接上代码 上一篇 新增内容 使用挂载完成的钩子函数用focus使输入框获取焦点 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"width…

leetcode:739.每日温度/496.下一个更大元素

单调栈的应用&#xff1a; 求解当前元素右边比该元素大的第一个元素&#xff08;左右、大小都可以&#xff09;。 单调栈的构成&#xff1a; 单调栈里存储数组的下标&#xff1b; 单调栈里的元素递增&#xff0c;求解当前元素右边比该元素大的第一个元素&#xff1b;元素递…

(十一)C++自制植物大战僵尸游戏客户端更新实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/cFP3z 更新检查 游戏启动后会下载服务器中的版本号然后与本地版本号进行对比&#xff0c;如果本地版本号小于服务器版本号就会弹出更新提示。让用户选择是否更新客户端。 在弹出的更新对话框中有显示最新版本更新的内容…

2024五一杯数学建模A题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

光学雨量计雨量传感器的工作原理与实时数据采集

光学雨量计雨量传感器的工作原理与实时数据采集 河北稳控科技光学雨量计是一种常用的雨量传感器&#xff0c;其工作原理基于光学原理和实时数据采集技术。它的主要作用是测量雨水的大小和强度&#xff0c;为气象、农业、水文等领域提供重要的数据支持。 光学雨量计的工作原理是…

单片机之ESP8266模块

目录 ESP8266简介 前言 ESP8266的工作模式 ESP8266引脚说明 ESP8266测试 步骤 单片机与esp8266交互 前言 收到数据的格式 AP模式 服务器模式 外部执行命令 代码内执行命令 代码部分 客户端模式 外部执行命令 内部执行命令 代码部分 STA模式 服务器模式 外…

10个常用的损失函数及Python代码实现

本文深入理解并详细介绍了10个常用的损失函数及Python代码实现。 什么是损失函数&#xff1f; 损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误&#xff0c;损失函数值越低则预测越接近真实值…