有线场景下观察TCP滑动窗口大小的变化

从抓包到实战:Wireshark图解HTTP三次握手+TCP流量控制(含实验文件) 本文通过Wireshark工具详细图解了HTTP三次握手与TCP流量控制的全过程,包含实验环境配置、握手流程解析、流量控制机制剖析及实战技巧。文章结合计算机网络核心概念,提供实验文件和高级过滤方法,帮助读者直观理解TCP协议运作机制,适合网络学习者和认证考试备考者参考。 阅读详情

原链接:http://blog.chinaunix.net/u3/105477/showart_2092522.html

 

 

 

 

 

拥塞控制是网络层协议必备的一个功能,TCP采用拥塞窗口机制避免接收方被数据淹没! 同时为了更高效的传送数据,网络协议的设计者们引入了非常实用的加性增、乘性减的机制,取得了很好的效果!

   以下,我们将演示两个节点间TCP连接的拥塞窗口机制,方法上比较简单,演示结果也相当的明显! 应该把焦点集中在具体应用中该机制的运行机理,以及如何在具体应用和科研的其他类似场合使用这么一种巧妙的机制!
 
以下列出了运行时的所有命令:
(其中3和4步骤需要自行修改,我已在相应位置给出了提示,做简单替换即可!)
1. TCL脚本: tcpsim.tcl
2. 运行的命令格式:
   $ns tcpsim.tcl  bandwidth delay  window  simulation_time
   如: ns tcpsim.tcl 1Mb   100ms  64  5
3. 使用 TCP/RFC793edu   协议获得文件 TCP_RFC793edu.tr
4. 使用 TCP/Reno        协议获得文件 TCP_Reno.tr
5. 绘图比较的命令: xgraph TCP_RFC793edu.tr TCP_Reno.tr -geometry 800x400

#TCP滑动窗口及慢启动算法的模拟
#场景:
#  两个节点: n0, n1,
#   在这两个节点间创建一条TCP连接,
#   通过命令行传参数的方式对操作窗口大小进行设置;

# 运行的命令格式:
#   $ns tcpsim.tcl  bandwidth delay  window  simulation_time
#   如: ns tcpsim.tcl 1Mb 100ms  64  5
#
#处理命令行部分:
if { $argc==4} {
   set bandwidth [lindex $argv 0]
   set delay [lindex $argv 1]
   set window [lindex $argv 2]
   set time [lindex $argv 3]
   } else {
          puts "       bandwidth   "
    puts "    n0-----------n1"
    puts " Usage: $argv0 bandwidth delay window simulation_time"
    exit 1
    }
 
set ns [new Simulator]
set nf [open tcpsimnam.nam w]
$ns namtrace-all $nf
set ftr [open tcpsim_slidewin.tr w]
$ns trace-all $ftr
 
proc finish {} {
    global ns nf
 $ns flush-trace
 close $nf
 
 exec nam tcpsimnam.nam &
 exit 0
}
 
 #以下部分的代码, 很明了, 如有问题,请查看前面的博客!
set n0 [$ns node]
set n1 [$ns node]
 
$ns duplex-link $n0 $n1 $bandwidth $delay DropTail
$ns duplex-link-op $n0 $n1 orient left-right
 
#3. 使用 TCP/RFC793edu   协议获得文件 TCP_RFC793edu.tr
#4. 使用 TCP/Reno        协议获得文件 TCP_Reno.tr
set tcp [$ns create-connection TCP/RFC793edu $n0 TCPSink $n1 1]
$tcp set window_ $window
$tcp set ssthresh_ 60
$tcp set packetSize_ 500

set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP


#用于统计和绘图, 每隔0.1s后采样窗口大小,并写入文件 f0 中
#3. 使用 TCP/RFC793edu   协议获得文件 TCP_RFC793edu.tr
#4. 使用 TCP/Reno        协议获得文件 TCP_Reno.tr
set f0 [open TCP_RFC793edu.tr w]
proc Record {} {
    global f0 tcp ns
 set intval 0.1
 set now [$ns now]
 set cwnd [$tcp set cwnd_]
 puts $f0 "$now $cwnd"
 $ns at [expr $now+$intval] "Record"
 }
 
$ns at 0.1 "Record"
$ns at 0.5 "$ftp start"
$ns at $time "finish"
$ns run

 

 

 

