计算机网络 TCPUDP、IP、ARPRARP、NAT总结

news2024/9/25 9:38:46

文章目录

  • TCP 和 UDP
    • UDP
    • TCP
      • TCP 三次握手
      • 半连接队列(SYN队列)
      • 全连接队列(Accept队列)
      • TCP四次挥手
        • 为什么四次挥手
        • 为什么需要TIME_WAIT状态
        • TIME_WAIT的危害
        • 为什么是2MSL
      • 重传机制
      • 滑动窗口
      • 流量控制
      • 拥塞控制
  • IP
    • IP地址分类
      • A、B、C类地址
      • D、E类地址
      • 分类的优缺点
      • CIDR无分类地址
        • 子网掩码
        • 为什么要分离网络号和主机号
        • 如何进行子网划分
      • 路由控制
      • IP分片与重组
    • IPV6
      • 亮点
      • 地址
      • 结构
      • 与IPV4的区别
    • ARP与RARP协议
      • 1. ARP协议
      • 2. RARP协议
      • 3. DHCP动态获取IP地址
        • DHCP中继代理
    • NAT( Network Address Translation, 网络地址转换)
      • 缺点
      • 优化方案
      • ICMP
        • 功能
        • 类别
      • IGMP因特网组管理协议
        • 工作机制
          • 常规查询与响应
          • 离开组播组

TCP 和 UDP

UDP

UDP-header|500
目标端口和源端口:告诉UDP应该发送至哪个进程
包长度:UDP首部的长度跟数据的长度之和
校验和:提供可靠的UDP首部而设计

TCP

TCP-header|500
窗口大小:还有多少空间能接收数据
标志字段:
ACK:用于指示确认应答号值是否有效,置1表示包含一个对已成功接收报文段的确认;
RST:用于重置一个已经混乱的连接,或拒绝一个无效的数据段或者连接请求;
SYN:用于连接建立过程,请求建立一个连接;
FIN:用于断开连接,表示发送方没有数据要传输了
校验和:CRC算法检测报文段是否出错

TCP 三次握手

⚠️upload failed, check dev console
![[image-20240817204352841.png]]
第一次握手: 携带客户端初始序列号的SYN报文
第二次握手: 携带服务端初始序列号的SYN+ACK报文,表示收到
第三次握手:携带服务器的ACK报文
为什么需要三次握手?
三次握手才能保证双方具有接收和发送的能力
总结:

  1. 三次握手才可以阻止重复历史连接的初始化(主因)
  2. 三次握手才可以同步双方的初始序列号
  3. 三次握手才可以避免资源浪费

半连接队列(SYN队列)

用于存放已经发送了 SYN(同步)包,但还未完成三次握手的连接:服务器第一次收到客 户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接 放在一个队列里,我们把这种队列称之为半连接队列。

全连接队列(Accept队列)

用于存放已经完成三次握手,处于完全建立连接状态的连接。

TCP四次挥手

在挥手之前,客户端和服务器都处于 ESTABLISHED 状态

  1. 第一次挥手:假设客户端打算关闭连接,发送一个TCP首部FIN被置1的 FIN 报文给服务端, 此时客户端处于 FIN_WAIT1 状态
  2. 第二次挥手:服务端收到以后,向客户端发送ACK应答报文,且把客户端的序列号值+1作为ACK报文的序列号 值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态
  3. 第三次挥手:等待服务端处理完数据后,向客户端发送FIN报文。此时服务端处于 LAST_ACK 的状态
  4. 第四次挥手:客户端接收到FIN报文后回一个ACK应答报文,之后客户端处于 TIME_WAIT 状态
  5. 服务器收到ACK报文后,进入 CLOSE 状态,服务器完成连接关闭。
  6. 客户端在经过 2MSL 一段时间后,自动进入 CLOSE 状态,客户端也完成连接的关闭。
为什么四次挥手

客户端发送FIN报文表示不发送数据,但还可以接收数据
关闭连接时,服务端可能还要数据处理和发送,就可以先回一个ACK,等到不再发送数据,再发送FIN表示他同意关闭连接
所以:服务端通常需要等待完成数据的发送和处理,ACK和FIN一般都会分开发

为什么需要TIME_WAIT状态

