TCP协议 ---可靠传输的各种机制

TCP和UDP详解 本篇文章主要是从运输层协议概述、UDP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流量控制、TCP的拥塞控制、TCP的连接管理这几个方面进行解析。不对之处还望指出,喜欢的可以点赞关注一下,谢谢。 一、运输层协议概述 1.进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当两台主机使用网络的核心部分的功能进行点对点通信的时候,只有位于边缘部分的主机的协议栈才有运输层,而. 阅读详情

目录

一、可靠

确认应答机制:保证数据可靠、有序的到达对端

超时重传机制

二、效率

2.1 提高自身发送数据量

滑动窗口机制:

滑动窗口的发送缓冲区是环形队列

滑动窗口的大小会变化吗?

滑动窗口的nb之处

滑动窗口丢包问题

2.2  对方的接受能力

流量控制机制

场景:

 0窗口(0号窗口通告):接收方个发送方发送了一个窗口大小为0的数据,称之为0号窗口通告

延时应答机制

2.3 网络转发能力

拥塞控制机制:  通过网络拥塞程度,控制tcp的发送数据量

1、慢开始(启动)

2、拥塞避免

3、拥塞发生时的策略

 捎带应答机制

TCP的保活计时器(心跳数据包)


一、可靠

确认应答机制:保证数据可靠、有序的到达对端

        确认应答机制的背后原理:           本质上是对序号的确认,电脑不知道发的内容是什么,他只认识序号

可靠:

 

有序:

超时重传机制

当发送方发送时候启动超时重传计时器,当即使的时间超过 “超时重传时间” 之后,还没有收到确认应答,则重传该报文

场景:

超时时间:

        能够写成固定时间吗?不能, 要依据网络传输情况进行动态变化 

RTO = 2RTT

RTO:超时重传时间

RTT:报文往返时间(根据每次发送数据的时间以及确认回来的时间可以计算出来)

二、效率

TCP需要考虑传输效率的问题,需要从三个方面考虑

1、自身发送数据量,换句话说,一次性发哦是那个的数据越多,传输的越多

                MSS:决定了一次性传递的数据的上线(这个没办法更改)

                确认应答机制,决定了每一个TCP数据包都说需要确认的(这个可以打破)- 后面说的滑动窗口机制

2、对方的接收能力,换句话说,对方的接收缓冲区的大小

3、网络转发能力,换句话说,从A主机到B主机的网络链路上的转发设备的负载大不大

2.1 提高自身发送数据量

滑动窗口机制:

允许窗口大小的数据(不需要等待上次数据的确认)发送到网络当中进行传输,提高数据吞吐量

优点:      在不考虑网络的情况下, 可以提高发送数据量。 因为发送的越多, 传输的越多

缺点:      需要防备数据丢失的情况, 触发超时重传,一旦触发超时重传,则数据就需要重新发送过去。 也就是意味着发送方在没有接收到确认之前, 是需要将数据缓存起来的 (这个就是TCP的发送缓冲区)

滑动窗口的发送缓冲区是环形队列

滑动窗口的大小会变化吗?

动态变化的

谁在影响滑动窗口的大小呢?

结论:接收方的接收缓冲区的大小在影响滑动窗口的大小

滑动窗口的nb之处

如果收到中间某个分组的确认,即使前面的确认没有收到,也直接按收到处理(确认序号的含义)

也就是说滑动窗口一次性可以滑动很多的距离

滑动窗口丢包问题

1、分组ACK丢失:

 

2、数据丢失

                                这里的快充穿不是因为超时重传,而是收到3次重复的确认应答

2.2  对方的接受能力

通过对方的接受能力,来限制发送方发送的数据量

图解:

流量控制机制

场景:

发送方发送了大量的窗口数据(滑动窗口当中的分组数据),被接受方接收了之后,是先缓存在tcp维护的接收缓冲区当中的,由于缓存了大量的数据,会导致接收缓冲区当中的空间急剧减少,所以说,接收方就通过应答当中的窗口大小,去控制发送方的发送数据量

 0窗口(0号窗口通告):接收方个发送方发送了一个窗口大小为0的数据,称之为0号窗口通告

引申含义: 接收方  告诉   发送方自己接受不了了,发送方你别发送数据了

那么什么时候恢复呢?

1、接收方主动发送窗口更新通知(本质上就是发送了一个窗口大小部位0的tcp数据包)

 

 2、发送方发送窗口探测数据包

延时应答机制

 接收方接收到数据之后,等待一小会儿,再给发送方回复确认

                                本质上是为了让接收方应用层程序调用recv从tcp的接收缓冲区将数据读走

2.3 网络转发能力

