计算机网络传输层---课后综合题
线路:TCP报文下放到物理层传输。
TCP报文段中,“序号”长度为32bit,为了让序列号不会循环,则最多能传输2^32B的数据,则最多能传输:2^32/1500B个报文
结果:
吞吐率=一个周期内传输的数据/周期时间
假设窗口大小为xbit,则一个周期内传输的数据能传输xbit数据
周期时间=发送端的发送时延+A到B的传播时延+确认报文的发送时延(忽略)+确认报文的传播时延=x/256k + (128*10^-3 )*2
x=2^16bit=2^13B
注意两点:
1.数据偏移表示的就是TCP首部长度,TCP由TCP首部和数据部分组成,数据偏移表示的是TCP数据部分距离起始有多远,那就是首部长度了。单位为4B,所以首部长度要是4B的整数倍。
补充:IP片偏移单位为8B,片偏移的数据部分要为8B的整数倍。
2.可以通过端口查看TCP连接使用了什么协议?是客户端到服务器还是服务器到客户端?(客户端口随意,服务器端口固定)
例如上面例子,源端口:3368,目的端口:21
那么使用的就是FTP协议,并且这个报文段是从客户端发送到服务器端的。
首先分析一下IP分组前40B的内容:
由于TCP分组下放到网络层,会添加IP首部,所以IP的组成:20B的首部+数据部分,这个数据部分就是TCP的内容。
所以,对于一个IP分组:上面一整行共20B,表示IP首部,下面一整行表示TCP内容。
IP首部结构中一行=32bit=4B,对应的就是 "45 00 00 30”这样的一段:
1.1
哪几个是由H发送的:
H的IP地址为192.168.0.8,转化为16进制:C0 A8 00 08
查看IP首部的结构,源IP地址为192.168.0.8的IP分组有:1,3,4
也可以通过标识判断:发送方每产生一个IP数据报,标识字段自动+1。
那么,服务器就先后发送了2,5号IP分组,服务器S不仅仅只是和主机H进行通信,所以其标识字段是不连续的。
1.2
TCP连接的建立,是主机H与服务器S刚通信时就必须完成的。所以三次握手应该是主机H与服务器S通信的前3个IP分组:1,2,3
也可以通过IP首部首部的标志字段判断:
1:SYN=1,ACK=0
2:SYN=1,ACK=1
3:SYN=0,ACK=1
3,4号SYN,ACK和seq相同,为什么不是4:因为标识字段3:019c ,4:019d,说明H先发送3号,而TCP的建立一定是H先发送的两个IP分组建立的。
1.3
以太网数据帧长最少64字节,根据以太网数据帧的结构,那么数据部分(即IP数据报)最少要有46B。
根据IP首部“总长度”字段:
1,2号为30H=48B,3,5号为28H=40B,需要填充。
2.1
TCP建立连接时,只有最后一次连接能携带数据,也就是在1,2,3中只有3能携带数据,H发送的是1,3,4号IP分组,所以能携带数据的是3,4号分组。
携带的数据部分怎么算:IP分组的总长度 - IP首部 - TCP首部 (TCP的“数据偏移”字段)
拿第一个分组说,其总长度为30H,单位1B,总长度=30H=48B;IP首部长度为5H,单位是4,所以IP首部长度为5*4=20B,TCP首部长度为7H,单位为4,4*7=28B,数据部分:
48-20-28=0,所以第一个IP分组不携带数据。
其他同理,得发送的数据:
0+0+16B=16B
也可以从TCP的“确认号”来分析,确认号表示服务器S期待收到主机H下次发送的报文序号是多少。从刚开始的84 6b 41 b6到84 6b 41 d6,两者相减也能得到16B
3.1
经过多少路由器看“生存时间”字段:
刚开始S发出时生存时间字段为40H,发送给H的第一个分组“生存时间”字段值为31H
40H-31H=FH=15,则表示经过了15个路由器。
1
H3请求建立TCP连接,虽然这个过程不携带数据,但是会消耗一个seq。
所以H3从序号101开始发送数据。
以MSS大小的段向S发送数据,发送窗口取min{拥塞窗口,接收窗口}
当发送方返回对8个报文段的确认时,拥塞窗口变为16,而此时的接收窗口为5,取最小值,所以下次发送5个报文段
2.1
当H3收到8个确认段时,说明S已经收到了8个TCP段,所以通告给H3的接收窗口是20-8=12。
2.2
慢开始阶段,H3每收到一个确认报文段,拥塞窗口+1,例如:
主机发送1个报文,收到1个报文段确认,拥塞窗口变为1+1=2。主机发送2个报文段,收到2个报文段的确认,拥塞窗口变为2+2=4,所以我们看到的是拥塞窗口成倍增加的现象
这里收到了8个确认段,所以主机H3的拥塞窗口为8+1=9,发送窗口=min{9,12}=9。
补充:而在拥塞避免阶段,每收到一个确认报文段,只会时拥塞窗口+1/n(n分之1)的MSS。因为一个轮次中有n个确认帧,所以拥塞窗口+(n*1/n=1)个MSS。
3
刚开始seq=101,总共发送了20K的数据,所以发送窗口为0时,下一个数据段序号是:
20*1024+101=20581
平均传输速率,20KB数据,总共往返5轮:
20KB/(5*200ms)=20KB/s
4.最短时间表示:H3给服务器发送断开连接请求,服务器确认后,也不再发送数据。
时间为1.5*MSS=1.5*200=300ms
(1)持久,非持久,控制连接
(2)第一个字节序号:101;第二次挥手seq:102+18000=18102
(3)H收到2101的确认段时,拥塞窗口+1:则为2+1=3MSS
由于拥塞控制初始阈值为4MSS,所以当接收到7101确认帧后,拥塞窗口增加为5MSS
(4)数据总大小18000B,总共6个传输轮次:
18000B/60ms=0.3MB/s=2.4Mb/s
相关文章:

