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

网络基础

协议

协议就是约定

网络协议是协议中的一种

协议分层

协议本身也是软件,在设计上为了更好的模块化,解耦合,也是设计成为层状结构的

两个视角:

小白:同层协议,直接通信

工程师:同层协议,没有直接通信,是各自使用下层提供的结构能力,完成的通信

分层可以实现解耦合,降低复杂度

TCP/IP协议族

为什么要有TCP/IP协议族?用来解决网络遇到的问题

距离长引入了很多问题:

  • 精准发送到指定目标
  • 传输困难
  • 丢失的风险

冯诺依曼计算机也是网络,只不过距离比较近

OS可以不同,但协议栈必须按照相同标准实现,所以不同主机才可以相互通信

TCP:传输层

IP:网络层

TCP/IP:必须实现在内核中

TCP/IP是最重要的协议,所以以此命名协议族

操作系统都是C语言写的

TCP/IP是操作系统一部分,也是C写的,TCP/IP部分C代码在所有OS都相同

协议本质就是相同的结构体,不同OS/主机使用相同结构体(相同代码),这就是协议本质

协议的朴素认识:所谓协议,就是通信双方都认识的结构化的数据类型(因为代码相同)

每台主机在局域网上,要有唯一的标识确保主机的唯一性:mac地址

以太网是局域网中的一种

为了防止数据碰撞(冲突),以太网中只允许同时存在一个数据。以太网相当于临界资源

报文=报头+有效载荷

mac & ip

ip是一直不变的,mac是一直变化的

图片

看目的ip进行路由

局域网通信,需要mac地址

一般而言,mac地址,只在局域网中有效

端口号(port)

端口号是传输层协议内容

端口号是二字节16位整数

端口号标识一个进程

0-1023 知名端口号

1024-65535:操作系统动态分派端口号

ip+端口号唯一确定一个进程

网络通信本质:进程间通信

socket:ip+地址

socket(插座)

为什么不用pid/tid,非要新建一个端口号概念?

网络和进程等解耦合,防止互相干扰

传输层中TCP/UDP协议

Transmission Control Protocol

传输控制协议

User Datagram Protocol

用户数据报协议

[细节不同]

TCP/DUP没有好坏,各有使用条件

字节流:类似水流,随便读取

数据报:类似快递,只能按照规定限制读取

网络规定,所有发送到网络的,都是大端

sockaddr

struct sockaddr

sockaddr_in

sockaddr_un

继承与多态

用sockaddr接收in/un

为什么不用void*?

  • 当时还没有void*
  • sockaddr比void*语义清楚

板书笔记

相关文章:

网络基础

协议 协议就是约定 网络协议是协议中的一种 协议分层 协议本身也是软件,在设计上为了更好的模块化,解耦合,也是设计成为层状结构的 两个视角: 小白:同层协议,直接通信 工程师:同层协议&…...

使用 EXISTS 解决 SQL 中 IN 查询数量过多的问题

在 SQL 查询中,当我们面对需要在 IN 子句中列举大量数据的场景时,查询的性能往往会受到显著影响。这时候,使用 EXISTS 可以成为一种优化的良方。 问题的来源 假设我们有两个表,orders 和 customers,我们需要查询所有…...

使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025

使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附:Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…...

Ruby Dir 类和方法详解

Ruby Dir 类和方法详解 引言 在 Ruby 中,Dir 是一个非常有用的类,用于处理文件系统中的目录。它提供了许多方便的方法来列出目录内容、搜索文件、以及处理文件系统的其他相关操作。本文将详细介绍 Ruby 的 Dir 类及其常用方法。 一、Dir 类概述 Dir …...

克隆OpenAI(基于openai API和streamlit)

utils.py: from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…...

位运算算法题

一.判断字符是否唯一 法一: 我们直接借助一个字符数组来模拟哈希表统计字符串即可,并且我们没有必要先将所有字符都放入字符数组中,边插入边判断,当我们要插入某个字符的时候,发现其已经出现了,此时必然重复…...