1.TCP通过滑动窗口来做流控,但是TCP觉得这还不够,

因为滑动窗口需要依赖于连接的发送端和接收端,其并不知道网络中间发生了什么。TCP的设计者觉得,一个伟大而牛逼的协议仅仅做到流控并不够,因为流控只是网络模型4层以上的事,TCP的还应该更聪明地知道整个网络上的事

2、TCP不是一个自私的协议,当拥塞发生的时候,要做自我牺牲。就像交通阻塞一样,每个车都应该把路让出来,而不要再去抢路了

拥塞控制机制:  通过网络拥塞程度,控制tcp的发送数据量

                                      tcp发送数据量  =  min(发送窗口,拥塞窗口)

拥塞控制机制有三个阶段:

早期tcp拥塞控制机制的图

现在tcp拥塞控制机制的图

和早期的不同也就是网络拥塞的处理办法,因为早期的网络比较差,而现在的网络拥塞很多只是因为网络闪断而已,不需要降低到那么低就可以了

1、慢开始(启动)

2、拥塞避免

3、拥塞发生时的策略

 捎带应答机制

TCP的保活计时器(心跳数据包)

TCP一共有三个计时器: 超时重传计时器,  TIME_WAIT计时器    , 保活计时器

TCP 传输可靠性保障 TCP传输可靠性的保障主要通过以下几个核心机制实现:‌1. 三次握手与连接管理‌:TCP在建立连接时采用三次握手过程,确保通信双方实体真实存在,并同步连接参数。这一过程为后续的可靠数据传输打下了坚实基础。同时,TCP还使用四次挥手来正常终止连接,确保最后的数据能够完整传输‌。‌2. 序列号和确认应答‌:TCP给发送的每个字节都分配一个序列号,接收方则通过发送确认号(ACK)来确认接收到的数据。确认号是接收方期望接收的下一个字节的序列号。 阅读详情

相关推荐

全网最详细的 TCP 可靠传输

前置芝士 在讲解 TCP 可靠传输之前,我们先搞清楚什么是 TCP 可靠传输? TCP 可靠传输就是保证接收方收到的字节流和发送方发出的字节流是完全一样的。 那为什么需要 TCP 的可靠传输呢? 由于网络层是没有可靠传输机制的,尽自己最大的努力进行交付。而传输层使用 TCP 实现可靠传输,TCP 保证可靠传输的机制有如下几种: 1)校验和 2)序列号和确认应答机制 3)重传机制 4)滑动窗口 5)流量控制 6)拥塞控制 校验和 所谓 TCP 的校验和(Checksum)就是说:由发送端计算待发送 TCP 报

帅枫的博客 3249

TCP是如何保证可靠性的

嘻嘻哈哈学技术

嘻嘻哈哈学技术 2149

TCP协议详解(图解TCP协议格式、TCP的各种可靠传输机制)(二)

目录1. TCP协议格式2. TCP的可靠传输机制2.1 确认应答(ACK)机制2.2 超时重传机制2.3 滑动窗口机制2.4 流量控制机制2.5 拥塞控制 1. TCP协议格式 如图: ① 32位序号:该条TCP数据所携带的起始序号。 ② 32位确认序号:期望对方发送数据从哪一个序号开始发送。 ③ 4位首部长度:最大是0xF(15),指的是TCP头部的长度。 首部长度 = 4位首部长度(DEC) * 4 ,单位为Byte。 注:DEC:表示十进制的数字。 ④ 6个标志位:(6个比特位) U

zw的博客 7208

TCP 可靠传输机制详解

TCP协议的特点 TCP报文段 TCP"三次握手" TCP"四次挥手" 客户端和服务器端所经历的状态 TCP可靠传输 TCP流量控制 TCP拥塞控制 面试相关问题 前言 本篇博文主要是为了复习TCP协议而做的总结。其中很多内容都是来自于《计算机网络》,《Linux网络编程》,《TCP/IP详解》等书籍。首先可以从TCP协议思维导图看到本文的大致内容。虽然有很多内容,但"三次握手...

Tyler_Zx的博客 1万+

传输层--TCP协议段头部信息及作用,可靠传输机制的实现

TCP协议段信息及作用 在前面我们讲述了UDP协议段的头部信息,UDP协议段信息 那么今天接着说传输层的另一个协议,TCP协议。 TCP是传输层中比较重要的一种协议,它运用的地方很多,比如在FTP协议、http协议中就是运用了TCP的协议,因为它的可靠性,所以很大程度解决了文件传输丢失,或者错误顺序的情况。 我们先来看TCP头部格式 协议画的顺序是从左到右,头部信息也是从左到右进行的...

GangStudyIT的博客 3075

