【计算机网络】网络框架

一、网络协议和分层

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka java 配置

前言: 大家好,大家在springboot项目中,经常采用 KafkaListener 做为消费者。这个是spring为我们封装的。 但是某些情况 注解的方式并不能满足需求。这个时候就需要手动版本了。 介绍: 我们已经集成spring-Kafka 就不需要再…

leetCode 739.每日温度

题目 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: te…

el-select下拉菜单虚拟列表化(含搜索功能)

需求简介 vue2element-ui项目中,当el-select中数据量较大时,会导致页面加载和渲染卡顿。在现在的el-select的基础上使用分页或者虚拟列表的形式去处理大量的下拉菜单,保证页面的正常渲染及el-select的正常回显。 需求分析 主要涉及几个点&…

DPPE-N3中叠氮基团使得DPPE-N3能够与含有炔基的材料在铜离子的催化下发生点击化学反应,生成稳定的1,2,3-三唑环结构,2252461-33-7

一、基本信息 英文名称:DPPE-N3,DPPE-Azide 中文名称:DPPE-叠氮 CAS号:2252461-33-7 分子式:C43H83N4O9P 分子量:831.13 供应商:陕西新研博美生物科技 结构式: 二、结构特点…

算法学习第一弹——C++基础

早上好啊,大佬们。来看看咱们这回学点啥,在前不久刚出完C语言写的PTA中L1的题目,想必大家都不过瘾,感觉那些题都不过如此,所以,为了我们能更好的去处理更难的题目,小白兔决定奋发图强&#xff0…

[AcWing算法基础课]动态规划之01背包

题目链接:01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 首先,我们…

【机器学习】机器学习中用到的高等数学知识

机器学习是一个跨学科领域,涉及多种高等数学知识。以下是一些在机器学习中常用的数学概念和技术: 1. 线性代数 (Linear Algebra) 向量和矩阵:用于表示数据集和特征。矩阵运算:加法、乘法和逆矩阵等,用于计算模型参数…

FreeRTOS 24:事件组EventGroup等待、清零、获取操作

等待事件标志位xEventGroupWaitBits() 既然标记了事件的发生,那么我怎么知道他到底有没有发生,这也是需要一个函数来获 取 事 件 是 否 已 经 发 生 , FreeRTOS 提 供 了 一 个 等 待 指 定 事 件 的 函 数 — — xEventGroupWaitBits()&…

世界坐标和Local坐标的区分

TargetPos.position(-TargetPos.forward*-4)TargetPos.up*7 这是相对于TargetPos的位置进行偏移, 动态的与Target的本地坐标改变 new Vector3(TargetPos.position.x, TargetPos.position.y 7, TargetPos.position.z - 5) 这个是直接new了一个世界坐标的Vector3 &…

Ubuntu 22.04 的Python3.11.8 安装

背景 新版本的Python需要更高版本的OpenSSL 依赖。使用操作系统的SSL不然会提示缺少SSL的报错。 部署 ## Openssl部署 wget https://github.com/openssl/openssl/releases/download/openssl-3.4.0/openssl-3.4.0.tar.gz## ./config --prefix/usr/local/openssl make &&…

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …

nacos单机源码解析-服务发现和心跳检测

目录 1 服务发现 1.1 客户端 1.1.1 入口 1.1.2 定时拉取 1.1.3 总结 1.2 服务端 2 心跳检测 2.1 客户端 2.2 服务端 2.2.1 处理心跳请求 2.2.2 开启定时任务进行心跳检测 2.2.3 总结 1 服务发现 服务列表:Nacos 维护一个服务列表,记录所有已注…

在线绘制带community的蛋白质-蛋白质相互作用(PPI)网络图

导读:分子相互作用网络图揭示了细胞内部分子间的复杂相互作用。通过识别网络中密集连接的节点所形成的社区(community),可以揭示它们之间以前未知的功能联系。这些社区可能代表了具有共同功能的功能模块,对于理解细胞生…

【商城系统搭建流程】

商城系统的搭建流程可以分为以下几个步骤: 1.需求分析:确定商城系统的功能和特性,例如商品展示、购物车、订单管理、支付等。 2.系统设计:根据需求分析结果设计商城系统的架构,包括前端页面设计和后端数据库设计。 …

qt QTableView详解

1、概述 QTableView 是 Qt 框架中的一个高级视图类,用于以表格形式展示二维数据。它基于 QAbstractItemView,并与模型(通常是 QAbstractTableModel 或 QStandardItemModel)结合使用,以实现数据的展示和交互。QTableVi…

Orleans集群及Placement设置

服务端界面使用相同的clusterid和serviceid,相同ip地址,不同网关端口号和服务端口号,启动两个silo服务,并使用MySql数据库做Silo间信息同步,实现集群。 silo服务启动代码如下(从nuget下载Microsoft.Orleans…

OceanBase 4.3.3 功能解析:列存副本

OceanBase 从4.3.0 版本开始,引入了列式存储的支持。用户可以根据业务的具体需求,选择创建列存表、行存表或是行列混存表。无论选择哪种表类型,在不同的Zone内,租户使用的副本模式都是一致的。详见官网文档: https://w…

【Linux】 IPC 进程间通信(三)(消息队列 信号量)

📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 一、消息队列 💌…

如何管理PHP API版本

管理PHP API版本是确保API稳定性和兼容性的关键步骤。以下是一些有效的PHP API版本管理方法: 一、使用命名空间和类库 在PHP中,可以通过命名空间和类库来实现API版本的管理。通过为不同版本的API创建不同的命名空间,可以将它们隔离开来&…

Docker:镜像构建 DockerFile

Docker:镜像构建 DockerFile 镜像构建docker build DockerfileFROMCOPYENVWORKDIRADDRUNCMDENTRYPOINTUSERARGVOLUME 镜像构建 在Docker官方提供的镜像中,大部分都是基础镜像,他们只提供某个简单的功能,如果想要一个功能更加丰富…