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

TCP/IP常用协议

TCP/IP常用协议

TCPIP之网络支撑协议

  • ARP
  • ICMP

ARP

  • ARP
  • 无故ARP
  • 代理ARP
  • RARP
ARP
  • ARP(地址解析协议)
    • ARP是网络层协议,在同一广播域内,将IP地址解析成MAC地址

在这里插入图片描述

  • ARP封装与报文格式

在这里插入图片描述

硬件类型:1(以太网)

协议类型:0x0800(IP)

硬件地址长度:6(MAC地址长度)

协议地址长度:4(IP地址长度)

操作:

1(ARP请求,二层封装广播,目的MAC为FFFF-FFFF-FFFF)

2(ARP应答,二层封装单播

  • ARP请求

在这里插入图片描述

  • ARP应答

在这里插入图片描述

  • ARP表

    ARP表的核心条目是目标设备的IP地址与其对应的物理MAC地址的绑定关系。例如:192.168.1.1 → 00:1a:2b:3c:4d:5e

    作用:当设备需发送数据时,通过查询ARP表将目标IP转换为MAC地址,确保数据帧在物理网络中正确传输

    • 路由器

      在这里插入图片描述

    • 主机

      在这里插入图片描述

  • ARP的工作流程

无故ARP
  • 请求型无故ARP
    • 使用广播方式主动发送自己IP地址的ARP
    • 请求自己IP地址的MAC地址,用于重复IP地址检测,如果收到了回应,那么就代表当前IP不可用,如果没有收到回应,那么当前IP是可以用的。

在这里插入图片描述

  • 应答型无故ARP
    • 也是广播发送自己的IP地址
    • 用于刷新其他主机或设备的ARP表
    • 用于刷新交换机的MAC地址表

在这里插入图片描述

代理ARP

在这里插入图片描述

在这里插入图片描述

代理ARP相当于现在的网关,通过代理ARP能实现不同网段的主机之间的通信。

但是这种通信法式其实是一种欺骗,我们都知道MAC地址是和IP地址向映射的,但是这种方式,两个不同网段的主机进行通信,IP地址是对方的,但是MAC地址却是路由器的,但是他们又确确实实能进行通信,所以算是一种ARP欺骗。

  • 设备默认情况

    • Cisco设备所有三层接口都默认开启了代理ARP。
    • 华为/华三设备代理ARP默认关闭
  • 工程配置要求

    • 所有三层接口都不行关闭代理ARP
RARP
  • 知道自己的MAC地址,但不知道自己的IP地址,通过RARP来获取IP地址,早期用于无盘工作站的开机引导,现在已经完全被淘汰了。
  • 已经被DHCP取代。

在这里插入图片描述

ICMP

  • ICMP
  • Ping
  • TraceRoute
  • 目标不可达
  • ICMP重定向
  • 工程配置要求
ICMP

ICMP工作在网络层,封装IP,协议号1,用于发送错误信息和控制消息。

在这里插入图片描述

Ping
  • ICMP回显报文
    • 分为类型为0,代码为0的ECHO回显应答报文和类型为8,代码为0的ECHO回显请求报文。

在这里插入图片描述

ECHO回显请求报文:

ECHO回显应答报文:

在这里插入图片描述

  • Ping

在这里插入图片描述

TraceRoute
  • 主机TraceRoute

在这里插入图片描述

  • 路由TraceRoute

在这里插入图片描述

TraceRoute 依赖 TTL机制(Time to Live,生存时间)和 ICMP/UDP协议 实现路径追踪:

  1. TTL机制
    • 探测包初始TTL值设为1,每经过一个路由器,TTL值减1。
    • 当TTL降为0时,当前路由器丢弃数据包,并向源主机发送ICMP超时消息(Type 11),其中包含路由器自身的IP地址。
  2. 逐步探测路径
    • 发送TTL=1的探测包 → 获取第一跳路由器信息。
    • 发送TTL=2的探测包 → 获取第二跳路由器信息。
    • 重复直至到达目标主机或达到最大跳数(默认30跳)

在这里插入图片描述

至于为什么这么多超时的,那是因为在公网上,为了安全着想,有很多路由功能的设备是关闭了应答请求功能的。

目标不可达
  • 网络不可达
  • 主机不可达
  • 协议不可达
  • 端口不可达
  1. 协议归属
    • 属于ICMP差错报文,类型值固定为 Type=3,通过Code字段细分具体错误原因。
    • 封装在IP数据包中(IP头部协议字段值为1),工作于网络层。
  2. 核心功能
    • 错误诊断:明确告知源主机数据包丢弃的原因(如目标主机离线、路由缺失等)。
    • 网络优化:帮助管理员快速定位故障节点,避免盲目重传

在这里插入图片描述

  • 目标不可达ICMP信息

在这里插入图片描述

ICMP重定向
  • ICMP重定向

在这里插入图片描述

ICMP重定向(ICMP Redirect)是ICMP协议的一种控制报文(类型值5),其核心功能是优化网络路径选择。当路由器检测到主机使用非最优路由时,会主动向源主机发送此报文,指示其修改路由表,将数据直接发送至更优的下一跳设备。

ICMP重定向(ICMP Redirect)是ICMP协议的一种控制报文(类型值5),其核心功能是优化网络路径选择。当路由器检测到主机使用非最优路由时,会主动向源主机发送此报文,指示其修改路由表,将数据直接发送至更优的下一跳设备。以下是详细解析:


🔍 一、核心原理

  1. 触发条件
    路由器在以下场景会发送ICMP重定向报文:

    • 入接口与出接口相同:数据包从某个接口进入,又需从同一接口转发。
    • 源IP与下一跳同网段:数据包的源IP地址和最优下一跳IP地址属于同一子网。
    • 非源路由数据包:数据包未指定强制路径(源路由选项)。
    • 路由器拥有目标路由:路由器需知晓更优路径。
  2. 报文结构

    字段作用
    Type(类型)5标识为ICMP重定向报文
    Code(代码)0-3细化类型(0:网络重定向;1:主机重定向)
    Gateway Address(网关地址)IPv4地址指定更优的下一跳IP地址
    Original IP Header(原始IP头)可变包含触发重定向的数据包头前64比特

⚙️ 二、工作流程

以典型拓扑为例(主机→默认网关R1→目标网关R2):

  1. 主机发送数据:主机将跨网段数据包发送至默认网关R1(如192.168.1.253)。
  2. 网关检测非最优路径:R1发现目标IP(如192.168.3.1)与R2(192.168.1.254)直连同一网段。
    • 满足入/出接口相同且源IP与下一跳同网段条件。
  3. 发送重定向报文:
    • R1转发原始数据包至R2。
    • 同时向主机发送ICMP重定向报文,建议新网关为R2(192.168.1.254)。
  4. 主机更新路由表:
    • 支持重定向的主机(如Windows)添加一条主机路由(目标IP→R2的MAC)。
    • 后续数据包直连R2,跳过R1。

💡 示例:主机访问192.168.3.1时,原路径主机→R1→R2优化为主机→R2,减少一跳延迟。


⚖️ 三、优缺点分析

优点缺点
自动优化路径:减少冗余路由,降低延迟。安全隐患攻击者可伪造重定向报文,劫持流量(如中间人攻击)。
简化主机配置:主机无需维护复杂路由表。性能开销:维护大量主机路由可能消耗主机资源。
增加网络流量:重定向报文额外占用带宽

说白了就是攻击者可以发送一个ICMP重定向报文给你,然后修改你的网关变成攻击者的IP,那么你的上网流量就会从攻击者的电脑经过,安全风险很高。

工程配置要求
  • interface FastEthernet1/0
  • no ip proxy-arp //关闭代理APP
  • no ip directed-broadcast //关闭定向广播
  • no ip unreachables //关闭ICMP目标不可达
  • no ip redirect //关闭ICMP重定向

TCP/IP应用协议

  • 常见TCP应用协议
  • 常见UDP应用协议
  • DNS
  • FTP
  • Telnet
  • 常用网络命令

常见TCP应用协议

在这里插入图片描述

常见UDP应用协议

在这里插入图片描述

DNS(域名解析协议)

  • 主机名与IP地址映射需求
    • IP地址难于记忆
    • 能否用便于记忆的名字来映射IP地址

在这里插入图片描述

  • Hosts文件
    • Hosts文件是主机本地文件,记录了主机名和IP地址的对应信息

在这里插入图片描述

  • DNS域名解析
    • DNS系统采用客户机/服务器架构,封装于UDP,服务器端口号53

在这里插入图片描述

  • 域名
    • DNS域名是一种分级结构,每一级域名都由字母和数字组成,不分大小写;根域名用“.”表示,以“.”结尾的域名称为完全合格域名FQDN(Full Qualified Domain Name)

在这里插入图片描述

  • DNS域名解析过程

在这里插入图片描述

  • 递归查询

    • DNS服务器收到递归查询请求后,负责把最终结果返回给请求方,如果本地查询不到,该DNS服务器将查询其他的DNS服务器,知道查询到结果。
    • 一般客户机与本地DNS域名服务器之间采用递归查询方式。
  • 迭代查询

    • DNS服务器收到迭代查询请求后,如果本地查询不到,将返回一个可能查得到的DNS服务器地址给请求者,由请求者自行查询该DNS服务器,以此类推,请求者最终查到结果。
    • 一般本地域名服务器与根域名服务器之间采用迭代查询方式。
  • 递归查询——查询请求转发

    • 如果本地查询不到,将该请求发给其他DNS服务器继续查询。

在这里插入图片描述

  • 反向DNS查询
    • 根据已知的IP地址查找主机所对应的域名
    • DNS域名树中设立了一个in-addr.arpa反向查询域用于反向查询。

在这里插入图片描述

🔄 一、DNS解析过程概览(递归 + 迭代)
1. 浏览器缓存查找
  • 浏览器会先检查自己是否缓存了该域名对应的IP地址(DNS缓存)。
  • ✅ 如果有,直接使用,解析结束。
  • ❌ 如果没有,进入下一步。

2. 操作系统缓存查找
  • 操作系统维护一个DNS缓存(比如 Windows 中的 ipconfig /displaydns)。
  • ✅ 找到就返回IP。
  • ❌ 没有则继续。

3. 本地DNS服务器(通常是ISP提供)
  • 操作系统将域名请求发送给本地DNS服务器(如你宽带运营商配置的DNS)。
  • 这个服务器一般具有递归查询能力,负责替你完成后续的查询。

📡 二、真正的DNS查询(本地DNS服务器开始递归查询)

如果本地DNS服务器自己也没有缓存,会按以下顺序发起迭代查询

步骤 1:根DNS服务器
  • 本地DNS请求根DNS服务器(全球13组,标识如 a.root-servers.net)。
  • 根服务器不返回具体IP,但会告诉你:“去找某个顶级域(TLD)服务器”。
  • 例如请求 www.example.com,根服务器返回 .com 的TLD服务器地址。

步骤 2:顶级域名(TLD)服务器
  • 本地DNS联系 .com 顶级域服务器。
  • TLD服务器会告诉你:“去找 example.com 的权威DNS服务器”。

步骤 3:权威DNS服务器
  • 本地DNS服务器向 example.com 的权威DNS服务器请求 www.example.com 的IP地址。
  • 权威DNS返回真正的 IP,比如 93.184.216.34

步骤 4:返回与缓存
  • 本地DNS拿到结果后:
    • 返回给操作系统 → 操作系统 → 返回给浏览器。
    • 同时会把结果缓存起来(缓存时间由TTL决定)。

🔁 总结流程图
浏览器 → 操作系统 → 本地DNS(递归) →根DNS → TLD服务器 → 权威DNS → 返回IP

✅ 补充说明:
项目说明
📦 DNS缓存浏览器、操作系统、本地DNS服务器都有缓存,优先级高。
⏳ TTL每个DNS记录都有“生存时间”,到期后才重新查询。
🔄 递归 vs 迭代递归:本地DNS负责一站到底;迭代:逐级跳转由本地DNS完成。
🛡️ 常见公用DNS如 8.8.8.8(Google),1.1.1.1(Cloudflare),114.114.114.114(中国)。

FTP

  • FTP协议简介

    • FTP采用客户端/服务器架构,基于TCP,采用双TCP连接方式

      • 控制连接使用TCP端口号21

      • 数据连接使用TCP端口号20

    • FTP有两种文件传输模式

      • ASCII(默认的文件传输模式)

        • 本地文件转换成标准的ASCII码再传输

        • 适用于传输文本文件

      • Binary(二进制流模式,也称为图像文件传输模式)

        • 文件按照比特流的方式进行传输
        • 使用于传送程序文件
    • FTP有两种数据传输方式

      • 主动方式
      • 被动方式
  • FTP双TCP连接方式

    • 数据连接

      • 用于传输数据,包括上传、下载、文件列表发送等。数据传输结束后数据连接将终止。
    • 控制连接

      • 用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个FTP会话期间一直保持打开。

在这里插入图片描述

  • FTP主动数据传输方式

    • 主动方式也称为PORT方式
      • FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
      • 当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输
    • 在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。
  • FTP——主动方式建立连接

在这里插入图片描述

  • FTP被动数据传输方式

    • 被动方式也称为PASV方式
      • FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
      • 当需要传输数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输
    • 在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。
  • FTP——被动方式建立连接过程

在这里插入图片描述

主动还是被动是基于服务器端来讲的。

这两种方式和和防火墙的关系:

✅ 一、基础前提(非常关键)
  • FTP用两个TCP连接
    1. 控制连接(固定端口21):用于登录、发命令。
    2. 数据连接(文件传输):用于传文件(端口是动态的)。

📡 二、主动模式(Active / PORT)

👇 建立流程:
  1. 客户端发起控制连接,连到服务端 21 端口(固定);
  2. 客户端告诉服务端:“我开了一个端口,比如 1025,你来连接我”;
  3. 服务端通过它的20端口连接回客户端的1025端口(数据连接)。
🔥 安全问题(客户端的角度):
  • 客户端需要监听一个临时端口,允许服务端从外部“入站连接”它;
  • 但是:
    • 客户端的防火墙通常禁止这种入站连接
    • 如果客户端在 NAT(如路由器后面),这个入站连接无法穿透NAT
  • 所以:主动模式在客户端有防火墙或NAT时,经常失败

🌐 三、被动模式(Passive / PASV)

👇 建立流程:
  1. 客户端发起控制连接(到服务端21端口);
  2. 客户端告诉服务端:“我处在防火墙或NAT后,请你告诉我你开放了哪个端口”;
  3. 服务端打开一个随机端口(比如 50000),告诉客户端这个端口号
  4. 客户端主动连接服务端这个端口,建立数据连接
✅ 优点(客户端主动):
  • 客户端主动发起所有连接,符合防火墙/NAT的出站规则
  • 不需要客户端暴露任何端口;
  • 所以被动模式更兼容现代网络环境

🔁 四、防火墙 & NAT 的优先级影响

项目主动模式(PORT)被动模式(PASV)
客户端发起连接✅ 控制连接是客户端主动✅ 控制+数据连接都是客户端主动
服务端发起连接❌ 服务端要连客户端的数据端口✅ 无需服务端发起连接
客户端 NAT 影响❌ 服务端连接不了内网客户端✅ 客户端主动出站,不影响
客户端防火墙影响❌ 默认拒绝外部入站连接✅ 出站连接默认允许
服务端防火墙影响✅ 开放20/21即可❌ 必须开放高位端口范围(比如50000-51000)

🔑 五、你要记住的核心优先级(结论)

▶ 对客户端防火墙友好的优先级:
被动模式 > 主动模式
▶ 对服务端配置简单性的优先级:
主动模式 > 被动模式(因为被动要开很多高位端口)

🧠 举个实际例子理解

假设你在校园网或咖啡店:

  • 你是客户端,你的电脑后面有NAT路由器 + 防火墙;
  • 你不能让服务端连回你的电脑开的小端口(被NAT/防火墙挡住);
  • 所以:你必须用被动模式,你连接服务端指定的端口(出站连接没问题)。

💡 总结一句话理解

主动模式让服务器“打电话”回客户端 —— 防火墙/NAT 可能不让你接这个电话。
被动模式让客户端“全程打电话” —— 防火墙和NAT都说“可以出门”。

Telnet

  • Telnet
    • Telnet基于客户端/服务器模式,服务器端口号23
    • Telnet需要定义了一个通用终端数据标准-NVT(Net Virtual Terminal,网络虚拟终端)结构。
    • Telnet具有简单的安全措施,登录时要求进行用户认证

在这里插入图片描述

  • Telnet工作过程
    • Telnet客户端
      • 与远程服务器建立TCP连接
      • 接收从键盘上输入的字符
      • 把输入的字符变成NVT标准格式并发送给远程服务器
      • 从远程服务器接收输出信息,并把这些信息显示在屏幕上
    • Telnet服务器
      • 接受客户端的TCP连接
      • 对客户端进行用户认证
      • 等待客户端输入命令
      • 执行客户端输入的命令
      • 把执行结果送回给客户端

SMTP与POP3

  • SMTP
    • Simple Mail Transfer Protocol-简单邮件传输协议
    • 用于发送和接收邮件
    • 端口号25
  • POP3
    • Post Office Protocol v3-邮局协议版本3
    • 用于客户端接收邮件
    • 端口号110

在这里插入图片描述

Windows常用网络命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/271622.html

相关文章:

  • sftGRPO
  • 链表算法之【删除链表的倒数第n个节点】
  • 如何将FPGA设计的验证效率提升1000倍以上(3)
  • Spark流水线数据对比组件
  • vue3实战:.ts文件中的interface定义与抛出、其他文件的调用方式
  • Vue 中使用 Cesium 实现可拖拽点标记及坐标实时显示功能
  • 投机采样(Speculative Decoding)
  • Python—数据容器
  • 【解决方法】ollama在powershell或者cmd运行时乱码报错
  • C++11 std::move与std::move_backward深度解析
  • 7、整合前几篇插件列表
  • 单片机STM32F103:DMA的原理以及应用
  • 滚筒式茶叶杀青机设计【12张+总装图】+三维图+设计说明书+绛重
  • Hugging Face Agents Course unit1笔记
  • Pycharm 报错 Environment location directory is not empty 如何解决
  • Vue2开发:使用vuedraggable实现菜单栏拖拽
  • 什么是AI Agent同步调用工具和异步调用工具?
  • python实践思路(草拟计划+方法)
  • 力扣-240.搜索二维矩阵 II
  • 【C#】PanelControl与Panel
  • 【RidgeUI AI+系列】猜密码游戏
  • miniconda 初始化 base 环境
  • 洛谷 P2880 [USACO07JAN] Balanced Lineup G-普及/提高-
  • 图神经网络 gnn 应用到道路网络拓扑结构与交通碳排放相关性。,拓扑指标量化、时空关联模型及演化机制分析
  • NVIDIA显卡驱动安装失败的解决办法(例如7-zip data error或脚本错误)
  • 数据库技术体系及场景选型方案
  • Linux操作系统之进程间通信:管道概念
  • 双立柱式带锯床cad【1张总图】+设计说明书+绛重
  • 软件发布的完整流程梳理
  • RIP和静态路由结合实验:高可用及高可靠