注意: 其中,慢启动曲线,指数增长到的最大值是我们设定的window值, 而不是理论上应该有的慢启动门限值ssthresh的值, 为什么?

别再死记硬背了!用Wireshark抓包实战,帮你彻底搞懂TCP三次握手和四次挥手 本文通过Wireshark抓包实战,详细解析TCP三次握手和四次挥手的过程,帮助读者从数据流中直观理解TCP协议的核心机制。文章涵盖实验环境搭建、关键字段解析、数据传输观察及异常场景分析,是计算机网络学习和期末考试的实用指南。 阅读详情

相关推荐

27考研408计算机网络强化复习:体系搭建与真题实战指南

网络协议是计算机通信的基石,而TCP/IP体系则是理解现代互联网运转的核心框架。从物理层的比特传输到应用层的HTTP交互,每一层协议都承担着明确的职责,并通过封装与解封装实现端到端的数据流动。掌握协议原理,不仅需要记忆概念,更要理解其设计动机与工作机制,例如IP地址与MAC地址的映射关系、TCP拥塞控制中慢开始与拥塞避免的窗口变化,这些知识点在408计算机统考中反复出现,也是工程实践中排查网络问题的理论基础。无论是校园网故障定位,还是企业级网络规划,子网划分、路由协议与传输层机制都发挥着关键作用。对于备考2

weixin_31528001的博客 347

tcpdump常用命令

ref:Home | TCPDUMP & LIBPCAPhttps://www.cnblogs.com/onlyforcloud/p/4396126.html

wwwlyj123321的博客 890

2018迅雷校园招聘客户端笔试A卷复盘:C++/多线程/网络考点解析

C++作为客户端开发的基石,其内存管理和多线程同步机制是校招笔试的高频考核点。本文以迅雷2018校园招聘客户端在线笔试A卷为例,系统复盘了C++语言基础、操作系统进程线程、TCP/IP协议及数据结构等核心考点。文章不仅解析了智能指针、虚函数、死锁、epoll等关键知识点,还结合下载器任务队列、断点续传等真实业务场景,给出实战解题思路与避坑指南。无论你是备战校招还是查漏补缺,这份复盘都能帮助你快速建立客户端笔试的知识框架。

400

TCP 滑动窗口的简介

TCP 滑动窗口的简介 POSTED BY ADMIN ON AUG 1, 2012 IN FLOWS34ARTICLES | 0 COMMENTS TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性。同时滑动窗口机制还体现了TCP面向字节流的设计思路。TCP 段中窗口的相关字段。 TCP的Window是一个16bit位字段,它代表的是窗口的字节容量,...

weixin_30815427的博客 631

【信息科学与工程学】【通信工程】第十八篇 企业网、园区网、数据中心、广域网各类业务网络02

模型类别基本假设网络表示耦合函数渗透方程临界条件物理意义一对一依赖​每个交通节点与一个通信节点相互依赖双层网络:交通层G_T=(V_T,E_T),通信层G_C=(V_C,E_C),层间一一对应边E_I依赖函数:RT​=fT​(RC​,p),RC​=fC​(RT​,p)自洽方程: RT​=p[1−GT​0(1−RT​)][1−GC​0(1−RC​)] RC​=p[1−GC​0(1−RC​)][1−GT​0(1−RT​)]pc​=⟨kT2​⟩⟨kC2​⟩​1​ ⟨k²⟩=⟨k(k-1)⟩对称耦

weixin_49199313的博客 1142

【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营01

这是运营的物理和逻辑对象。C4.11xx 传输资源:光纤、微波、卫星链路;频谱资源(Sub-6GHz, 毫米波)。C4.12xx 节点资源:核心路由器、交换机、基站(gNB)、数据中心服务器。C4.13xx 虚拟化资源:由NFV生成的虚拟网络功能(VNF)、容器、虚拟机和网络切片实例。这是实现智能、灵活运营的核心技术集。C4.21xx 软件定义与虚拟化:软件定义网络 (SDN):控制平面与数据平面分离,实现集中、可编程的网络控制。网络功能虚拟化 (NFV):将传统专用硬件设备的功能以软件形式运行在通用硬件上

weixin_49199313的博客 1450