12 向量结构模块(vector.rs)

一vector.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓 1.SDK解压到家目录下的 rk3588_android_sdk 目录 一. 全部编译 ###安装所需环境 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g…...

Codeforces Round 863 (Div. 3) E. Living Sequence

题目链接 头一回用不是正解的方法做出来&#xff0c;也是比较极限&#xff0c;直接说做法就是二分数位dp 数位 d p dp dp 求 1 − n 1-n 1−n出现多少含 4 4 4的数字个数 这纯纯板子了 \sout{这纯纯板子了} 这纯纯板子了 设 f ( x ) f(x) f(x) 为 1 − x 1-x 1−x 中含有4的…...

一文讲解HashMap线程安全相关问题(上)

HashMap不是线程安全的&#xff0c;主要有以下几个问题&#xff1a; ①、多线程下扩容会死循环。JDK1.7 中的 HashMap 使用的是头插法插入元素&#xff0c;在多线程的环境下&#xff0c;扩容的时候就有可能导致出现环形链表&#xff0c;造成死循环。 JDK 8 时已经修复了这个问…...

MFC 创建Ribbon样式窗口

然后点击下一步直到完成即可...

uv 安装包

是的&#xff0c;你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器&#xff0c;由 astral.sh 团队开发&#xff0c;旨在替代 pip 和 pip-tools&#xff0c;提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**&#xff1a; 如果你还…...

IELTS口语练习题库

IELTS口语1-4月题库 Part 1 Gifts Have you ever sent handmade gifts to others? Yes, I have. I once made a scrapbook for my best friend’s birthday. It included photos of our memories together and some handwritten notes. She loved it because it was personal…...

图书管理系统 Axios 源码__获取图书列表

目录 核心功能 源码介绍 1. 获取图书列表 技术要点 适用人群 本项目是一个基于 HTML Bootstrap JavaScript Axios 开发的图书管理系统&#xff0c;可用于 添加、编辑、删除和管理图书信息&#xff0c;适合前端开发者学习 前端交互设计、Axios 数据请求 以及 Bootstrap 样…...

基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID &#xff1a; TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的&#xff0c;范围是 0 to 0xFFFE&#xff0c;0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级&#xff0c;ID越大&#…...

c++ string类 +底层模拟实现

提醒: 本片博客只是小编的听课笔记&#xff0c;介意勿看。 基础 包含在头文件<string>&#xff0c;才能使用string类似函数接口。 string常见构造类 string s1; cin>>s1;//无参构造 string s2(s1);//拷贝构造 string s1("jfksa");//传参构造 三种…...

六十分之三十七——一转眼、时光飞逝

一、目标 明确可落地&#xff0c;对于自身执行完成需要一定的努力才可以完成的 1.第三版分组、激励、立体化权限、智能设备、AIPPT做课 2.8本书 3.得到&#xff1a;头条、吴军来信2、卓克科技参考3 4.总结思考 二、计划 科学规律的&#xff0c;要结合番茄工作法、快速阅读、…...

Shell基础:中括号的使用

在Shell脚本中&#xff0c;中括号&#xff08;[ ... ] 和 [[ ... ]]&#xff09;是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法&#xff0c;能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…...

《基于Scapy的综合性网络扫描与通信工具集解析》

在网络管理和安全评估中&#xff0c;网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力&#xff0c;成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本&#xff0c;该脚本集成了 ARP 扫描、端口扫描以及 TCP…...

面经--C语言——sizeof和strlen,数组和链表,#include <>和 #include ““ #define 和typedef 内存对齐概述

文章目录 sizeof 和 strlen数组和链表总结 #include <>和 #include ""#define 和typedef内存对齐概述对齐规则示例&#xff1a;结构体的内存对齐分析&#xff1a; 内存对齐的常见规则&#xff1a;填充字节的计算对齐影响的实际例子 sizeof 和 strlen 特性size…...

