网络基础
协议
协议就是约定
网络协议是协议中的一种
协议分层
协议本身也是软件,在设计上为了更好的模块化,解耦合,也是设计成为层状结构的
两个视角:
小白:同层协议,直接通信
工程师:同层协议,没有直接通信,是各自使用下层提供的结构能力,完成的通信
分层可以实现解耦合,降低复杂度
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
题目链接 头一回用不是正解的方法做出来,也是比较极限,直接说做法就是二分数位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不是线程安全的,主要有以下几个问题: ①、多线程下扩容会死循环。JDK1.7 中的 HashMap 使用的是头插法插入元素,在多线程的环境下,扩容的时候就有可能导致出现环形链表,造成死循环。 JDK 8 时已经修复了这个问…...
MFC 创建Ribbon样式窗口
然后点击下一步直到完成即可...
uv 安装包
是的,你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器,由 astral.sh 团队开发,旨在替代 pip 和 pip-tools,提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**: 如果你还…...
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 开发的图书管理系统,可用于 添加、编辑、删除和管理图书信息,适合前端开发者学习 前端交互设计、Axios 数据请求 以及 Bootstrap 样…...
基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制
参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID : TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的,范围是 0 to 0xFFFE,0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级,ID越大&#…...
c++ string类 +底层模拟实现
提醒: 本片博客只是小编的听课笔记,介意勿看。 基础 包含在头文件<string>,才能使用string类似函数接口。 string常见构造类 string s1; cin>>s1;//无参构造 string s2(s1);//拷贝构造 string s1("jfksa");//传参构造 三种…...
六十分之三十七——一转眼、时光飞逝
一、目标 明确可落地,对于自身执行完成需要一定的努力才可以完成的 1.第三版分组、激励、立体化权限、智能设备、AIPPT做课 2.8本书 3.得到:头条、吴军来信2、卓克科技参考3 4.总结思考 二、计划 科学规律的,要结合番茄工作法、快速阅读、…...
Shell基础:中括号的使用
在Shell脚本中,中括号([ ... ] 和 [[ ... ]])是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法,能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…...
《基于Scapy的综合性网络扫描与通信工具集解析》
在网络管理和安全评估中,网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力,成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本,该脚本集成了 ARP 扫描、端口扫描以及 TCP…...
面经--C语言——sizeof和strlen,数组和链表,#include <>和 #include ““ #define 和typedef 内存对齐概述
文章目录 sizeof 和 strlen数组和链表总结 #include <>和 #include ""#define 和typedef内存对齐概述对齐规则示例:结构体的内存对齐分析: 内存对齐的常见规则:填充字节的计算对齐影响的实际例子 sizeof 和 strlen 特性size…...
3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案
3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中寻找文件而烦恼吗ÿ…...
【ElevenLabs葡语语音实战指南】:20年AI语音工程师亲测的5大本地化避坑清单(附实测TTS自然度评分92.7%)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs葡语语音的核心技术架构与本地化本质 ElevenLabs 的葡语语音合成并非简单地在英语模型上叠加音素映射,而是基于多语言联合训练框架构建的端到端神经语音系统,其核心依…...
国产 KVM 兼容痛点及全国产定制方案
作为标准 KVM、军工加固 KVM 产品经理,在一些项目落地过程中,我发现一个普遍问题:国产服务器、国产系统越来越普及,但市面上绝大多数 KVM 切换器,兼容性问题频发,已经成为运维短板。一、当前 KVM 最常见的兼…...
合并报表的10个基本逻辑原理,0基础也能看懂
合并报表真正的门槛不在分录,而在思维方式。单体报表做久了,容易不自觉地站在一家公司的视角去看业务,但合并报表要求你立刻跳出来,用一个“虚构的大集团”的眼睛去重新审视所有交易。这种视角切换,往往比具体的抵销技…...
避坑指南:CCPD车牌数据集预处理中,OpenCV透视变换的3个常见错误与修复方法
CCPD车牌数据集预处理实战:透视变换的3个隐蔽陷阱与工业级解决方案 当你在深夜的显示器前反复调试CCPD数据集的预处理代码,却发现透视变换后的车牌图像像被无形之手扭曲——边框错位、字符拉伸、坐标偏移。这不是算法问题,而是OpenCV实战中那…...
基于RAG与FastAPI构建AI知识库插件:从原理到实战
1. 项目概述与核心价值最近在折腾AI智能体,特别是给ChatGPT这类大语言模型加装“插件”或“工具”时,发现了一个挺有意思的项目:urantia-hub/urantia-papers-plugin。乍一看这个名字,可能很多开发者会有点懵,这到底是做…...
RK3576开发板PCIE NVMe SSD扩展实战:从硬件连接到性能优化
1. 项目概述:当开发板遇上高性能存储 最近在折腾一块基于瑞芯微RK3576的开发板,这玩意儿性能确实不错,四核A55加上一个独立的NPU,跑一些边缘计算和轻量级AI推理任务绰绰有余。但玩着玩着就发现一个问题:板载的eMMC存储…...
多智能体协作框架Agentset:从原理到实战构建AI团队
1. 项目概述:当AI智能体开始“组队打怪”最近在AI应用开发圈里,一个词的热度持续攀升:智能体(Agent)。如果说大语言模型(LLM)是学会了“思考”的大脑,那么智能体就是具备了“感知-决…...
NoFences:5分钟彻底告别Windows桌面混乱的开源分区神器
NoFences:5分钟彻底告别Windows桌面混乱的开源分区神器 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天面对杂乱的Windows桌面感到无从下手?…...
考古现场数据智能治理新范式(NotebookLM+地层学语义建模深度解析)
更多请点击: https://intelliparadigm.com 第一章:考古现场数据智能治理新范式(NotebookLM地层学语义建模深度解析) 在田野考古数字化进程中,传统地层记录存在碎片化、非结构化与语义断层三大瓶颈。NotebookLM 作为基…...
