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

Linux 网络基础知识总结

Linux 网络基础知识总结

1. 计算机网络体系结构

OSI七层模型
由国际化标准组织(ISO)制定,将网络通信分为七层:
物理层:比特流传输(如网线、光纤)。
数据链路层:帧传输(MAC地址、差错检测)。
网络层:路由选择(IP协议)。
传输层:端到端可靠传输(TCP/UDP)。
会话层:建立/管理会话。
表示层:数据格式转换(加密、压缩)。
应用层:用户接口(HTTP、FTP)。

TCP/IP四层模型
实际应用的工业标准:
网络接口层:对应OSI物理层+数据链路层。
网络层:IP协议(路由、寻址)。
传输层:TCP(可靠)/UDP(高效)。
应用层:整合OSI的应用层、表示层、会话层。

2. TCP协议

特点
• 面向连接、可靠传输(三次握手、四次挥手)。
• 流量控制、拥塞控制。
• 适用于对可靠性要求高的场景(文件传输、网页浏览)。

三次握手建立连接

  1. 客户端发送SYN(同步序列号)。
  2. 服务端回复SYN+ACK
  3. 客户端确认ACK

四次挥手断开连接

  1. 一方发送FIN请求断开。
  2. 另一方回复ACK确认。
  3. 另一方发送FIN请求反向断开。
  4. 初始方回复ACK确认。

数据包格式
• 包含源/目的端口、序列号、确认号、窗口大小、校验和等字段。

3. UDP协议

特点
• 无连接、不可靠传输,但开销小、速度快。
• 支持广播/组播,适用于实时应用(视频通话、DNS查询)。

数据包格式
• 仅包含源/目的端口、长度、校验和。

4. Socket编程基础

Socket类型
SOCK_STREAM:流式套接字(TCP)。
SOCK_DGRAM:数据报套接字(UDP)。
SOCK_RAW:原始套接字(直接操作IP层)。

关键函数
socket():创建套接字。
bind():绑定IP和端口。
listen()(TCP服务端):监听连接请求。
accept()(TCP服务端):接受连接。
connect()(TCP客户端):发起连接。
send()/recv()(TCP):数据传输。
sendto()/recvfrom()(UDP):无连接数据传输。

网络字节序转换
htonl()/htons():主机转网络字节序(32位/16位)。
ntohl()/ntohs():网络转主机字节序。

地址结构体

struct sockaddr_in {sa_family_t     sin_family;  // 协议族(AF_INET)in_port_t       sin_port;    // 端口(网络字节序)struct in_addr  sin_addr;    // IP地址(网络字节序)char            sin_zero[8]; // 填充对齐
};
struct in_addr {uint32_t s_addr;  // 32位IP地址
};
5. IP地址与端口

IP地址分类
• IPv4:32位(点分十进制,如192.168.1.1)。
• 特殊地址:127.0.0.1(本地回环)、INADDR_ANY(绑定所有接口)。

端口号
• 范围:
◦ 0-1023:系统保留端口(如HTTP:80)。
◦ 1024-49151:用户注册端口。
◦ 49152-65535:动态/私有端口。

6. UDP广播与组播

广播
• 地址类型:
直接广播:主机号全1(如192.168.1.255)。
受限广播255.255.255.255(仅本地网络)。
• 使用setsockopt()设置SO_BROADCAST选项。

组播
• 地址范围:
224.0.0.0~239.255.255.255
• 使用setsockopt()设置IP_ADD_MEMBERSHIP加入组播组。

7. TCP与UDP编程模型对比

TCP服务端流程

  1. socket()bind()listen()accept()send()/recv()close()
    • 需维护连接状态,适合长时间数据交互。

UDP服务端流程

  1. socket()bind()recvfrom()sendto()close()
    • 无连接,适合短报文或广播/组播场景。
8. 关键函数详解

setsockopt()
设置套接字选项(如广播、组播、超时):

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

• 常用选项:SO_REUSEADDR(端口复用)、SO_RCVTIMEO(接收超时)。

9. 总结

TCP vs UDP

