【学习笔记】TCP/IP协议详解

news2024/11/28 10:39:23

1.A、B、C类网络号各有多少个?

A类网络号:共有2^7 - 2个,即126个。这是因为A类网络号的第一个字节范围是1.0.0.0到126.0.0.0,其中0.0.0.0和127.0.0.0是特殊保留地址,不能用于网络划分。

B类网络号:共有2^14个,即16,384个。B类网络号的第一个字节范围是128.0.0.0到191.255.0.0。

C类网络号:共有2^21个,即2,097,152个。C类网络号的第一个字节范围是192.0.0.0到223.255.255.0。

计算过程如下:

  • 对于A类网络号,第一个字节的范围是1-126,共有126个可能的值。
  • 对于B类网络号,第一个字节的范围是128-191,共有64个可能的值。第二个字节的范围是0-255,共有256个可能的值。总共的组合数为64 * 256 = 16,384。
  • 对于C类网络号,第一个字节的范围是192-223,共有32个可能的值。第二个字节和第三个字节的范围都是0-255,每个字节都有256个可能的值。总共的组合数为32 * 256 * 256 = 2,097,152。

2.如果你的系统支持netstat命令,那么请用它确定系统上的接口及其MTU。

netstat命令用于查看网络连接、路由表和网络接口信息

netstat -in查看接口名称、MTU、网络流量统计等。

也可用ifconfig -a(Linux系统)查看

3.找出数据报网络层 IP层 提供的三个优点

  • 网络互连,IP层提供了网络互连,允许不同网络和子网间进行通信
  • 网络路由,通过路由选择算法将包从源主机发送到目的主机,通过路由表选择最佳路径。实现包的转发和路由功能
  • 无连接通信:IP层是无连接协议,每个包独立处理,无建立连接的开销

4.为什么存在两类ICMP重定向报文—网络和主机?

  1. 网络重定向(Network Redirect)报文:网络重定向报文用于指示源主机在发送数据包时更改其默认路由,以便通过更直接的路径发送数据包。这种重定向通常是由路由器生成的,目的是告知源主机存在更佳的路径选择。网络重定向报文是针对整个网络的,发送者提供了一个更好的下一跳路由器的IP地址。
  2. 主机重定向(Host Redirect)报文:主机重定向报文用于指示源主机在发送数据包时更改其下一跳主机,以便通过更近的主机发送数据包。这种重定向通常是由目标主机生成的,目的是告知源主机存在更接近目标的下一跳主机。主机重定向报文是针对具体目标主机的,发送者提供了更佳的下一跳主机的IP地址。

区分网络重定向和主机重定向的目的是让源主机能够根据不同的情况进行适当的路由调整。优化整个网络的路径选择

5.OSPF报文格式中有一个检验和字段,而 RIP报文则没有此项,这是为什么?

  • RIP运行在UDP上,而UDP提供了UDP数据报中数据部分的一个可选的检验和(11.3节)。
  • OSPF运行在IP上,IP的检验和只覆盖了IP首部,所以OSPF必须增加它自己的检验和字段。

6.假定有一个以太网和一份8192字节的UDP数据报,那么需要分成多少个数据报片,每个 数据报片的偏移和长度为多少?

UDP数据报的最大长度是65535字节(包括UDP头部和数据部分)。然而,以太网的MTU通常为1500字节,因此UDP数据报超过MTU限制时需要进行分片。

每个IP数据报片(包括UDP数据报片)的数据部分长度需要是8字节的整数倍

  • 需要的数据报片数量 = ceil(UDP数据报长度 / MTU) = ceil(8192 / 1500) ≈ 6
  • 数据报的数据部分长度为: MTU - IP头部长度 = 1500 - 20(假设IP头部长度为20字节)= 1480字节
  • 偏移量计算:后续数据报片的偏移量 = (数据报片的索引 - 1) * 每个数据报片的数据部分长度 / 8 = (索引 - 1) * 1480 / 8

7.TCP提供了一种字节流服务,而收发双方都不保持记录的边界。应用程序如何提供它们 自己的记录标识?

