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

【计算机网络】网络框架

一、网络协议和分层

1.理解协议

什么是协议?实际上就是约定。如果用计算机语言进行表达,那就是计算机协议。

2.理解分层

分层是软件设计方面的优势(低耦合);每一层都要解决特定的问题

TCP/IP四层模型和OSI七层模型的概念

二、网络传输基本流程

1.预备知识

(1)协议报头

① 协议每一层都有,而每一个协议最终表现就是协议都要有报头

② 协议通常是通过协议报头来进行表达的

③ 每一份数据最终在被发送或者在不同的协议层中,都要有自己的报头

协议报头就相当于快递单,协议就相当于是怎么写快递单

(2)局域网简介

局域网内的两台主机可以直接通信;每一台主机都有网卡,每一张网卡都有唯一的MAC地址

MAC地址:表明自己在局域网中的唯一性

2.局域网通信原理

3.网络传输流程

4.IP地址/MAC地址

 IP地址:在网络层使用,可以实现跨网络的通信和路由(最终的地址) 

MAC地址:在数据链路层使用,可以实现局域网内部的寻址和数据传输(阶段性地址)

三、网络编程套接字

1.端口号

(1)认识端口号

我们采用端口号port来标识一台主机上进程的唯一性【ip + port = socket】

IP地址(主机在全网的唯一性)+ 该主机上的端口号(进程在主机的唯一性)=  全网唯一进程

网络通信的本质:其实就是进程间通信!

(2)注意事项

① IP保证全网唯一,port保证在主机内部的唯一性

② 进程已经有pid了,为什么要有port呢?

a)系统与网络解耦 -- 系统是系统,网络是网络,单独设置

b)需要客户端每次都能找到服务器进程,这就要求服务器进程要有一个固定的标识 -- port

③ 底层OS如何根据port找到指定的进程?通过操作系统内部维护的映射关系

2.UDP/TCP

(1)UDP 用户数据报协议:传输层协议、无连接、不可靠传输、面向数据报

(2)TCP 传输控制协议:传输层协议、有连接、可靠传输、面向字节流

这里所说的可靠/不可靠是一个中性词,没有谁好谁坏,UDP/TCP具体使用哪个要看场景

3.网络字节序 

已知计算机有大端和小端之分,为使网络程序具有可移植性 -> 规定:网络中的数据都是大端

4.socket编程接口

(1)struct sockaddr

IP + port = socket(套接字)。套接字种类很多:网络套接字、原始套接字、unix域间套接字

三种套接字就要设计三套接口吗?不用,利用struct sockaddr复用同一套接口

如果是网络套接字编程:使用socket相关函数时,传参传递struct sockaddr_in

如果是unix域间套接字编程:使用socket相关函数时,传参传递struct sockaddr_un

(2)socket常见接口

111

相关文章:

【计算机网络】网络框架

一、网络协议和分层 1.理解协议 什么是协议?实际上就是约定。如果用计算机语言进行表达,那就是计算机协议。 2.理解分层 分层是软件设计方面的优势(低耦合);每一层都要解决特定的问题 TCP/IP四层模型和OSI七层模型…...

linux nvidia/cuda安装

1.查看显卡型号 lspci |grep -i vga2.nvidia安装 2.1在线安装 终端输入(当显卡插上之后,系统会有推荐的安装版本) ubuntu-drivers devices可得到如下内容 vendor : NVIDIA Corporation model : TU104GL [Tesla T4] driver : nvid…...

硬件设备网络安全问题与潜在漏洞分析及渗透测试应用

以下笔记学习来自B站泷羽Sec: B站泷羽Sec 一、硬件设备的网络安全问题点 1.1 物理安全问题 设备被盗或损坏渗透测试视角 攻击者可能会物理接近硬件设备,尝试窃取设备或破坏其物理结构。例如,通过撬锁、 伪装成维修人员等方式进入设备存放…...

#渗透测试#SRC漏洞挖掘#CSRF漏洞的防御

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