特性TCPUDP
连接方式面向连接无连接
可靠性可靠(重传)不可靠
速度较慢较快
适用场景文件传输实时音视频

核心要点
• 理解网络分层模型(OSI/TCP/IP)。
• 掌握Socket编程函数及地址结构体。
• 区分TCP的可靠传输与UDP的高效传输。
• 熟悉广播/组播的实现方式。

相关文章:

Linux 网络基础知识总结

Linux 网络基础知识总结 1. 计算机网络体系结构 • OSI七层模型 由国际化标准组织(ISO)制定,将网络通信分为七层: • 物理层:比特流传输(如网线、光纤)。 • 数据链路层:帧传输&am…...

Day 8 上篇:深入理解 Linux 驱动模型中的平台驱动与总线驱动

在 Linux 内核驱动模型中,设备与驱动的组织方式不是随意堆砌,而是基于清晰的分类逻辑进行架构设计的。最核心的架构基础是“设备模型”(Device Model),而在此模型之上,各类驱动通过“平台驱动模型”与“总线…...

如何启动spark

解决:spark的bin目录下,无法启动spark问题 [roothadoop7 sbin]# ./start-all.sh ./start-all.sh:行29: /root/install/spark-2.4.0-bin-hadoop2.7/sbin/spark-config.sh: 没有那个文件或目录 ./start-all.sh:行32: /root/install/spark-2.4.0-bin-hadoo…...

Java网络编程干货

1.网络编程是什么 了解 在Java语言中,我们可以使用java.net包下的技术轻松开发出常见的网络应用程序,从而把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统&#x…...

Java实现安卓手机模拟操作

文章目录 第一部分:安卓模拟操作基础1.1 安卓输入系统概述1.1.1 输入事件传递机制1.1.2 输入事件类型 1.2 模拟操作的核心类1.2.1 Instrumentation类1.2.2 KeyEvent类1.2.3 MotionEvent类 1.3 权限要求1.3.1 普通权限1.3.2 特殊权限 第二部分:基础模拟操…...

一文讲清楚PLC、运动控制卡、运动控制器

随着工业技术的发展,工业机器人应用越来越广泛,PLC也不再是简单的可编程逻辑控制器,各个品牌厂家都推出了自己的运动控制型PLC,来实现一些运动控制功能,与此同时,运动控制卡及运动控制器也在如火如荼地发展…...

蓝桥杯备战

#include<bits/stdc.h> using namespace std; int main(){ios::sync_with_stdio(false);cin.tie(0);return 0; } 输入输出加速 ios::sync_with_stdio(false) 作用&#xff1a; 禁用 C 和 C 标准流的同步&#xff0c;使 cin/cout 速度接近 scanf/printf。 适用性&#xff…...

python保留关键字详解

一、什么是保留关键字&#xff1f; 保留关键字是Python语言中具有特殊含义和功能的词汇&#xff0c;这些词汇构成了Python的语法基础。它们不可被重新定义或用作变量名、函数名等标识符&#xff0c;在代码中承担着控制程序逻辑、定义数据结构等重要职责。 二、查看保留关键字…...

NLP中的“触发器”形式

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;触发器的设计更加依赖于文本特征&#xff0c;而非视觉特征。以下是NLP中常见的触发器类型及其实现方式&#xff1a; 1. 特定词汇或短语 定义&#xff1a;在文本中插入特定的单词、短语或符号。示例&#xff1a; 罕见…...

uView修改样式(持续更新)

场景 通过样式穿透修改uView2.0组件样式&#xff0c;用于app 注意版本不一样方法可能不同 实现 通用 .uni-body{line-height: 0; }u-input ::v-deep .u-input{height: 20.51rpx !important;padding: 0 6.59rpx !important; } ::v-deep .uni-input-input{height:50%;font-s…...

使用 Datadog 和 Slack Alerts 监控 AWS EC2

监控是大多数 IT 专业人员的关键职责之一。如果您最近正在寻找新工作&#xff0c;您可能已经注意到“监控”一词几乎出现在许多组织发布的每份职位描述中。 您可以找到各种监控工具&#xff0c;它们提供一些卓越的功能来简化您的工程工作。然而&#xff0c;Datadog 是大多数组…...