主动发起关闭连接的一方需要TIME_WAIT状态
原因:

  1. 防止历史连接中的数据,被后面相同的四元组的链接错误的接收。
    网络可能出现拥塞或者延迟,导致滞留的数据包被传递给新连接,导致数据干扰
  2. 保证最后的ACK能让被动关闭方接收,从而帮助正常关闭
TIME_WAIT的危害
  1. 内存资源占用
  2. 对端口资源的占用,
为什么是2MSL

MSL:Maximum Segment Lifetime 报文最大生存时间
2MSL 的时间是从客户端接收到 FIN 后发送 ACK 开始计时的。如果在 TIME-WAIT 时间内,因为客户端的 ACK 没有传输到服务端,客户端又接收到了服务端重发的 FIN 报文,那么 2MSL 时间将重新计时。

  1. 等待MSL两倍:发送方数据包被接收处理后又向对方发送响应,一来一回需要两倍
  2. 确保四次挥手主动关闭方最后的ACK能到达对端

重传机制

实现可靠传输的方式:序列号和确认应答

  1. 超时重传:计时器范围内没有收到对方的确认ACK,就会重发,每次重传时间都设为先前的两倍
    image.png|500
  2. 快速重传:以数据驱动重传;当收到三个相同的ACK报文。会重传丢失的报文段。
    问题:重传多少报文段
    image.png|500
  3. SACK 选择性确认:解决重传哪些报文;需要在TCP头部加SACK,将已收到的数据信息发送给发送方
  4. D-SACK:主要使用另外SACK告诉发送方哪些数据被重复接收
    使用D-SACK的好处:
    (1)可以让【发送方】知道,是发出去的包丢了,还是接收方回应的ACK包丢了;
    (2)可以知道是不是【发送方】的数据包被网络演示了;
    (3)可以知道网络中是不是把【发送方】的数据包给复制了。

滑动窗口

解决问题:TCP每发送一次数据都需要应答;数据往返时间越长,网络吞吐量越低
特点:即使在往返时间较长的情况下,也不会降低网络通信的效率
窗口大小:无需等待确认应答可以继续发送数据的最大值;由接收方窗口大小决定
实现:操作系统开辟的一个缓存空间,按期收到确认应答,则清楚缓存区
累计确认:ACK700表示700之前的所有数据都被接收,ACK600确认应答报文丢失
滑动窗口不是一成不变的,如果读取速度非常快的话,接收窗口会很快空缺,新的大小则是通过TCP报文的Windows字段告诉,这个传输过程存在时延

流量控制

基本原理:使用滑动窗口机制,通过调整窗口大小告诉发送方其当前处理数据的能力

拥塞控制

  • 慢启动(Slow Start):TCP 连接初始阶段,发送方的拥塞窗口(Congestion Window, cwnd)从一个较小的值开始,逐步增大,以免过早引发网络拥塞。每次接收到一个确认(ACK),cwnd 值就会增大,这个增长是指数级的。
  • 拥塞避免(Congestion Avoidance):当 cwnd 增加到一个阈值(ssthresh)时,慢启动结束,进入拥塞避免阶段。此时,cwnd 的增长从指数变为线性增长,逐步提高发送速率以检测网络是否接近拥塞。
  • 快速重传(Fast Retransmit):当发送方收到连续三个重复的 ACK 时,它假设有一个数据包丢失,于是立即重传丢失的数据包,而不必等待重传计时器超时。
  • 快速恢复(Fast Recovery):在快速重传之后,TCP 不像慢启动那样将 cwnd 重置为 1,而是将其减半,然后继续线性增长。这种机制可以更快地恢复传输速率。

IP

位于TCP/IP参考模型的第三层,网络层
网络层作用:实现主机与主机之间的通信,也就是点对点通信
网络层IP与数据链路层MAC的关系:MAC实现直连的两个设备间的通信;IP负责在没有直连的两个网络之间进行通信传输
在网络数据包传输过程中,IP地址并不会发生改变,但是源和目标MAC会一直变化

IP地址分类

image.png|500

A、B、C类地址

image.png|500

主机号全0指定某个网络
主机号为1,指定某个网络下的所有主机,用于广播
广播地址:用于在同一个链路相互连接的主机之间发送数据包,分为本地广播和直接广播
本地广播:在本网络内广播,广播地址的IP包会被路由器屏蔽
直接广播:在不同网络之间的广播

D、E类地址