计算机网络滑动窗口实验操作,计算机网络之 基础知识点 滑动窗口下产生的粘包问题及其解决方案...

1 tcp有粘包及udp无粘包TCP 是面向连接的,面向流的可靠协议;发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制面向流的通信是无消息保护边界的。UDP(用户数据报协议)是无连接的,面向消息的,提供高效率服务。不会使用块的合并优化算法,,...

weixin_28979339的博客 216

基于灰度信息的图像配准方法

图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

weixin_42068054的博客 3777

tcp滑动窗口以拥塞窗口和各种缓冲的总结

tcp总结

沧海一声笑的专栏 8021

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

内部威胁论文阅读笔记(CMU-CERT专场)

在网上看了很多介绍该数据集的博客,一直有个疑问,这个数据集的标注在哪,本着先入为主的想法结合现有的资料对这个数据集的结构做了一下猜测(可能还是不严谨和正确)1.标注在哪2.什么是密集针模型3.场景文章连接内部人员由于可以绕过安全检测发起攻击,通常最有害的攻击被认为是内部人员发起。通过分析用户行为来检测内部威胁,主要分析一些类时间和活动进行特征选择。选择特征向量用于训练。采用cmu-certr4.2用于训练。提出的算法与。

Jerry的博客 2803

无线场景下观察TCP滑动窗口大小的变化

原链接:http://blog.chinaunix.net/u3/105477/showart_2092083.html    1. 无线网络和有线网络中TCP拥塞控制(滑动窗口)的演示;   2. 有线环境中TCP慢启动和快速恢复机制的具体演示;   3. NS2中已实现的各种TCP版本, 将具体进行测试;      将参考柯志亨老师的资料,具体给出详尽的TCL和注释,以及运

flyuniverse_shell的专栏 2621

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1584

TCP 为什么有时故意跑不快?拥塞控制与滑动窗口一次讲清

摘要: 《计算机网络基础·传输层》第三篇聚焦TCP拥塞控制机制,解释为何网络传输会“忽快忽慢”。关键点包括: **流量控制(rwnd)与拥塞控制(cwnd)**的区别:前者保护接收方缓冲,后者避免网络路径拥塞; 发送窗口受限于min(rwnd, cwnd),通过滑动窗口实现高效流水线传输; 拥塞算法逻辑:慢启动(指数增长)→拥塞避免(线性试探)→丢包时降窗(快速重传/超时恢复); 现代算法差异:CUBIC依赖丢包信号,BBR主动建模带宽与RTT。

coder_zjy的博客 599

Python 爬虫实战:社交媒体(Facebook)评论数据抓取与情感分析

在当今数字化时代,社交媒体平台如 Facebook 已成为人们日常生活中不可或缺的一部分。它不仅是人们分享生活点滴、交流思想的场所,也为企业和研究人员提供了丰富的数据资源。通过分析社交媒体上的评论数据,我们可以了解用户的情感倾向、产品反馈以及社会热点话题等。本文将详细介绍如何使用 Python 爬虫技术抓取 Facebook 上的评论数据,并进行情感分析。这不仅是一次技术实战,更是一次数据探索之旅。

yansideyucsdn的博客 672

OSG第三方库编译之二十一:minizip编译(Windows、Linux、Macos环境下编译)

OSG编译;第三方库;跨平台编译;minizip编译(Windows、Linux、Macos环境下编译)

LuckyHanMo的博客 2622

网络层分组交换实战:Wireshark 抓包解析数据报与虚电路(以 TCP/IP 为例)

本文通过Wireshark实战解析TCP/IP网络层分组交换,详细对比了TCP虚电路与UDP数据报的底层差异。从TCP三次握手到UDP数据报的无连接特性,揭示两种分组交换方式的本质区别,帮助网络工程师深入理解数据报与虚电路的实际应用场景和技术特点。

abc20899的专栏 418

ADBC 全面解析:ABAP 开发者玩转 Native SQL 的实战指南

本文介绍了 SAP ABAP 中的 ADBC(ABAP Database Connectivity)技术,它是一种基于 ABAP 面向对象的类库,用于访问 Native SQL 接口。与 Open SQL 和 EXEC SQL 相比,ADBC 具有以下优势:支持特定数据库语法、可访问二级数据库连接、执行多种 SQL 操作且语法更 ABAP 化。文章通过示例展示了 ADBC 的基本用法,包括创建语句对象、执行查询和处理结果集。建议在需要数据库特有功能或二级连接时优先使用 ADBC,同时提供封装类来简化调用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