grafana/loki 部署搜集 k8s 集群日志

grafana/loki 和 grafana/loki-stack 的区别 ​Grafana 提供了多个 Helm Chart 用于在 Kubernetes 集群中部署 Loki 及相关组件,其中主要包括 grafana/loki 和 grafana/loki-stack。​它们的主要区别如下:​ 1.grafana/loki Helm Chart: 专注于 Loki 部署: 该 Chart 专门…...

【ESP32S3】GATT Server service table传送数据到调试助手

前言 在初步学习esp32蓝牙的过程中&#xff0c;借鉴了官方的GATT Server Service Table Example&#xff0c;可以在readme中看到&#xff0c;此demo是采用低功耗蓝牙的通用属性服务器来创建订阅服务和特性。如果你接触过MQTT&#xff0c;你会发现GATT Server这一特性和MQTT的订…...

《Vue Router实战教程》5.嵌套路由

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 嵌套路由 一些应用程序的 UI 由多层嵌套的组件组成。在这种情况下&#xff0c;URL 的片段通常对应于特定的嵌套组件结构&#xff0c;例如&#xff1a; 通过 Vue Router&#xff0c;你可以使用嵌套路由配置…...

小白学习java第12天:IO流之转换流

我们可能会遇到这样情况就是&#xff1a;你在读取那个文件编码类型是GBK&#xff0c;而是进行读取的的时候使用的UTF-8&#xff0c;这就会导致乱码&#xff0c;因为你没办法保证别人是用什么类型进行编写的&#xff0c;因此我们就需要转换流进行处理这种情况&#xff01; 下面…...

BERT - 直接调用transformers.BertModel, BertTokenizerAPI不进行任何微调

本节代码将使用 transformers 库加载预训练的BERT模型和分词器&#xff08;Tokenizer&#xff09;&#xff0c;并处理文本输入。 1. 加载预训练模型和分词器 from transformers import BertTokenizer, BertModelmodel_path "/Users/azen/Desktop/llm/models/bert-base-…...

如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?

MyBatis 提供了 ExecutorType.BATCH 类型&#xff0c;允许将多个 SQL 语句进行组合&#xff0c;最后统一执行&#xff0c;从而减少数据库的访问频率&#xff0c;提升性能。 以下是如何在 Spring Boot 项目中使用 MyBatis 进行批量操作的关键点&#xff1a; 1. 配置 MyBatis 使…...

传统门店VS智慧门店:电能物联网平台在连锁行业的节能应用

前言 随着连锁零售行业门店的规模化发展&#xff0c;能源消耗成为企业成本管控与可持续发展的重要课题。在当今快节奏的商业环境中&#xff0c;连锁门店的管理和运营变得越来越具有挑战性。能源数据是连锁门店的管理中重要组成部分&#xff0c;为了提高门店的能源利用效率和管…...

[ctfshow web入门] RCE 或(or)、异或(xor)、非(not)绕过

代码 这是一个python语言的&#xff0c;使用或(or)、异或(xor)、非(not)防火墙 这将根据命令提供加密后的指令&#xff0c;用法 rce_xor(list_cmd)、rce_or(list_cmd)、rce_not(list_cmd) 用来生成加密后的指令&#xff0c;这个指令是类如下面这样的&#xff0c;这些指令可以用…...

C++ 虚函数:深入理解多态的核心机制

C 虚函数&#xff1a;深入理解多态的核心机制 在 C 里&#xff0c;虚函数是实现 多态&#xff08;Polymorphism&#xff09; 的关键机制之一。透彻理解虚函数的概念、实现方式以及使用场景&#xff0c;对编写高效且可扩展的 C 代码起着至关重要的作用。本文会详细介绍 C 虚函数…...

速盾:高防CDN节点对收录有影响吗?

引言 搜索引擎收录是网站运营中至关重要的环节&#xff0c;它直接影响着网站的曝光度和流量。近年来&#xff0c;随着网络安全威胁的增加&#xff0c;许多企业开始采用高防CDN&#xff08;内容分发网络&#xff09;来保护其网站免受DDoS攻击和其他形式的网络攻击。然而&#x…...