3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案

3分钟掌握FSearch&#xff1a;Linux系统文件搜索效率提升300%的终极方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中寻找文件而烦恼吗&#xff…...

【ElevenLabs葡语语音实战指南】:20年AI语音工程师亲测的5大本地化避坑清单(附实测TTS自然度评分92.7%)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs葡语语音的核心技术架构与本地化本质 ElevenLabs 的葡语语音合成并非简单地在英语模型上叠加音素映射&#xff0c;而是基于多语言联合训练框架构建的端到端神经语音系统&#xff0c;其核心依…...

国产 KVM 兼容痛点及全国产定制方案

作为标准 KVM、军工加固 KVM 产品经理&#xff0c;在一些项目落地过程中&#xff0c;我发现一个普遍问题&#xff1a;国产服务器、国产系统越来越普及&#xff0c;但市面上绝大多数 KVM 切换器&#xff0c;兼容性问题频发&#xff0c;已经成为运维短板。一、当前 KVM 最常见的兼…...

合并报表的10个基本逻辑原理,0基础也能看懂

合并报表真正的门槛不在分录&#xff0c;而在思维方式。单体报表做久了&#xff0c;容易不自觉地站在一家公司的视角去看业务&#xff0c;但合并报表要求你立刻跳出来&#xff0c;用一个“虚构的大集团”的眼睛去重新审视所有交易。这种视角切换&#xff0c;往往比具体的抵销技…...

避坑指南:CCPD车牌数据集预处理中,OpenCV透视变换的3个常见错误与修复方法

CCPD车牌数据集预处理实战&#xff1a;透视变换的3个隐蔽陷阱与工业级解决方案 当你在深夜的显示器前反复调试CCPD数据集的预处理代码&#xff0c;却发现透视变换后的车牌图像像被无形之手扭曲——边框错位、字符拉伸、坐标偏移。这不是算法问题&#xff0c;而是OpenCV实战中那…...

基于RAG与FastAPI构建AI知识库插件:从原理到实战

1. 项目概述与核心价值最近在折腾AI智能体&#xff0c;特别是给ChatGPT这类大语言模型加装“插件”或“工具”时&#xff0c;发现了一个挺有意思的项目&#xff1a;urantia-hub/urantia-papers-plugin。乍一看这个名字&#xff0c;可能很多开发者会有点懵&#xff0c;这到底是做…...

RK3576开发板PCIE NVMe SSD扩展实战:从硬件连接到性能优化

1. 项目概述&#xff1a;当开发板遇上高性能存储 最近在折腾一块基于瑞芯微RK3576的开发板&#xff0c;这玩意儿性能确实不错&#xff0c;四核A55加上一个独立的NPU&#xff0c;跑一些边缘计算和轻量级AI推理任务绰绰有余。但玩着玩着就发现一个问题&#xff1a;板载的eMMC存储…...

多智能体协作框架Agentset:从原理到实战构建AI团队

1. 项目概述&#xff1a;当AI智能体开始“组队打怪”最近在AI应用开发圈里&#xff0c;一个词的热度持续攀升&#xff1a;智能体&#xff08;Agent&#xff09;。如果说大语言模型&#xff08;LLM&#xff09;是学会了“思考”的大脑&#xff0c;那么智能体就是具备了“感知-决…...

NoFences:5分钟彻底告别Windows桌面混乱的开源分区神器

NoFences&#xff1a;5分钟彻底告别Windows桌面混乱的开源分区神器 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天面对杂乱的Windows桌面感到无从下手&#xff1f…...

考古现场数据智能治理新范式(NotebookLM+地层学语义建模深度解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;考古现场数据智能治理新范式&#xff08;NotebookLM地层学语义建模深度解析&#xff09; 在田野考古数字化进程中&#xff0c;传统地层记录存在碎片化、非结构化与语义断层三大瓶颈。NotebookLM 作为基…...