计算机网络传输层---课后综合题
线路:TCP报文下放到物理层传输。 TCP报文段中,“序号”长度为32bit,为了让序列号不会循环,则最多能传输2^32B的数据,则最多能传输:2^32/1500B个报文 结果: 吞吐率一个周期内传输的数据/周期时间…...

【homebrew安装】踩坑爬坑教程
homebrew官网,有安装教程提示,但是在实际安装时,由于待下载的包的尺寸过大,本地git缓存尺寸、超时时间的限制,会报如下错误: error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly…...
反游戏学(Reludology):概念、历史、现状与展望?(豆包AI版)
李升伟 以下是关于“反游戏学(Reludology):概念、历史、现状与展望”的综述: 一、概念 反游戏学(Reludology)是一个相对较新且不太常见的概念,目前尚未有统一明确的定义。一般来说…...
【C/C++语言系列】实现单例模式
1.单例模式概念 定义:单例模式是一种常见的设计模式,它可以保证系统中一个类只有一个实例,而且该实例易于外界访问(一个类一个对象,共享这个对象)。 条件: 只有1个对象易于外界访问共享这个对…...
A. Make All Equal
time limit per test 1 second memory limit per test 256 megabytes You are given a cyclic array a1,a2,…,ana1,a2,…,an. You can perform the following operation on aa at most n−1n−1 times: Let mm be the current size of aa, you can choose any two adjac…...

业务安全治理
业务安全治理 1.账号安全撞库账户盗用 2.爬虫与反爬虫3.API网关防护4.钓鱼与反制钓鱼发现钓鱼处置 5.大数据风控风控介绍 1.账号安全 撞库 撞库分为垂直撞库和水平撞库两种,垂直撞库是对一个账号使用多个不同的密码进行尝试,可以理解为暴力破解&#x…...