按规则批量修改文件扩展名、删除扩展名或添加扩展名

文件的扩展名是多种多样的&#xff0c;有些不同文件的扩展名之间相互是可以直接转换的。我们工作当中最常见的就是 doc 与 docx、xls 与 xlsx、jpg 与 jpeg、html 与 htm 等等&#xff0c;这些格式在大部分场景下都是可以相互转换 能直接兼容的。我们今天要介绍的就是如何按照一…...

在Java项目中,引入【全局异常处理器】

目录 一.为什么引入全局异常处理器&#xff08;目前项目碰到了什么问题&#xff09;&#xff1f; 1.问题描述 2.与预期的差别 3.解决方案 二.解决上述问题 1.定义【业务异常类】 2.在serviceImpl层&#xff0c;手动抛出【违反唯一性约束】这个异常 3.定义【全局异常处理…...

计算机网络-TCP协议详解

TCP协议详解 2. TCP协议详解2.1 TCP协议概述2.1.1 TCP的历史背景2.1.2 TCP的设计目标2.1.3 TCP的基本特性2.1.4 TCP与其他传输协议的比较2.1.5 TCP的应用场景 2.2 TCP头部结构2.2.1 TCP头部格式2.2.2 TCP头部字段详解源端口号和目的端口号&#xff08;各16位&#xff09;序列号…...

[蓝桥杯 2023 省 A] 平方差

P9231 [蓝桥杯 2023 省 A] 平方差 题目描述 给定 L , R L,R L,R&#xff0c;问 L ≤ x ≤ R L \leq x \leq R L≤x≤R 中有多少个数 x x x 满足存在整数 y , z y,z y,z 使得 x y 2 − z 2 xy^2-z^2 xy2−z2。 输入格式 输入一行包含两个整数 L , R L,R L,R&#xff…...

隐私通信新时代:磐石云AXB平台如何重塑企业安全防线?

在数据泄露频发的当下&#xff0c;企业如何守护用户隐私&#xff1f;磐石云AXB隐私号平台以四大技术革新&#xff0c;构建通信安全堡垒。 技术突破&#xff1a; 动态号码隔离&#xff0c;隐私0泄露 AXB模式下&#xff0c;A与B的真实号码全程隐藏&#xff0c;仅通过虚拟号X中转…...

什么是八步工作法?

八步工作法&#xff0c;顾名思义&#xff0c;就是把一项工作拆分成八个步骤来完成。它的核心目的是让工作变得更有条理&#xff0c;更高效&#xff0c;避免忙而无序&#xff0c;做到事事有着落&#xff0c;件件有结果。这个方法在很多企业和单位中都有应用&#xff0c;尤其适合…...

日事清团队协作软件:智能制定计划,实时追踪任务进展,文件共享无缝协作,知识库一键沉淀成果​

我们总是有微细目标&#xff0c;日事清可以帮助团队轻松共同制定计划、同步工作进展、共享工作资料、沉淀工作成果。 日事清具体如何帮助团队&#xff1f;你可以先了解以下这些基本功能模块。 从【计划】开始 在日事清中&#xff0c;【计划】是协同办公的开始&#xff0c;邀请…...

全球变暖(蓝桥杯 2018 年第九届省赛)

题目描述 你有一张某海域 NN 像素的照片&#xff0c;. 表示海洋、 # 表示陆地&#xff0c;如下所示&#xff1a; ....... .##.... .##.... ....##. ..####. ...###. .......其中 "上下左右" 四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。 由…...

国际物流怎么找客户?选择适合自己的企业拓客平台

在国际物流行业&#xff0c;获客一直是企业发展的核心难题。无论是跨境电商、传统外贸&#xff0c;还是国际货代&#xff0c;找到精准的客户资源并高效转化&#xff0c;是决定企业能否抢占市场蓝海的关键。今天&#xff0c;我们就来聊聊如何选择一个真正适合的国际物流拓客平台…...

驱动-内核空间和用户空间数据交换