TCP协议详解:从三次握手到可靠传输机制

TCP协议作为传输层的核心协议,在计算机网络中扮演着关键角色。它通过端口号实现精确的进程寻址,并基于IP网络构建了可靠的传输机制。TCP的核心原理包括三次握手建立连接、四次挥手释放连接、序号确认机制以及滑动窗口流量控制等。这些机制共同确保了数据在网络中的有序、可靠传输,支撑了HTTP、FTP等关键应用协议的运行。理解TCP报文段结构中的关键字段(如SYN、ACK控制位)以及拥塞控制算法,对于网络性能优化和问题排查具有重要意义。在实际工程中,合理配置TCP参数(如TIME_WAIT复用)能够显著提升高并发场景

weixin_33585822的博客 212

TCP协议:可靠传输与连接机制

不同网络的两台主机上的应用进程如果想要进行通信,就需要通过物理层、数据链路层、网络层这三层进行数据包转发,再通过传输层把数据包发送给主机中的指定进程,所以网络模型中的传输层至关重要。传输层中最为常见的两个协议分别是(Transmission Control Protocol)和UDP(User Datagram Protocol),想要掌握这两种协议,则需要阅读协议的标准文件,TCP标准内容如下:通过阅读RFC 793规范可以知道,TCP协议是面向连接的、可以实现端对端通信的可靠的协议。

qq_55948464的博客 1102

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

TCP协议基础与可靠传输机制

TCP协议是传输层核心协议,通过连接建立、确认应答、超时重传等机制实现可靠传输。文章介绍了TCP报文段格式,重点解析了序列号、确认号、首部长度、六大标志位等关键字段的作用。其中,确认应答机制通过字节编号确保数据有序交付,超时重传机制采用动态RTO计算(如Linux以500ms为基准的指数退避策略)应对网络丢包。TCP还通过窗口字段实现流量控制,利用端口号标识应用进程,最终在IP层之上构建出可靠的全双工通信信道。

原来是猿的成长足迹 555

手撕代码系列:Conv2D

在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。

qq_55794606的博客 910

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

Tcp协议保证可靠传输机制

我们知道TCP是传输控制协议,面向连接,保证数据可靠传输的。UDP是用户数据报协议,尽最大能力交付。那么TCP是如何保证数据的可靠传递的呢? TCP保证可靠数据传输的方式: 1. 数据包检验 2. 超时重传机制 3. 确认应答机制 4. 对失序数据包重排序 5. TCP的流量控制与拥塞控制 首先先看下TCP首部格式(TCP首部最少20字节): 一、数据包检验过程: TCP

关山口男子职业技术学院的猿猴 1616

从网格划分到结果解读:一次完整的子弹侵彻LS-DYNA仿真避坑指南

本文详细解析了子弹侵彻LS-DYNA仿真中的关键技术与避坑指南,涵盖网格优化、对称边界条件设置、沙漏控制参数调整及结果可信度验证。通过HyperMesh网格划分和LS-DYNA高级参数配置,帮助工程师提升仿真精度与效率,确保计算结果物理可信。

weixin_29816689的博客 406

TCP协议深度解析:从三次握手到可靠传输的底层机制

在网络通信的世界里,TCP(传输控制协议)作为互联网的核心基石之一,承担着保障数据可靠传输的重任。无论是网页浏览、文件传输还是视频流媒体,TCP都在背后确保着数据有序、不丢失地到达目的地。本文将深入剖析TCP协议的工作原理,从基础概念到底层实现机制,帮助读者全面理解这一重要协议。

一起探索IT的世界 1351

osgEarth实战:5分钟搞定3DTiles模型加载(附完整配置代码)

本文提供了一份osgEarth加载3DTiles模型的实战指南。通过详解核心Earth文件配置与精简的C++集成代码,帮助开发者快速在三维地球场景中集成倾斜摄影与BIM等海量模型,并分享了性能调优与常见问题排查技巧,有效提升开发效率。

jjj34的博客 479

KiCad插件安装太慢?试试华秋版,再手把手教你装这5个实用插件

本文介绍了KiCad华秋发行版如何解决插件安装慢的问题,并详细推荐了5个实用插件及其安装方法。华秋版优化了国内用户的下载速度,预装了常用扩展包,包括BOM生成器、3D模型增强工具等,显著提升PCB设计效率。

weixin_29184075的博客 549

网络基础 -- 保证TCP协议可靠传输和提高性能的机制

保证TCP可靠传输的机制 1. 面向连接 2. 包序管理和确认应答 3. 超时重传机制 4. 滑动窗口机制 5. 快速重传机制 6. 拥塞窗口 7. 保活机制 提高传输性能的机制 1. 延迟应答机制 2. 捎带应答机制