在这种情况下,应用程序需要自己确定和管理记录的边界,并为每个记录提供自己的标识。这可以通过在应用层协议中定义特定的记录格式或使用特殊的标记来实现。

常用的方法来提供应用程序自己的记录标识:

  • 定长记录:程序约定每个记录固有长度
  • 分隔符标记:程序约定记录之间用特定分隔符作为标记,接收方收到分隔符,认为是一个完整的记录
  • 长度前缀:程序在每个记录上添加指示数据长度的前轴

8.TCP的三次握手与四次挥手

在这里插入图片描述

为什么要等2MSL(报文最大生命周期)才关闭连接?

客户端发送ACK后,需要保证服务端已经收到了并且关闭连接,而报文在网络中最大存活时间就是2MSL。就是为了确保网络中没有关于这个连接的旧报文段存在了,保证TCP连接的可靠性。

9.TCP 半打开连接和半关闭连接的区别是什么?

  1. 半打开连接(Half-Open Connection):半打开连接是指在TCP三次握手过程中的某个阶段中的连接状态。在这个阶段,一方已经发送了SYN报文段并等待对方的确认,但还没有收到对方的确认。这种状态通常表示连接正在建立中或存在问题。半打开连接可能发生在网络故障、网络延迟或对方主机未响应的情况下。
  2. 半关闭连接(Half-Closed Connection):半关闭连接是指在TCP四次挥手过程中的某个阶段中的连接状态。当一方发送了FIN报文段表示关闭连接后,另一方仍然可以发送和接收数据,但不再发送新的数据。这种状态允许一方先关闭发送数据通道,但仍然可以接收对方发送的数据。半关闭连接通常用于一方需要终止发送数据,但仍然需要接收对方发送的数据的情况,比如服务器向客户端发送终止连接请求,但允许客户端继续发送数据。

总结来说,半打开连接是建立连接过程中的一种临时状态,表示连接正在建立或存在问题。半关闭连接是在关闭连接过程中的一种状态,允许一方关闭发送数据通道但仍然可以接收对方发送的数据。这两种连接状态发生在不同的阶段,用于不同的目的。

TCP

  1. TCP和UDP之间的区别是什么?它们适用于哪些不同的应用场景?

  2. TCP三次握手的过程是什么?为什么需要三次握手来建立连接?

  3. TCP四次挥手的过程是什么?为什么需要四次挥手来关闭连接?

4.TCP的流量控制和拥塞控制是什么?它们的区别和目的是什么?

  • TCP的流量控制用于控制发送方发送数据的速率,以避免接收方来不及处理或溢出。通过使用滑动窗口机制,接收方可以通知发送方可以接收的数据量。
  • TCP的拥塞控制用于控制网络中的拥塞情况,防止过多的数据注入网络导致网络性能下降。TCP通过使用拥塞窗口和拥塞避免算法(如拥塞避免、慢启动、快速重传和快速恢复)来调整发送方的发送速率

5.TCP的窗口大小是什么?如何调整窗口大小以优化传输性能?

  • TCP的窗口大小是指发送方在等待确认之前可以发送的未确认数据量。它决定了发送方可以持续发送的数据量。
  • TCP使用拥塞窗口和接收窗口来确定窗口大小。拥塞窗口受网络拥塞程度的影响,而接收窗口受接收方的可用缓冲区大小影响。
  • 通过拥塞控制算法和动态调整窗口大小,TCP可以优化传输性能,提高带宽利用率和减少拥塞。

6.TCP的可靠性是如何实现的?它使用了哪些机制来保证数据的可靠传输?

  • TCP使用多种机制来实现可靠传输。其中包括序列号和确认机制,发送方发送带有序列号的数据,接收方通过发送确认报文段来确认已接收的数据。
  • TCP还使用超时重传机制来处理丢失的数据,如果发送方在一定时间内未收到确认,将重传该数据。
  • 还有其他机制,如滑动窗口协议、选择确认和累计确认等,都用于确保数据的可靠传输。