内核空间与用户控件数据交换 前面了解的字符设备中对 file_operations 结构体的进行了填充&#xff0c; 该 结构体的每一个成员都对应着一个系统调用&#xff0c; 例如 read、 write 等&#xff0c; 在字符设备相关的文章中有实验过对 调用函数进行了标志打印&#xff0c; 并没…...

智膳优选 | AI赋能的智慧食堂管理专家 —— 基于飞书多维表格和扣子(Coze)的智能解决方案

智膳优选 | AI赋能的智慧食堂管理专家 基于飞书多维表格和扣子&#xff08;Coze&#xff09;的智能解决方案 数据驱动餐饮管理&#xff0c;让每一餐都是营养与经济的完美平衡&#xff01; “智膳优选”通过整合飞书与Coze&#xff0c;将数据智能引入校园餐饮管理&#xff0…...

FCOS目标检测

一、模型框架 FCOS采用的网络架构和RetinaNet一样&#xff0c;都是采用FPN架构&#xff0c;如图2所示&#xff0c;每个特征图后是检测器&#xff0c;检测器包含3个分支&#xff1a;classification&#xff0c;regression和center-ness。 对于特征图Fi∈RHWC&#xff0c;其相对…...

Linux中动态加载两个同名so(dlopen动态链接库)

// 当前路径下 ./test1.c int Func1(int a, int b) { return ab; } //编译生成so gcc -fPIC -shared -o libTest.so test1.c // 当前路径的test2文件夹中 ./test2/test2.c int Func1(int a, int b) { return a-b; } //编译生成同名so gcc -fPIC -shared -o …...

直播电商革命:东南亚市场的“人货场”重构方程式

一、人设经济3.0&#xff1a;从流量收割到情感基建 东南亚直播战场正经历从"叫卖式促销"到"沉浸式信任"的质变&#xff0c;新加坡市场成为最佳观察样本&#xff1a; 数据印证趋势&#xff1a;Shopee直播用户日均停留28分钟&#xff0c;超短视频平台&#…...

【CF】Day30——Codeforces Round 824 (Div. 2) C + Codeforces Round 825 (Div. 2) BC1

C. Phase Shift 题目&#xff1a; 思路&#xff1a; 好题&#xff0c;值得多看 这题我们看题目就能想到一个很显然的做法&#xff0c;那就是贪心地把每一个字母换成最前面的没使用过的字母 但是这样直接写是有问题的&#xff0c;因为题目说了最后要让所有的字母成一个换&…...

STM32 模块化开发指南 · 第 2 篇 如何编写高复用的外设驱动模块(以 UART 为例)

本文是《STM32 模块化开发实战指南》的第 2 篇,聚焦于“串口驱动模块的设计与封装”。我们将从一个最基础的裸机 UART 初始化开始,逐步实现:中断支持、环形缓冲收发、模块接口抽象与测试策略,构建一个可移植、可扩展、可复用的 UART 驱动模块。 一、模块化 UART 的设计目标…...

SSRF打靶总结

文章目录 一. PortSwigger1、本地服务器的基本SSRF2、基本的目标不是漏洞机3、Referer标头的外带SSRF4、简单黑名单的SSRF黑名单绕过思路&#xff1a; 5、重定向的SSRF6. 简单的白名单SSRF白名单绕过思路&#xff1a; 二、BWAPP1. SSRF 文件包含漏洞 | 内网探测2. XXE -> S…...

第五章:5.1 ESP32物联网应用 - MQTT协议深度教程

一、MQTT协议简介 1.1 发布/订阅模式 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级物联网通信协议&#xff0c;采用发布/订阅模式&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;发送消息到指定主题&#xff08;如&…...

c++知识点

高级模板技术45&#xff1a; 模板元编程&#xff1a;这是一种在编译期进行计算和代码生成的技术。通过模板的递归展开、特化等操作&#xff0c;可以实现一些复杂的功能&#xff0c;例如编译期的计算、类型安全的容器等。例如&#xff0c;使用模板元编程可以实现一个编译期计算斐…...

【ChCore Lab 01】Bomb Lab 拆炸弹实验(ARM汇编逆向工程)