爱上小公举 1972

【时间序列预测算法】——Holt-Winters算法介绍及代码实现

背景 一阶二阶三阶指数平滑方法拟合效果均较好,通过结合数据自然属性,数据自身、趋势变化、季节性,提出了这三个角度的衡量量,可以说,理解起来更自然、更亲切。 公式 一阶: sts_tst​是t时刻对xtx_txt​的估计值,这里只有一个参数α,是数据本身的平滑属性的体现。 二阶: 引入了时间趋势变量btb_tbt​,优化了一下一阶的公式。同时还可以预测t+m时刻的值: 三阶: 又引入了季节性周期描述变量ctc_tct​,优化了一下二阶的公式。同时还可以预测t+m时刻的值: NOTE:ct

BlackValley的博客 1万+

TCP协议实战:分析滑动窗口与重传机制,理解可靠传输

本文深入探讨了TCP协议的可靠传输机制,重点分析了滑动窗口和重传机制两大核心技术。文章首先强调了网络基础知识的重要性,随后系统性地讲解了TCP协议的核心概念,包括OSI模型、TCP/IP协议栈等基础理论。通过技术原理剖析,详细阐述了滑动窗口如何实现流量控制,以及重传机制如何保障数据传输的可靠性。文章提供了Python代码示例,展示了TCP服务器实现的基本流程,包括socket创建、地址绑定、监听处理等关键技术点,帮助读者将理论知识与实际编程相结合。最后,文章还介绍了IP地址转换等实用网络工具方法

未来 95% 的 AI 应用将变得隐形,广泛融入日常生活。 3469

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1509

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TCP协议详解:可靠传输机制与性能优化实践

TCP协议作为传输层核心协议,通过面向连接、可靠传输和流量控制三大机制,为HTTP、FTP等应用层协议提供基础通信保障。其可靠性实现依赖序列号确认、超时重传等关键技术,而拥塞控制算法如CUBIC、BBR则针对不同网络环境优化传输效率。在Linux系统中,通过调整TCP窗口尺寸、启用快速打开等参数可显著提升性能。该协议广泛应用于网页浏览、文件传输等场景,工业领域的Modbus TCP等变种协议也基于其构建。理解TCP工作原理对网络调试和性能优化具有重要价值。

weixin_33713350的博客 369

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TCP 协议的可靠传输机制是怎样实现的?

TCP怎么保证可靠性?最详细的总结_tcp 传输如何保证传输顺序_OpenSani的博客-优快云博客. https://blog.youkuaiyun.com/sansipi/article/details/121459589.(2) 图解 TCP 重传、滑动窗口、流量控制、拥塞控制 - 知乎. https://zhuanlan.zhihu.com/p/135932018.(1) TCP的可靠性传输是如何保证的 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/112317245.

usstmiracle的博客 2155

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【网络原理】TCP协议如何实现可靠传输(确认应答机制)

本文讲解:TCP协议段格式,TCP协议如何进行可靠性传输之确认应答机制。

我的主页 5438

【TCP 协议】报文格式,数据可靠传输的机制(一)

本期为大家带来的是网络编程的 TCP 传输控制协议的概念 ,首先会讲解 TCP 协议的报文格式,在学习报文格式之后,会学习两种 TCP 保证数据可靠传输的机制,确认应答,超时重传,这也是TCP 中较为核心的机制,以及接收缓冲区可以将数据排序,去重的功能。

保护小周ღ的博客 3735

【网络原理】TCP协议如何实现可靠传输(确认应答和超时重传机制)

主要介绍TCP协议报头格式和TCP可靠传输机制的实现原理,详细讲解确认应答和超时重传机制和策略

我的博客 1174

TCP协议核心机制详解:握手、挥手、可靠传输与拥塞控制

本文系统解析了TCP协议的核心机制,包括连接管理、可靠传输、流量控制和拥塞控制等关键环节。TCP作为面向连接的可靠传输层协议,通过三次握手建立连接、四次挥手释放连接,并采用确认应答、重传机制、滑动窗口等技术确保数据传输的可靠性。文章详细介绍了TCP报文格式、控制位功能,以及超时重传、快速重传等重传策略,并深入分析了慢启动、拥塞避免等拥塞控制算法。理解这些机制对网络编程、性能优化和故障排查具有重要意义,是构建稳定高效系统的理论基础。

凉伊的博客 1038
上一篇: TCP的协议格式 --- 20字节固定长度 + 40字节可选数据
下一篇: 【项目】---文档快速搜索工具
Flying  clouds
博客等级 码龄5年 557粉丝 81原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值