HCIP学习(实时更新)

学习内容:交换 --- VLAN 、STP、VRRP路由 --- OSPF、ISIS 、路由控制广域网 --- 数据链路层协议、BGPMPLS、IPv6。

vetovasol的博客 529

巡检机器人的基于ROS系统的任务管理架构设计总结

本文探讨了基于ROS(机器人操作系统)的工业巡检机器人任务管理架构设计,提出分层闭环方案。架构围绕稳、准、活、扩四大目标,分为感知层(多源数据融合)、调度层(智能决策)、执行层(动作控制)和数据层(存储交互)。关键技术包括ROS2实时性优化、功能包复用和多机器人协同调度。实践案例显示,该架构在电力巡检中使任务完成率达99%,在化工园区实现95%覆盖率。当前挑战包括SLAM地图漂移和多机通信延迟,未来可通过语义SLAM和区域通信优化。

start_up_go的博客 476

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java最高频八股文速通

final 类:String 类被声明为 final,这意味着它不能被继承,从而防止了通过继承改变其行为。final 字段:String 类中的 value 字段是 final 的,这保证了 String 对象在创建后其内部字符数组不会被改变。没有提供修改方法:String 类没有提供任何可以修改其内容的方法。所有对 String 的操作(如拼接、替换等)都会生成一个新的String 对象。

qq_43751506的博客 6395

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

线上面试全攻略:从算法题到项目深挖的实战复盘

远程办公与视频面试的普及,让求职的物理门槛降低,却对候选人的沟通表达、技术理解与临场应变提出了更高要求。面对在线coding、技术栈追问、项目深挖和行为面等环节,新手往往因缺乏结构化方法而折戟。理解面试本质是“有限时间内的技术沟通”,掌握如何清晰拆解算法题、讲透底层原理、用三段式复盘项目,以及如何在卡壳时与面试官推进对话,直接决定技术实力的兑现率。本文结合真实求职经历,梳理线上面试的节奏调整、高频算法题型、React/C++等核心知识点的深挖方式,以及场景设计题的行为框架,帮助正在备战校招或跳槽的开发者系统

weixin_33829657的博客 367

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2026最新Java八股文(完整版)

单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。

Ostkakah的博客 4万+

系统自我保护机制:从OOM到熔断器的稳定性设计实战

系统自我保护机制是分布式架构中保障稳定性的核心设计理念,其原理基于资源隔离和快速失败策略。当系统检测到内存溢出、线程池饱和或服务调用失败率过高时,会主动触发保护行为,避免局部故障扩散导致雪崩效应。这种机制的技术价值在于实现优雅降级和系统韧性,确保核心业务在极端场景下仍可运行。典型应用场景包括微服务熔断、流量控制和资源管理,例如通过Resilience4j实现熔断器模式或配置JVM参数应对OOM问题。本文以内存溢出和熔断器为例,深入解析系统“强制重启”背后的工程实践与诊断方法。

weixin_34043301的博客 409

C++线程池毫秒级动态伸缩:2025高并发架构核心实践

线程池作为并发编程的核心组件,其核心原理在于通过复用线程资源来避免频繁创建销毁的开销,从而提升系统吞吐量和响应速度。传统固定大小线程池在应对突发流量或负载波动时,常面临资源浪费或响应延迟的挑战。现代高并发系统对资源弹性和延迟控制提出了更高要求,动态伸缩技术应运而生,它通过实时监控任务队列、线程活跃率等指标,自动调整线程数量以匹配负载变化。这项技术的核心价值在于实现资源利用率与响应延迟的最优平衡,尤其适用于后端服务、游戏服务器、高频交易等对性能敏感的场景。本文聚焦于**毫秒级动态伸缩**的实现,深入剖析了基于

weixin_34318272的博客 389
上一篇: 无线场景下观察TCP滑动窗口大小的变化
下一篇: 有线场景TCP快速重传和快速恢复算法的演示
flyuniverse_shell
博客等级 码龄18年 119粉丝 121原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值