7.TCP的超时重传机制是什么?当发生丢包或延迟时,TCP如何处理?

  • TCP的超时重传机制是为了应对网络中发生的丢包、延迟或乱序等情况,当发送方发送数据后,它会启动一个定时器。如果在定时器超时之前未收到接收方的确认,发送方会假设数据丢失,并重新发送该数据。重传时间使用RTO动态算法根据网络延迟、拥塞程度动态调整。
  • 当发生丢包时,接收方会忽略重复的数据,并向发送方发送确认来指示所期望的下一个数据序号。

8.TCP的拥塞控制算法有哪些?分别介绍它们的原理和应用场景

  • TCP的拥塞控制算法主要包括慢启动、拥塞避免、快速重传和快速恢复。
  • 慢启动(Slow Start)算法用于连接初始阶段,发送方逐渐增加发送窗口的大小,以便在网络中建立适当的负载。
  • 拥塞避免(Congestion Avoidance)算法在慢启动阶段结束后启动,发送方根据网络的拥塞程度来逐渐增加发送窗口的大小,以避免过度拥塞。
  • 快速重传(Fast Retransmit)算法用于快速检测和处理丢失的数据段。当接收方收到乱序的数据段时,它会立即发送对于最后正确接收的数据段的重复确认,以触发发送方进行快速重传。
  • 快速恢复(Fast Recovery)算法用于恢复拥塞状态。当发送方接收到三个重复的确认时,它会减少发送窗口的大小,并进入快速恢复状态

9.TCP的重传机制是如何工作的?它如何检测和处理丢失的报文段?

  1. 发送方发送数据段:发送方将数据分割成较小的报文段,并为每个报文段分配一个序列号。发送方开始计时,启动一个定时器,等待接收方的确认。
  2. 接收方接收数据段:接收方收到报文段后,将其缓存起来,并向发送方发送确认报文段,其中确认号表示已成功接收的最后一个连续字节的序列号。
  3. 发送方接收确认:发送方接收到确认后,将确认号与已发送的报文段进行比较,确认接收方已正确接收到该报文段。
  4. 定时器超时:如果发送方在定时器超时之前未收到确认,它将假设该报文段已丢失。发送方将重新发送该丢失的报文段,并重启定时器等待下一个确认。
  5. 重传次数限制:如果发送方连续多次未收到确认,它将假设网络出现了较严重的问题,并采取相应的措施,例如减少发送窗口的大小、启动拥塞控制机制等。
  6. 接收方检测丢失的报文段:接收方通过确认报文段中的确认号来指示所期望的下一个连续字节的序列号。如果接收方在一定时间内未收到序列号连续的数据段,它将重复发送上一次正确接收的确认,以指示发送方重传丢失的报文段。

10.什么是TCP的滑动窗口协议?它如何实现可靠的数据传输和流量控制?

滑动窗口协议的工作原理如下:

  1. 发送窗口:发送方维护一个发送窗口,表示可以发送但未收到确认的数据段的范围。发送窗口由两个参数确定:发送窗口的起始位置和窗口的大小。
  2. 接收窗口:接收方维护一个接收窗口,表示它能够接收的数据段的范围。接收窗口由两个参数确定:接收窗口的起始位置和窗口的大小。
  3. 发送方的操作:发送方根据接收方发送的确认信息和窗口大小来确定可以发送的数据段的数量。发送方发送窗口的起始位置随着数据的确认不断向前滑动,以允许发送新的数据段。
  4. 接收方的操作:接收方根据接收到的数据段和发送方的期望序列号来确定确认的数据段。接收方的接收窗口的起始位置随着接收到连续的数据段不断向前滑动,以允许接收新的数据段。

通过滑动窗口协议,TCP实现了可靠的数据传输和流量控制的功能:

  1. 可靠的数据传输:发送方发送数据段后,等待接收方的确认。如果发送方在一定时间内未收到确认,它会重传丢失的数据段。接收方根据序列号确认已接收到的数据段,并通过确认信息告知发送方。
  2. 流量控制:发送方根据接收方的窗口大小来控制发送的数据量。发送方不会发送超过接收方窗口大小的数据,以避免接收方缓冲区溢出。接收方可以根据处理能力和缓冲区大小调整窗口大小。

