day024-网络基础-TCP与UDP、DNS

article/2025/8/7 15:47:13

文章目录

  • 1. 李导推荐书籍
  • 2. OSI七层模型
    • 2.1 传输层
    • 2.2 网络层
      • 2.2.1 问:两端处于不同局域网的设备怎么网络通信?
    • 2.3 数据链路层
    • 2.4 物理层
    • 2.5 图解OSI七层模型
  • 3. 数据传输模式
    • 3.1 全双工
    • 3.2 半双工
    • 3.3 单工
  • 4. TCP 3次握手
    • 4.1 抓包
  • 5. TCP 4次挥手
    • 5.1 问:在TCP协议中,**三次握手**时服务端将 `ACK`和 `SYN`合并为一个包发送,但**四次挥手**时 `ACK`和 `FIN`却需要分开发送,这是为啥?
    • 5.2 抓包
  • 6. UDP抓包
    • 6.1 udp服务端
    • 6.2 udp客户端
    • 6.3 wireshark过滤
  • 7. 面试题:TCP与UDP的区别?
  • 8. DNS 域名解析协议
    • 8.1 域名结构
    • 8.2 DNS记录类型
    • 8.3 dig命令
  • 9. 思维导图

1. 李导推荐书籍

  • TCP/IP详解

在这里插入图片描述

2. OSI七层模型

  • 下层为上层提供服务;
  • 如数据链路层为网络设备建立点对点的物理链路,为网络层提供 无差错的帧传输,所以网络层才能顺利实现路由寻址并建立端到端的连接;
  • 而再此基础上,传输层才可以通过端口为应用服务提供传输支持

2.1 传输层

  • 传输层通过指定端口号管理或控制端到端的数据传输
  • 传输层的两个数据传输协议:TCP、UDP
  • TCP协议:面向可靠连接(建立连接需3次握手,断开连接需4次挥手)
  • UDP协议:不可靠连接(直接建立、断开,尽力传输数据)
  • 数据在传输层叫做数据报(udp)或段(tcp)

2.2 网络层

  • 网络层通过IP寻址为网络设置建立端到端的连接
  • 核心协议:IP协议
  • ICMP(网络控制管理协议)也属于网路层
  • 代表设备:路由器、三层交换机
  • SRC:原地址;DST:目的地址
  • 数据在网络层叫做数据包

2.2.1 问:两端处于不同局域网的设备怎么网络通信?

  • 只有具有公网IP的设备才能网络通信
  • 而大部分的网络设备处于局域网,明显依靠网关的NAT转换技术
  • 所以这两个设备是使用公网IP进行通信的
  • 但是通过这两个公网IP只能被定位到两个网关,而不是局域网的设备!
  • 因此IP地址(网络层)无法直接实现本地网络(局域网)精准寻址
  • 所以需要比IP地址更为准确的寻找网络设备的标志—MAC地址