特点:没有主机号,所以不可用于主机IP,
D类:常被用于多播;用于将包发送给特定组内的所有主机;因为广播无法穿透路由,若想给其他网段发送同样的包,则可以使用可以穿透路由的多播;前四位表示多播地址
E类:预留的分类,暂时未使用

分类的优缺点

优点:可以根据IP地址的前四位来判断IP地址属于哪个类别
缺点:同一网络下没有地址层次;A、B、C类不能很好的与现实网络匹配
缺点解决:CIDR无分类地址

CIDR无分类地址

定义:不再分类地址,32bit的IP地址被划分为两部分,前面是网络号,后面是主机号
image.png|500

子网掩码

另一种划分网络号和主机的形式,掩码就是掩盖掉主机号,剩余的就是网络号
将子网掩码和IP地址按位计算AND,就可得到网络号
image.png|500

为什么要分离网络号和主机号

答:因为两台计算机要通讯,首先要判断是否处于同一个广播域(网络地址),网络地址相同,则可以把数据包直接发送到目标主机

如何进行子网划分

子网掩码还有一个作用就是划分子网,将主机地址分为两块,子网网络地址和子网主机地址
image.png|500

路由控制

IP的网络地址用于进行路由控制,路由控制表中记录着网络地址与下一步应该发送至路由器的地址;主机和路由器上都有各自的路由器控制表
发送IP包时,如果存在多种相同网络地址的记录,选择相同位数最多的网络地址,也就是最长匹配
image.png|500
环回地址:127.0.0.1

IP分片与重组

每种数据链路的最大传输单位MTU是不相同的,当IP数据包大于MTU时,IP数据包就会被分片;
经过分片之后的IP数据被重组的时候,只能由目标主机进行,路由器是不会进行重组
image.png|500
在分片传输的过程中,一个分片丢失就会造成整个IP数据报作废,TCP引入MSS,在TCP层进行分片

IPV6

亮点

  1. 可分配地址变多
  2. 可自动配置,即使没有DHCP服务器也可以实现自动分配IP地址
  3. 包头包首部长度采用固定的值40字节,去掉包头校验和,简化了首部结构,减轻了路由器负荷
  4. 有应对伪造的IP地址的网络安全功能以及防止线路窃听的功能

地址

IPV6地址长度128位,每16位为一组

结构

通过IP地址的前几位标识IP地址的种类,只要分为以下3种类型:
单播地址:用于一对一的通信;
组播地址:用于一对多的通信;
任播地址:用于通信最近的节点,最近的节点是由路由协议决定;

与IPV4的区别

image.png|500

image.png|500

  1. 取消了首部校验和字段:在数据链路层和传输层都会校验
  2. 取消分片/重新组装相关字段:不允许在中间路由器进行分片与重组,大大提高了路由器转发的速度
  3. 取消选项字段:使IPV6首部成为固定长度的40字节

ARP与RARP协议

1. ARP协议

ARP(地址解析协议)用于通过已知的IP地址获取对应的MAC地址。主机会通过广播发送ARP请求,包含目标IP地址。同一链路上的设备接收到请求后,如果目标IP地址与自己的IP一致,则返回包含自己MAC地址的ARP响应包。操作系统通常会缓存获取的MAC地址,但缓存有一定期限。

2. RARP协议

RARP(逆地址解析协议)用于通过已知的MAC地址获取IP地址。常用于嵌入式设备接入网络时,通过RARP服务器获取IP地址。

3. DHCP动态获取IP地址

DHCP(动态主机配置协议)通过四个步骤自动获取IP地址:

  • DHCP发现(DHCP Discover): 客户端通过广播发送一个DHCP发现消息,向网络中的DHCP服务器请求IP地址。
  • DHCP提供(DHCP Offer): 网络中的DHCP服务器收到发现消息后,向客户端发送一个DHCP提供消息,其中包含一个可用的IP地址以及相关的配置信息(如子网掩码、网关地址、DNS服务器等)。
  • DHCP请求(DHCP Request): 客户端收到提供消息后,向DHCP服务器发送一个请求消息,表明愿意接受所提供的IP地址和配置信息。
  • DHCP确认(DHCP Acknowledgment): DHCP服务器收到请求消息后,向客户端发送确认消息,并正式分配IP地址给客户端,客户端即可使用该IP地址进行网络通信。
    DHCP交互中使用的都是UDP广播通信
DHCP中继代理