11.TCP的粘包和拆包问题是什么?如何处理这些问题?

粘包问题: 粘包问题指的是发送方发送的多个数据包在接收方接收时被合并成一个大的数据包。这可能会导致接收方无法正确解析和处理数据。

拆包问题: 拆包问题指的是发送方发送的一个数据包在接收方接收时被拆分成多个小的数据包。这可能会导致接收方无法完整地获取到发送方原始发送的数据

解决方法:

  • 消息长度固定
  • 特殊字符分隔
  • 消息头部标识
  • 应用层协议设计

12.如何通过netstat命令查看TCP连接状态和相关信息?

  1. netstat -a:显示所有的连接和监听端口,包括 TCP 和 UDP。
  2. netstat -t:显示所有的 TCP 连接。
  3. netstat -u:显示所有的 UDP 连接。
  4. netstat -n:以数字形式显示地址和端口号,不进行主机和端口的解析。
  5. netstat -p:显示与连接相关的程序名或进程 ID。
  6. netstat -s:显示 TCP 和 UDP 的统计信息,如接收和发送的数据包数量、错误等。
  7. netstat -r:显示路由表信息。
  8. netstat -l:显示正在监听的端口。

组合使用,netstat -atn显示所有TCP连接的端口号和地址,进程IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis的主从复制,哨兵及群集

一、主从复制 1、主从复制-哨兵-集群 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自…

免费通过微软Edge浏览器使用ChatGPT的手把手详细教程

ChatGPT是OpenAI推出的人工智能语言模型,能够通过理解和学习人类的语言来进行对话,像人类一样进行聊天交流,甚至还可以生成图片、编写代码。下面介绍如何通过在微软Edge浏览器的扩展程序中使用ChatGPT。 一、使用效果 ChatGPT的使用效果示例…

一文读懂!RK3668和RK3568有什么区别?

​ 从上图可以看出,RK3568和RK3566 CPU均为四核Cortex-A55架构,GPU为Mali-G522EE,内置NPU,可提供1T算力,支持DDR及CPU Cache全链路ECC等,RK366与RK3568最大区别的是RK3568具有PCIe接口、双千兆以太网和更…

基于FPGA+SDRAM+BT656视频解码移植总结

一、硬件准备 1、TVP5150模块(模拟视频信号解码模块)。 2、模拟摄像头一个(PAL或NT格式输出AV同轴) 3、FPGA开发板一块(EP4CE6+SDRAM+VGA) 实现功能: 模拟摄像头输出的视频信号为模拟信号,AV 同轴线缆输出,通过转接线接 到 TVP5150 模块,FPGA 控制 TVP5150 模块,…

C语言学习分享(第八次)------初阶指针

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 初阶指针 1. 前言🚩2. …

TypeScript 之 Lambda 函数

本文作者为 360 奇舞团前端开发工程师 TypeScript 之 Lambda 函数 Lambda 函数 又称箭头函数 箭头函数表达式语法比函数表达式语法更简短,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方&#xff0…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…

哈希环如何用在直播调度系统

背景 直播CDN系统通常用L1或者L2的缓存集群,缓解中心服务器压力。缓存集群需要满足2个条件 写:同一份数据写在一台缓存CDN服务器上,至少是同一节点上;读:对于这份数据的读取,能尽快索引到缓存CDN服务器上…

[CTF/网络安全] 攻防世界 baby_web 解题详析

[CTF/网络安全] 攻防世界 baby_web 解题详析 index.html & default.htmlindex.phpHTTP 302总结 题目描述:想想初始页面是哪个 index.html & default.html 初始页面的文件名一般为 index.html 或 default.html。这两个文件名都是 Web 服务器默认的首选文件…

shell编程--变量