2.3 数据链路层

  • 网络层建立的连接是逻辑链路,而数据链路层是依靠MAC地址(网卡地址)和以太网协议为网络通信建立可靠的点对点物理链路,确保数据帧的精准投递
  • 因此数据在局域网时是通过Mac地址进行通信的(IP地址为数据传输指明了方向,MAC地址为其明确了前进道路
  • Mac地址有48位
  • 数据在该层叫做数据帧
  • 代表设备:二层交换机

在这里插入图片描述

2.4 物理层

  • 物理层将数据帧转换成二进制的数据:0101……
  • 二进制依然是一堆数据,而物理链路(以太网、光纤)只能传输电信号或光信号;于是用不同的电平来表示1还是0(比如高电压是1,低电压是0),将数据转换成电信号的设备就是调制解调器
  • 而将电信号与光信号相互转换的就是光猫

2.5 图解OSI七层模型

在这里插入图片描述

3. 数据传输模式

3.1 全双工

  • 数据可同时双向传输
  • 代表设备:电话、网络、TCP通信、交换机

3.2 半双工

  • 数据可双向传输,但是同一时间只能向单向传输,需要双方设备交替进行
  • 代表设备:hub(集线器)、对讲机

3.3 单工

  • 数据只能单向传输,一方为发送端,一方为接收端
  • 代表设备:广播、收音机、键盘

4. TCP 3次握手

  • 知晓TCP实现了全双工数据通信,是理解TCP3次握手的基础
  • TCP是传输层协议,因此3次握手是与端口建立连接
  • SYN :Synchronize,同步
  • ACK:Acknowledge,确认
  • PSH:push,发送数据
  • seq:sequence,序列号

在这里插入图片描述

4.1 抓包

在这里插入图片描述

5. TCP 4次挥手

  • 四次挥手是为了断开连接
  • 也是需要断开两次单向通信线路
  • FIN:Finish,终止连接

在这里插入图片描述

5.1 问:在TCP协议中,三次握手时服务端将 ACKSYN合并为一个包发送,但四次挥手ACKFIN却需要分开发送,这是为啥?

  • 三次握手
    握手时双方尚未开始传输数据,服务端收到 SYN后可以立即同意连接(ACK)并同时发起自己的 SYN请求。此时没有数据需要处理,合并发送不会影响可靠性。
  • 四次挥手
    挥手时双方可能仍有未传输完的数据。服务端收到 FIN后,需要先 ACK确认收到关闭请求(确保对方知道已收到),然后继续发送剩余数据,最后再发送自己的 FIN关闭连接。如果强行合并 ACKFIN,可能导致数据丢失。依然是为了通信的可靠性设计的。

5.2 抓包

在这里插入图片描述

  • 第二个数据包(服务端→客户端)的ACK和FIN标志位同时置位,是TCP协议允许的优化行为
  • 如果服务端在收到客户端的 FIN没有剩余数据需要发送,可以直接合并 ACKFIN,减少交互次数。
  • 标准四次挥手ACKFIN分开发送(共4个包)。
  • 优化后的挥手ACKFIN合并发送(共3个包)。

6. UDP抓包

  • telnet仅能连接TCP端口
  • udp端口需要nc命令连接

ncNetcat 的缩写,被称为 “网络瑞士军刀”,是一个功能强大的 命令行网络工具,用于 TCP/UDP 连接监听、端口扫描、文件传输、代理转发 等。

6.1 udp服务端

  • -l:监听模式
  • -u:使用UDP传输协议
  • 创建一个udp端口
  • nc -lu 12306

6.2 udp客户端

  • 连接该端口
  • nc -u 服务端ip 12306

在这里插入图片描述

6.3 wireshark过滤

  • 过滤:udp.port==12306

在这里插入图片描述

7. 面试题:TCP与UDP的区别?

TCP(传输控制协议)UDP(数据报协议)
面向连接(3次握手、四次挥手)无连接
可靠传输不可靠传输
流量监控(检查数据是否丢失,若丢失会重新发送)尽力发送
TCP应用:Web浏览器、电子邮件、文件传输服务UDP应用:DNS、视频(直播服务)、IP语音(VoIP)

8. DNS 域名解析协议

  • DNS作用:将域名解析成ip,供网络设备访问
  • 公共DNS服务器地址:223.5.5.5,223.6.6.6,8.8.8.8,114.114.114.114……

8.1 域名结构

在这里插入图片描述

8.2 DNS记录类型

记录类型说明应用场景
A域名对应ipv4地址常用
AAAA域名对应ipv6地址常用(ipv6)
CNAME记录别名,将域名解析成域名2,网页会跳转到域名2对应的网站CDN、WAF
TXT记录对域名进行标识和说明。TXT 记录常用来做SSL数字证书
签发验证、SPF 记录(反垃圾邮件)
MX记录用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器地址企业邮箱

8.3 dig命令

dig:Domain Information Groper(域信息搜索器)是DNS查询工具

格式:dig 选项 域名 查询类型

在这里插入图片描述

  • 跟踪DNS解析过程:+trace

在这里插入图片描述

9. 思维导图

【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX


http://www.hkcw.cn/article/yVTybnyanQ.shtml

相关文章

AI赋能开源:如何借助MCP快速解锁开源项目并提交你的首个PR

引子 很多同学都梦想为开源项目贡献力量,然而现实往往是——面对庞大复杂的项目,从入门到提交第一个有实质性代码的PR,时间跨度可能长达数年。传统路径通常是先从文档贡献开始,逐步深入理解项目架构,最终才能进行代码…

智能问数技术路径对比:NL2SQL vs NL2Semantic2SQL

在人工智能浪潮席卷数据分析领域的当下,“智能问数”凭借其自然语言交互的便捷性,迅速成为企业提升数据民主化与决策效率的焦点。大语言模型(LLM)展现出的强大语言理解和生成能力,无疑为这一愿景启动了引擎。 然而&am…

QT-Creator安装教程(windows)

目录 1,下载 1.1 镜像源下载 1.2 运行下载的exe文件 1.2.1 QT5 版本安装 1.2.2 QT6 版本安装 1.2.3 如何在安装完成之后,继续添加扩展包 1,下载 1.1 镜像源下载 地址:Index of /qtproject/ 根据电脑系统选择下载linux、macO…

Warm-Flow发布1.7.3 端午节(设计器流和流程图大升级)

Warm-Flow发布1.7.3 端午节(设计器流和流程图大升级) 更新内容项目介绍功能思维导图演示地址官网Warm-Flow视频 更新内容 [feat] 新版流程图通过前端渲染[perf] 美化流程设计器ui[feat] 办理人权限处理器,新增办理人转换接口,比如…

分布式锁Redisson使用

redission为我们提供了方便使用redis集群的方法&#xff0c;可以使用它完成锁的建立。 依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.36.0</version></dependency>spring引…

Unity UI系统中RectTransform详解

一、基础代码示例 public GameObject node; var rect node.GetComponent<RectTransform>();Debug.Log($"anchoredPosition----{rect.anchoredPosition}"); Debug.Log($"offsetMin.x--{rect.offsetMin}"); Debug.Log($"offsetMax.x--{rect.of…

神经网络(Neural Networks)

设计神经网络的最初动机是编写能够模仿人类大脑学习和思考方式的软件。现今&#xff0c;神经网络也被称为人工神经网络&#xff0c;其工作方式已经与我们所认为的大脑实际工作方式和学习方式大不相同。 研究神经网络的工作始于 20 世纪 50 年代&#xff0c;之后的一段时间它并不…

DeepSeek‑R1-0528 重磅升级:蚂蚁百宝箱免费、无限量调用

DeepSeek‑R1-0528 重磅升级&#xff1a;蚂蚁百宝箱免费、无限量调用 端午假期前一天&#xff0c;DeepSeek‑R1 更新到了 0528 版本&#xff01; 官方说明&#xff1a;0528 版本在深度思考与推理能力方面显著增强——在数学、编程与通用逻辑等多项基准测评中&#xff0c;表现已…

可定制化货代管理系统,适应不同业务模式需求!

在全球化贸易的浪潮下&#xff0c;货运代理行业扮演着至关重要的角色。然而&#xff0c;随着市场竞争的日益激烈&#xff0c;货代企业面临着越来越多的挑战&#xff1a;客户需求多样化、业务流程复杂化、运营成本上升、利润空间压缩……这些挑战迫使货代企业不断寻求创新和突破…

使用基于Xsens惯性传感器的动作捕捉技术测量人体工程学

由于单调和片面的体力消耗&#xff0c;牙科领域的从业者患肌肉骨骼疾病 (MSD) 的几率很高。惯性测量单元 (IMU) 越来越成为评估工作姿势风险的焦点。因此&#xff0c;本研究旨在使用基于惯性传感器的运动捕捉 (MoCap) 评估人体工程学讲座和培训干预对牙科助理学生的姿势风险和M…

设计模式之结构型:桥接模式

桥接模式(Bridge Pattern) 定义 桥接模式是一种​​结构型设计模式​​&#xff0c;通过​​将抽象部分与实现部分分离​​&#xff0c;使它们可以独立变化。它通过组合代替继承&#xff0c;解决多层继承导致的类爆炸问题&#xff0c;适用于​​多维度变化​​的场景(如形状与颜…

Spring Boot 3 整合 MQ 构建聊天消息存储系统

引子 在构建实时聊天服务时&#xff0c;我们既要保证消息的即时传递&#xff0c;又需要对消息进行持久化存储以便查询历史记录。然而&#xff0c;直接同步写入数据库在高并发场景下容易成为性能瓶颈&#xff0c;影响消息的实时性。秉承"没有什么问题是加一层解决不了的&q…

0-EATSA-GNN:基于图节点分类师生机制的边缘感知和两阶段注意力增强图神经网络(code)

code:https://github.com/afofanah/EATSA-GNN. 文章目录 Abstract1. Introduction1.1.动态图场景1.2.EATSA-GNN框架的背景化2. Background2.1.GNN边缘感知挑战2.2.GNN的可解释性问题2.3.EATSA-GNN可解释性3. Related worksAbstract 图神经网络(GNNs)从根本上改变了我们处理和…

解决开发者技能差距:AI 在提升效率与技能培养中的作用

企业在开发者人才方面正面临双重挑战。一方面&#xff0c;IDC 预测&#xff0c;到2025年&#xff0c;全球全职开发者将短缺400万人&#xff1b;另一方面&#xff0c;一些行业巨头已暂停开发者招聘&#xff0c;转而倚重人工智能&#xff08;AI&#xff09;来满足开发需求。这不禁…

内存池学习(一)

一、内存池 1、内存池所使用的内存是什么内存&#xff1f; 指的是虚拟内存&#xff08;堆空间&#xff09;&#xff0c;而不是物理内存 2、为什么会有内存池&#xff1f; 一个系统或者程序长期运行&#xff0c;突然会coredump掉&#xff0c;并且程序又频繁地分配和释放内存…

【TTS】基于GRPO的流匹配文本到语音改进:F5R-TTS

论文地址&#xff1a;https://arxiv.org/abs/2504.02407v3 摘要 我们提出了F5R-TTS&#xff0c;这是一种新颖的文本到语音(TTS)系统&#xff0c;它将群体相对策略优化(GRPO)集成到基于流匹配的架构中。 通过将流匹配TTS的确定性输出重新表述为概率高斯分布&#xff0c;我们的方…

现代密码学入门 | 现代密码学核心特点介绍

在当今互联互通的世界中&#xff0c;数字数据在全球范围内不断流动&#xff0c;安全通信和数据保护的需求从未如此迫切。现代密码学作为数字防御的先锋&#xff0c;提供了一系列复杂的技术和算法&#xff0c;以保护信息免受窥探和恶意行为的侵害。 现代密码学是从其古典前身—…

基于原生JavaScript前端和 Flask 后端的Todo 应用

Demo地址&#xff1a;https://gitcode.com/rmbnetlife/todo-app-js-flask.git Python Todo 应用 这是一个使用Python Flask框架开发的简单待办事项(Todo)应用&#xff0c;采用前后端分离架构。本项目实现了待办事项的添加、删除、状态切换等基本功能&#xff0c;并提供了直观…

【Linux 学习计划】-- 命令行参数 | 环境变量

目录 命令行参数 环境变量 环境变量的本质是什么&#xff1f; 相关配置文件 修改环境变量的相关操作 代码获取env —— environ 内建命令 结语 命令行参数 试想一下&#xff0c;我们的main函数&#xff0c;也是一个函数&#xff0c;那么我们的main函数有没有参数呢&am…

尚硅谷redis7 90-92 redis集群分片之集群扩容

90 redis集群分片之集群扩容 三主三从不够用了&#xff0c;进行扩容变为4主4从 问题&#xff1a;1.新建两个redis实例&#xff0c;怎么加入原有集群&#xff1f;2.原有的槽位分3段&#xff0c;又加进来一个槽位怎么算&#xff1f; 新建6387、6388两个服务实例配置文件新建后启…