定义:对于不同网段的IP地址分配可以由一个DHCP服务器进行统一管理
DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,而 DHCP 中继代理在收到这个广播包以后,再以单播的形式发给 DHCP 服务器。
image.png|500

NAT( Network Address Translation, 网络地址转换)

定义:同个公司、家庭、教室内的主机对外部通信时,把私有IP地址转换成公有IP地址
作用:缓解了IPV4地址耗尽的问题
image.png|500
普通的 NAT 转换没什么意义。 由于绝大多数的网络应用都是使用传输层协议 TCP 或 UDP 来传输数据 的。 因此,可以把IP 地址 + 端口号一起进行转换。 这样,就用一个全球 IP地址就可以了,这种转换技术就叫网络地址与端口转换 NAPT。

缺点

NAT/NAPT依赖于自己的转换表,因此:

  • 外部无法主动与NAT内部服务器建立连接,因为NAPT转换表没有转换记录
  • 转换表的生成与转换操作都会产生性能开销
  • 通信过程中,如果NAT路由器重启,所有TCP连接都将被重置

优化方案

改用IPV6:IPV6可用范围比较大
NAT穿透技术:让网络应用程序主动发现自己位于NAT设备之后,并且主动获取NAT设备的公有IP,并为自己建立端口映射条目
ICMP互联网控制报文协议
image.png|300

ICMP

功能

确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。 在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。
ICMP的消息会使用IP进行发送

类别
  1. 查询报文类型:用于诊断的查询信息
  2. 差错报文类型:通知出错原因的错误类型

IGMP因特网组管理协议

组播地址说明只有一组的主机能收到数据包,不在一组的主机不能收到数据包,IGMP用于管理是否在一组
image.png|500
IGMP 报文向路由器申请加入和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除非主机通过 IGMP 加入到组播组,主机申请加入到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了。
IGMP 报文采用 IP 封装,IP 头部的协议号为 2,而且 TTL 字段值通常为 1,因为 IGMP 是工作在主机与连接的路由器之间。

工作机制
常规查询与响应

image.png|500

离开组播组
  1. 网播中仍有该组播组
    image.png|500
  2. 网段中没有该组播组
    zubo.png|500

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

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

相关文章

javaee、ssm(maven)、springboot(maven)项目目录结构以及编译后文件目录存放路径

javaee项目目录结构: src下的文件或者是源码编译后都会放在WebRoot(项目根目录)文件夹\WebRoot\WEB-INF\classes目录中。 编译后的文件夹目录如下: 以上为普通的javaee项目目录结构,同maven工程目录结构是不一样的。…

Segment Anything:如何导出完整的ONNX模型?

在本文中,我将讨论 Segment Anything - 例如分割的神经网络,可用于从图像中分割任何对象而无需知道其类型。但是,这不是关于如何使用它的教程,因为它已经在官方存储库和其他类似文章中进行了描述。在这里,我将解释如何…

《计算机网络期末复习知识点大全》

目录 一、第一章 概述 1. TCP/IP分层网络体系结构、分层原因、作用 2. 时延、发送时延、传播时延 2.1 速率相关性能指标 2.1.1 速率 2.1.2 带宽 2.2 时间相关性能指标 2.2.1 发送时延 2.2.2 传播时延 2.3 考点例题 二、第二章 物理层 1. 编码与调制 2. 常用编码方…

人眼检测(单张图像-原始版)

目录 实验原理 实验代码 运行结果 改进代码 实验原理 要在C中使用OpenCV来检测图像中的人眼,你需要完成以下步骤: 安装OpenCV库并设置好开发环境。加载预训练的级联分类器(通常是用于人脸和眼睛检测的XML文件)。读取图像或视…

SQL-函数ing

1、字符串函数 # 字符函数 select concat(hello , mysql!); select lower(HELLO); select upper(hello); select lpad(01,5,-);# 左填充 select rpad(01,5,-);# 右填充 select trim( hello mysql ! );# 去除前后空格 select substring(hello mysql!,1,7);# 截取一部分字符前7…

【Java设计模式】非循环访问者模式:简化对象交互

文章目录 【Java设计模式】非循环访问者模式:简化对象交互一、概述二、非循环访问者设计模式的意图三、非循环访问者模式的详细解释及实际示例四、Java中非循环访问者模式的编程示例五、非循环访问者模式类图六、Java中何时使用非循环访问者模式八、非循环访问者模式…