HelpLook VS GitBook,在线文档管理工具对比
在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协…...
docker面经
docker面经在线链接 docker面经在线链接🔗: (https://h03yz7idw7.feishu.cn/wiki/N3CVwO3kMifLypkJqnic9wNynKh)...

Python 中的 Kombu 类库
Kombu 是一个用于 Python 的消息队列库,提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一,但也可以单独使用。Kombu 支持多种消息代理(如 RabbitMQ、Redis、Amazon SQS 等),并提供了消息生产者和消费者的功…...
safepoint是什么?有什么用?
在JVM中,safepoint(安全点)是一个非常重要的概念,特别是在垃圾回收(GC)和其他需要暂停所有应用线程的操作中。 什么是safepoint Safepoint是JVM执行过程中一个特定的位置,在这个位置上&#x…...
axios相关知识点
一、基本概念 1、基于Promise:Axios通过Promise实现异步请求,避免了传统回调函数导致的“回调地狱”问题,使得代码更加清晰和易于维护。 2、跨平台:Axios既可以在浏览器中运行,也可以在Node.js环境中使用,为前后端开…...
LeetCode 面试经典150题 67.二进制求和
415.字符串相加 思路一模一样 题目:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 eg: 输入a“1010” b“1011” 输出“10101” 思路:从右开始遍历两个字符串,因为右边是低位先运算。如果…...

Dell PowerEdge 网络恢复笔记
我有一台Dell的PowerEdge服务器,之前安装了Ubuntu 20 桌面版。突然有一天不能开机了。 故障排查 Disk Error 首先是看一下机器的正面,有一个非常小的液晶显示器,只能显示一排字。 上面显示Disk Error,然后看挂载的硬盘仓&#…...

Java面试——集合篇
1.Java中常用的容器有哪些? 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如图: 面试官追问:说说集合有哪些类及他们各自的区别和特点? S…...
算法【双向广搜】
双向广搜常见用途 1:小优化。bfs的剪枝策略,分两侧展开分支,哪侧数量少就从哪侧展开。 2:用于解决特征很明显的一类问题。特征:全量样本不允许递归完全展开,但是半量样本可以完全展开。过程:把…...
javascript检测数据类型的方法
1. typeof 运算符 typeof是一个用来检测变量的基本数据类型的运算符。它可以返回以下几种类型的字符串:“undefined”、“boolean”、“number”、“string”、“object”、“function” 和 “symbol”(ES6)。需要注意的是,对于 n…...

生信初学者教程(五):R语言基础
文章目录 数据类型整型逻辑型字符型日期型数值型复杂数数据结构向量矩阵数组列表因子数据框ts特殊值缺失值 (NA)无穷大 (Inf)非数字 (NaN)安装R包学习材料R语言是一种用于统计计算和图形展示的编程语言和软件环境,广泛应用于数据分析、统计建模和数据可视化。1991年:R语言的最…...
深度学习计算
一、层和块 块可以描述单个层、多个层组成的组件或整个模型。 通过定义块,组装块,可以实现复杂的神经网络。 一个块可以由多个class组成。 其实就是 自己定义神经网络net,自己定义层的顺序和具体的init、 forward函数。 层和块的顺序由sequen…...

Hexo博客私有部署Twikoo评论系统并迁移评论记录(自定义邮件回复模板)
部署 之前一直使用的artalk,现在想改用Twikoo,采用私有部署的方式。 私有部署 (Docker) 端口可以根据实际情况进行修改 docker run --name twikoo -e TWIKOO_THROTTLE1000 -p 8100:8100 -v ${PWD}/data:/app/data -e TWIKOO_PORT8100 -d imaegoo/twi…...
Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践
Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践 在现代 Web 开发中,前后端分离的架构已经成为主流。Vue.js 作为一个渐进式 JavaScript 框架,因其灵活性和易用性而广受欢迎。而 Flask 和 Django 则是 Python 生态中两个非常流…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...