变量 在shell中用户可以建立变量来存储数据,但不支持数据类型,变量名命名规则:数字、字母、下划线,不能以数字开头。 环境变量 当前shell的环境设置的一些变量 ​ export—设置新的环境变量 ​ env—显示所有环境变量 ​ set—…

Codeforces Round 874 (Div. 3)

作者:指针不指南吗 专栏:codeforces 🐾或许会很慢,但是不可以停下来🐾 文章目录 A. Musical PuzzleB. Restore the WeatherC. Vlad Building Beautiful Array A. Musical Puzzle Problem - 1833A - Codeforces 题意 …

<Python实际应用>做一个简单的签到投屏系统

公司接了个活,承办一个由团委组织的五四青年节徒步活动,其中一个环节是现场报名,来的人把名字填进去后随机分组,并显示在现场的LED大屏幕上,我自告奋勇用Python来开发这个小程序。这里记录一下 【项目需求】 1、报名…

数据结构初阶(3)(链表:链表的基本概念、链表的类型、单向不带头非循环链表的实现、链表的相关OJ练习、链表的优缺点 )

接上次博客:和数组处理有关的一些OJ题;ArrayList 实现简单的洗牌算法(JAVA)(ArrayList)_di-Dora的博客-CSDN博客 目录 链表的基本概念 链表的类型 单向、不带头、非循环链表的实现 遍历链表并打印节点值: 在链…

华为OD机试真题 Java 实现【关联端口组合并】【2023Q1 100分】

一、题目描述 有M (1<M<10)个端口组&#xff0c;每个端口组是长度为N(1<N<100)的整数数组&#xff0c;如果端口组间存在2个及以上不同端口相同&#xff0c;则认为这两个端口组互相关联&#xff0c;可以合并。 第一行输入端口组个数M&#xff0c;再输入M行&#x…

Faster-RCNN网络详解

文章目录 一、前言二、Faster-RCNN算法原理2.1.RPN结构2.1.1感受野的计算与候选框的生成2.1.2正负样本 2.2.RPN的损失计算2.2.1对于分类损失2.2.2.边界回归参数 2.3.Fast-RCNN损失2.4.整体训练 三、总结四、参考博客、视频、论文地址4.1.B站优质UP视频4.2.系类论文地址4.3.个人…

windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案

windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案 一、问题排查二、问题解决 一、问题排查 最近win11更新后发现会偶尔在睡眠状态下唤醒&#xff0c;CMD中输入powercfg -lastwake命令可以查看唤醒源程序 这里显示唤醒是按下了电源按钮&#xff0c;符合我此次唤醒操…

论文阅读_语音合成_VALLE-X

论文信息 name_en: Speak Foreign Languages with Your Own Voice: Cross-Lingual Neural Codec Language Modeling name_ch: 用你自己的声音说外语&#xff1a;跨语言神经编解码器语言建模 paper_addr: http://arxiv.org/abs/2303.03926 date_read: 2023-04-25 date_publish:…

【Hadoop】一、Apache Hadoop、 HDFS

一、Apache Hadoop、 HDFS 1、Apache Hadoop概述 Hadoop介绍 狭义上Hadoop指的是Apache软件基金会的一款开源软件。 用java语言实现&#xff0c;开源 允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理 Hadoop核心组件 Hadoop HDFS&#xff08;分布式文…

论文阅读_音频压缩_SoundStream

论文信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: SoundStream: An End-to-End Neural Audio Codec name_ch: SoundStream&#xff1a;一种端到端的神经音频编解码器 paper_addr: http://arxiv.org/abs/2107.03312 doi: 10.1109/TASLP.2021.3129994 dat…

织梦网做城市分站织梦分站群二级目录织梦城市分站教程

一、安装网站 1、上传到服务器上输入www.xxxx.com/install进行安装(具体安装方法找百度一大堆); 可以参考http://www.hlzcb.com/zhimengxueyuan/zhimenganzhuangshiyong/25830.html 2.安装好后台点击后台系统→数据库备份还原→数据还原,点击下面的开始还原数据; 二、设…