XTuner微调个人小助手认知 #书生浦语大模型实战营#

1.任务: 本次的任务是使用 XTuner 微调 InternLM2-Chat-1.8B 实现自己的小助手认知,从而让模型能够个性化的回复,让模型知道他是我们的小助手,在实战营帮我们完成XTuner微调个人小助手认知的任务。并截图打卡。 任务打卡&#x…

深入探索【Hadoop】生态系统:Hive、Pig、HBase及更多关键组件(下)

🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Hadoop 2、Hadoop生态系统的构成概览 二…

【html+css 绚丽Loading】 000019 五行轮回剑

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

【云原生】Mysql 集群技术

PS:MySQL的源码编译进行实验环境操作 1、MySQL安装及初始化 (1)生成启动脚本 (2) 修改环境变量 (3)生成配置文件 (4)数据库初始化建立mysql基本数据 (5&…

UnrealEngine学习(03):虚幻引擎术语

1. 项目 虚幻引擎5项目(Unreal Engine 5 Project) 中包含游戏的所有内容。项目中包含的大量文件夹都在磁盘上,例如 Blueprints 和 Materials 。你可以按照自己的意愿命名文件夹并将其整理到项目中。虚幻编辑器(Unreal Editor&…

云网络/云探测+零信任架构初阶知识扫盲

一、关键(边界)节点 1、边界 (1)CiscoASA Firepower 思科 Firepower NGFW(下一代防火墙)是专注于威胁防御的下一代防火墙,它将多种功能完全集于一身,采用统一管理,可在…

荣耀应用商城——被下架应用申诉指南

申诉背景 为了营造良好的荣耀应用市场生态环境,保障开发者权益及提升用户体验,此流程针对应用被下架后开发者后续的具体申诉操作流程及详细介绍。 该流程适用于开发者在荣耀应用市场提交的应用,且应用当前处于被下架状态。 申诉流程 申诉定义…

PHP概述-环境搭建-开发工具安装

老师建议注册使用百度文心一言;讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞;Kimi.ai - 帮你看更大的世界 等人工智能工具软件的一个到两个,也可下载文心一言、讯飞星火、kimi等APP软件使用,对于我们在读的大二学生来说有什么…

XR虚拟拍摄和VP有什么区别

XR 虚拟拍摄技术最早源于舞台屏当中,当前衍生出“VP 虚拟制片”、“XR 扩展现实"两大类: 扩展现实(xR)拍摄,扩展是指LED屏以外区域在画面中被虚拟图形所覆盖,扩展无限的虚拟空间;现实是指LED屏为导演和演员提供肉…

51、Python之模块和包:Python的包和文件夹有何区别

引言 大学有云:“苟日新,又日新,日日新”。 看到一些教材或者文章,介绍到包的时候,一定会提到一定要在文件夹中新建一个__init__.py的文件,哪怕空文件也可以…… 我只想说,有些人的知识真的是…

等保测评与企业风险管理:构建坚实的信息安全防线

随着信息技术的飞速发展,企业在数字化转型的道路上高歌猛进。然而,随之而来的信息安全威胁也日益严峻,成为制约企业发展的关键因素。为了确保信息系统安全,等保测评作为一种重要的风险管理手段,正逐渐成为企业构建信息…

Automatic Educational Question Generation with Difficulty Level Controls

文章目录 题目摘要简介相关工作问题表述实验用户研究结论 题目 具有难度级别控制的自动教育问题生成 论文地址:https://link.springer.com/chapter/10.1007/978-3-031-36272-9_39 摘要 我们考虑自动生成各种难度的数学应用题 (MWP),以满足教师在相应教育阶段教学和…

Java 使用 POI 导出Excel,实现单元格内容为下拉选项

在使用Apache POI的库生成Excel导入模板的时候,有时候需要设置某些列只能选择下拉选项中的内容,该如何实现这个特性呢?下面是一个示例代码,演示如何实现单元格只能从下拉中选择内容。 代码 import org.apache.poi.ss.usermodel.*…

使用Vue创建cesium项目模版该如何选择?

目录 问题描述模版说明及选用建议小结 问题描述 刚入手这个项目,什么都是一知半解。使用Vue,创建Cesium项目的时候,提示需要选择一个模版(如下图所示),该如何选择项目模版选,总结如下: 模版说明…