C++ | Leetcode C++题解之第542题01矩阵

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {int m matrix.size(), n matrix[0].size();// 初始化动态规划的数组&#xff0c;所有的距离值都设置为一个很大的…...

RabbitMQ 不公平分发介绍

RabbitMQ 是一个流行的开源消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。在 RabbitMQ 中&#xff0c;消息分发策略对于系统的性能和负载均衡至关重要。默认情况下&#xff0c;RabbitMQ 使用公平分发&#xff08;Fair Dispatch&#xff09;策…...

测试实项中的偶必现难测bug--一键登录失败

问题描述:安卓和ios有出现部分一键登录失败的场景,由于场景比较极端,衍生了很多不好评估的情况。 产生原因分析: 目前有解决过多次这种行为的问题,每次的产生原因都有所不同,这边根据我个人测试和收集复现的情况列举一些我碰到的: 1、由于我们调用的是友盟的一键登录的…...

危!这些高危端口再不知道问题就大了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 端口作为网络通信的基本单元&#xff0c;用于标识网络服务和应用程序。 但某些端口由于其开放性和易受攻击的…...

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中&#xff0c;Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加&#xff0c;单一Redis实例往往难以满足高可用性和扩展性的要求。为此&#xff0c;Redis提供了两种主要的集群模式&#xff1a;Redis Sentinel和Redis Clu…...

Leetcode 罗马数字转整数

代码的算法思想可以分为以下几步&#xff1a; 建立映射表&#xff1a; 首先&#xff0c;代码使用 HashMap 来存储罗马数字字符与其对应的整数值关系。例如&#xff0c;I 对应 1&#xff0c;V 对应 5&#xff0c;以此类推。这是为了方便后续快速查找每个罗马字符对应的整数值。 …...

东方通TongWeb替换Tomcat的踩坑记录

一、背景 由于信创需要&#xff0c;原来项目的用到的一些中间件、软件都要逐步替换为国产品牌&#xff0c;决定先从web容器入手&#xff0c;将Tomcat替换掉。在网上搜了一些资料&#xff0c;结合项目当前情况&#xff0c;考虑在金蝶AAS和东方通TongWeb里面选择&#xff0c;后又…...

ceph介绍和搭建

1 为什么要使用ceph存储 什么是对象存储&#xff1f; 对象存储并没有向文件系统那样划分为元数据区域和数据区域&#xff0c;而是按照不同的对象进行存储&#xff0c;而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…...

树莓派安装FreeSWITCH

1、下载相关资源&#xff1a; # 假设所有资源都下载到/opt/目录下 cd /opt # 下载FreeSWITCH源码 git clone https://github.com/signalwire/freeswitch # 下载libks源码 git clone https://github.com/signalwire/libks # 下载sofia-sip源码 git clone https://github.com/fr…...

OpenSSL 生成根证书、中间证书和网站证书

OpenSSL 生成根证书、中间证书和网站证书 一、生成根证书&#xff08;ChinaRootCA&#xff09;二、生成中间 CA&#xff08;GuangDongCA&#xff09;三、生成网站证书&#xff08;gdzwfw&#xff09; 一、生成根证书&#xff08;ChinaRootCA&#xff09; 创建私钥&#xff1a; …...

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档&#xff0c;当时刚到公司&#xff0c;发现MySQL的业务核心库&#xff0c;超过亿条的有7张表&#xff0c;最大的表有9亿多条&#xff0c;有37张表超过5百万条&#xff0c;部分表行数如下&#xff1a; 在测试的MySQL环境 &#xff1a; pt-archiv…...

dapp获取钱包地址,及签名

npm install ethersimport {ethers} from ethers const accounts await ethereum.request({method: eth_requestAccounts}); // 获取钱包地址 this.form.address accounts[0] console.log("accounts:" this.address)const provider new ethers.BrowserProvider(…...

探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破

引言 在计算机科学中&#xff0c;Dijkstra算法是解决单源最短路径问题的经典算法&#xff0c;尤其在地图导航、网络通信和机器人路径规划等领域有着广泛应用。近期&#xff0c;学术界在此算法上取得了重大突破&#xff1a;研究人员证明了Dijkstra算法的“普遍最优性”&#xff…...

‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇

文章目录 &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️背景——一个优秀工程师必备技能&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️一、&#x1f929;&#x1f929;快速了解…...

函数式编程Stream流(通俗易懂!!!)

目录 1.Lambda表达式 1.1 基本用法 1.2 省略规则 2.Stream流 2.1 常规操作 2.1.1 创建流 2.1.2 中间操作 filter map distinct sorted limit ​编辑skip flatMap 2.1.3 终结操作 foreach count max&min collect anyMatch allMatch noneMatch …...

数据分析:转录组差异fgsea富集分析

文章目录 介绍加载R包数据链接导入数据数据预处理DE testing: 2BP vs no-BP比较limma-voomLoad steroid dataIn No-BP patientsIn 2BP patientsCompare gene expression vs bacterial mass其他系统信息介绍 转录组差异fgsea富集分析是一种基于基因集的富集分析方法,它关注的是…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...