首页 > 其他分享 >tcp介绍.3

tcp介绍.3

时间:2024-08-14 23:52:42浏览次数:5  
标签:窗口 确认 介绍 发送 拥塞 tcp 接收

1.tcp的成块数据流

我们看到tftp使用了停止等待协议,数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认,本章我们介绍tcp所使用的被称为滑动窗口协议的另一种形式的流量控制方法,该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发一个分组就停下来等等待确认,因此该协议可以加速数据的传输。

我们还将介绍tcp的push标示;该标志在前面的许多例中都出现过,此外,我们还要介绍慢启动,tcp使用该技术在一个链接上建立数据流,最后介绍成块数据流的吞吐量。

正常数据流

通常使用的隔一个报文段确认的策略。

我们在线路上看到的分组顺序依赖于许多无法控制的因素,发送方tcp的实现、接收方tcp的实现、接收进程读取数据(依赖于操作系统的调度)和网络的动态性(和以太网的冲突和退避等)。对这两个tcp而言,没有一种单一的、正确的方法来交换给定数量的数据。

快的发送方和慢的接收方

接收方发送ack(报文段8),但通告其窗口大小为0,这说明接收方已收到所有数据,但这些数据都在接收方的tcp缓冲区,因为应用程序还没有机会读取这些数据。

另一个ack(称为窗口更新)在17.4ms后发送,表明接收方现在可以接收另外的4096个字节的数据。虽然这看起来像一个ack,但由于它并不确认任何新数据,只是用来增加窗口的右边沿,因此被称为窗口更新。

滑动窗口

接收方通告的窗口称为提出的窗口(offeredwindows),它覆盖了第4字节到第9字节的区域,表明接收方已经确认了包括第3字节在内的数据,且通告窗口大小为6,我们知道窗口大小是与确认序号相对应的,发送方计算它的可用窗口,该窗口表明多少数据可以立即被发送,当接收方确认数据后,这个滑动窗口不时地向右移动,窗口两个边沿的相对运动增加或减少了窗口的大小。

1.称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。

2.当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开,这种现象发生在另一端的接收进程读取已经确认的数据并释放了tcp的接收缓存时。

3.当右边沿向左移动时,我们称之为窗口收缩,

1.发送方必须发送一个全窗口大小的数据。

2.来自接收方的一个报文段确认数据并把窗口向右边滑动。这是因为窗口的大小是相对于确认序号的。

3.正如从报文段7到报文段8中变化的那样,窗口的大小可以减小,但是窗口的右边沿却不能够向左移动。

4.接收方在发送一个ack前不必等待窗口被填满,在前面我们看到许多实现每收到两个报文段就会发送一个ack.

push标志

发送方使用该标志通知接收方将所收到的数据全部提交给接收进程

push标志已经过时。

清空发送缓存,则大多数的源于伯克利的实现能够自动设置push标志。

两个最大报文长度,最大可能窗口的50%

慢启动

存在多个路由器和速率较慢的链路时,

该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。

拥塞窗口(congestion window),记为cwnd.

发送方取拥塞窗口与通告窗口中的最小值作为发送上限,拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。

路由器开始丢弃分担,这就通知发送方它的拥塞窗口开的过大。

2.tcp的超时和重传

对任何实现而言,关键之处就在于超时和重传,即怎样决定超时间隔和如何确定重传的频率。

4个定时器

1重传定时器

2坚持定时器

3包活定时器

42msl定时器

拥塞避免算法

拥塞避免算法是一种处理丢失分组的方法

该算法假定由于分组受到损坏引起的丢失是非常少的(远小于1%),因此分组丢失就意味着在源主机和目的主机之间的某些网络上发生了拥塞。

有两个分组丢失的指示:发生拥塞时和接收到的重复确认。

标签:窗口,确认,介绍,发送,拥塞,tcp,接收
From: https://www.cnblogs.com/smoke520/p/18359995

相关文章

  • tcp介绍.2
    2msl等待状态time_wait状态也称为2msl等待状态,每个具体tcp实现必须选择一个报文段最大生存的时间msl(maximumsegmentlifetime).它是任何报文段被丢弃前在网络内的最长时间。msl为2分钟,然而,实现中的常用值是30秒,1分钟,或2分钟。对一个具体实现所给定的msl值,处理的原则是:当tcp执......
  • tcp介绍.1
    1.tcp介绍tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用tcp的应用(通常一个客户和一个服务器)在彼此交换数据之前必须先建立一个tcp链接。在一个tcp链接中,仅有两方进行彼此通信。tcp的服务tcp提供一种面向连接的、可靠的字节流服务。面向连接......
  • tcp介绍.4
    快速重传和快速恢复算法快速重传算法:如果一连串收到3个或3个以上的重复ack,就非常可能是一个报文段丢失了,于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。快速恢复算法:快速重传后执行的不是慢启动算法而是拥塞避免算法icmp的差错tcp能够遇到的最常见的icmp差错就是......
  • 推荐系统三十六式学习笔记:工程篇.效果保证31|推荐系统的测试方法及常用指标介绍
    目录为什么要关注指标推荐系统的测试方法1.业务规则扫描2.离线模拟测试3.在线对比测试4.用户访谈常用指标1.系统有多好?假设你已经有了自己的推荐系统,这个系统已经上线。为什么要关注指标面对推荐系统这样一个有诸多复杂因素联动起作用的系统,要时时刻刻知道它好不......
  • 【网编】——tcp编程
    tcp流程服务器 头文件:#include<sys/types.h>     /*SeeNOTES*/#include<sys/socket.h>#include<errno.h>#include<stdio.h>#include<netinet/in.h>#include<netinet/ip.h>/*supersetofprevious*/#include<arp......
  • 一篇文章带你弄懂Python基础之列表介绍和循环遍历
    大家好,我是Go进阶者,今天给大家分享一些Python基础(列表基础和循环遍历介绍),一起来看看吧~一、列表介绍想一想:字符串可以用来存储一串信息,那么想一想,怎样存储所有同学的名字呢?定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?答:列表。1.列表的格式namesList=[......
  • 7.接口文档,JWT介绍
    【一】接口文档1)公司使用使用world编写MD共享文档第三方平台:如:https://www.showdoc.com.cn/公司自研2)主要内容如下说明变更记录全局错误相关接口简要描述请求URL请求方式参数返回示例返回参数说明备注3)字段生成(coreapi使用)安装pipinstal......
  • OpenGL 之EGL API 介绍
    EGL介绍EGL是OpenGLES和底层Native平台视窗系统之间的接口。OpenGLES本质上是一个图形渲染管线的状态机,而EGL则是用于监控这些状态以及维护Framebuffer和其他渲染Surface的外部层。EGL提供如下机制:与设备的原生窗口系统通信查询绘图表面的可用类型和配置创......
  • 使用TcpDump 和 Wireshark 分析数据库异常
    MySQL:5.7.19OS:rhel6.3jdbc:mysql-connector-java-5.1.45.jarjava:17.0.7问题:MySQL数据库在修改character_set_server和表的对应字段为utf8mb4后,任然无法插入emoji表情1.抓包1、登陆MySQL服务器,确定实际使用的网卡;2、执行tcpdump-s65535-x-nn-......
  • TCP三次握手和四次挥手
    TCP三次握手和四次挥手详解在网络通信中,TCP(传输控制协议)是一个非常重要的协议,用于确保数据在不可靠的网络环境中能够可靠传输。TCP通过三次握手(Three-wayHandshake)建立连接,通过四次挥手(Four-wayTermination)终止连接。一、TCP三次握手TCP的三次握手用于确保客户端和服务器之......