当前位置: 首页 > news >正文

计算机网络传输层---课后综合题

线路: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&#xf…...

反游戏学(Reludology):概念、历史、现状与展望?(豆包AI版)

李升伟 以下是关于“反游戏学(Reludology):概念、历史、现状与展望”的综述: 一、概念 反游戏学(Reludology)是一个相对较新且不太常见的概念,目前尚未有统一明确的定义。一般来说&#xf…...

【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 生态中两个非常流…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...