文章目录 1. 前言2. 实验代码版本问题3. 关于使用问题4. 宏观分析5. read_line 函数介绍6. phase_0 函数6.1. read_int 函数6.2. 回到 phase_0 函数继续分析6.3. 验证结果 7. phase_1 函数7.2. 验证结果 8. phase_2 函数8.1. read_8_numbers 函数8.2. 回到 phase_2 函数继续分析…...

QStackedWidget讲解

简介 QStackedWidget 类在一次仅显示1个窗口的地方提供一个窗口栈。 头文件:#include qmake:QT widgets 基类:QFrame 属性 count : const int currentIndex : int 公有槽函数 void setCurrentIndex(int index) void setCurrentWidget(QWidget *widget)信号 void current…...

宝马集团加速 ERP 转型和上云之旅

宝马集团&#xff08;BMW Group&#xff09;作为全球领先的豪华汽车和摩托车制造商&#xff0c;致力于构建更加智能、绿色、人性化的出行体验。为了支持其全球化、数字化业务战略&#xff0c;宝马集团正在进行大规模的 IT 体系升级和 ERP 云转型。该项目以“RISE with SAP S/4H…...

AutoEval:现实世界中通才机器人操作策略的自主评估

25年3月来自 UC Berkeley 和 Nvidia 的论文“AutoEval: Autonomous Evaluation of Generalist Robot Manipulation Policies in the Real World”。 可规模化且可复现的策略评估一直是机器人学习领域长期存在的挑战。评估对于评估进展和构建更优策略至关重要&#xff0c;但在现…...

ARM Cortex M内存屏障指令__dsb( )和__isb( )

ARM Cortex-M 系列处理器中的 __dsb() 和 __isb() 是内存屏障指令&#xff0c;用于确保内存操作的顺序性和可见性&#xff0c;尤其在涉及外设、多核/多线程、自修改代码或关键系统配置时至关重要。 一&#xff0c;详细说明和典型应用场景 1. __dsb()&#xff08;Data Synchron…...

deepseek热度已过?

DeepSeek的热度并没有消退&#xff0c;以下是具体表现&#xff1a; 用户使用量和下载量方面 • 日活跃用户量增长&#xff1a;DeepSeek已经成为目前最快突破3000万日活跃用户量的应用程序。 • 应用商店下载量&#xff1a;1月26日&#xff0c;DeepSeek最新推出的AI聊天机器人…...

使用 Datadog 和 Slack Alerts 监控 minikube

为什么要监控 minikube 集群&#xff1f;这是一个不错的练习&#xff0c;可以让你了解 DataDog 的设置过程并探索 K8s 指标产品。 本文将分享我的以下经验&#xff1a; 设置最新的 minikube部署示例应用程序创建 DataDog&#xff08;试用&#xff09;帐户使用 Helm 安装 Data…...

深入 Redis 持久化:从原理到企业级应用的全景图

&#x1f9e0; 什么是 Redis 持久化&#xff1f;为什么需要&#xff1f; Redis 是内存型数据库&#xff0c;默认所有数据都存在内存中&#xff0c;一旦断电&#xff0c;数据就会消失。为了避免重要数据丢失&#xff0c;Redis 提供了持久化机制&#xff0c;用于将内存中的数据保…...

NET模式下如何配置虚拟机的IP地址为静态的

1.查看网关&#xff1a; 2.找到虚拟机的网络配置文件 cd ./etc/sysconfig/network-scripts/ vim ifcfg-ens33 3.修改配置 BROWSER_ONLY"no" IPADDR192.168.122.120 NETMASK255.255.255.0 GATEWAY192.168.122.2 DNS18.8.8.8 4.重启网路服务 sudo systemctl rest…...

VMWare Workstation Pro17.6最新版虚拟机详细安装教程(附安装包教程)

目录 前言 一、VMWare虚拟机下载 二、VMWare虚拟机安装 三、运行虚拟机 前言 VMware 是全球领先的虚拟化技术与云计算解决方案提供商&#xff0c;通过软件模拟计算机硬件环境&#xff0c;允许用户在一台物理设备上运行多个独立的虚拟操作系统或应用。其核心技术可提升硬件…...