Linux网络编程-osi、udp

网络:不同主机,进程间通信

达到不同主机之间的困难:

        解决主机之间的硬件层面的互联互通

        解决主机之间的软件层面的互联互通

广域网:进行大范围网络数据交换

IP地址:区分不同主机 唯一的(软件地址)

MAC地址:硬件地址

端口号:区分同一主机上的不同进程

网络字节序:大端(逆序)

主机字节序:小端(顺序)

1.osi七层模型

  OSI:开放系统互联模式

                应用层 :要传输的数据信息,如文件传输,电子邮件等;

                表示层:数据加密,解密操作,压缩,解压缩;

                会话层:建立数据传输通道;

                传输层:传输的方式UDP TCP 端口号

                网络层:实现数据路由 路由器 ip

                数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP

                物理层:定义物理设备标准,比如网线,光纤等传输介质  比特流  bit  0 1

2.TCP/IP模型           

        2.1五层模型

                应用层:HTTP(超文本传输协议)、HTTPS(比HTTP多一层加密协议)、FTP(文件传输协议)、TFTP(简单文件传输协议,下层选择不一样)、MQTT(消息队列遥测传输协议)

                传输层:TCP(传输控制协议)、UDP(用户数据报协议)
网络层:

                数据链路层:封装成帧,点对点通信(局域网内通信),差错检测   交换机

                物理层:定义物理设备标准,比如网线,光纤等传输介质   比特流  bit

        2.2四层模型

                 应用层:HTTP、HTTPS、FTP、TFTP、MQTT

                传输层:TCP(传输控制协议)、UDP(用户数据报协议)

                网络层: IP

                网络接口层: 网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路

3.网络层协议

        3.1IP(ipv4"32bie"\ipv6"64bit")

                                网络位:子网掩码全为1的位是ip地址的网络位

                                192.168.1.0(网段号:IP地址网络位不变,主机位全为0,则为该P地址的网段号)

                                                    广播号:192.168.1.255:IP地址网络位不变,主机位全为1
网关号:192.168.1.1

                                主机位:子网掩码全为1的位是ip地址的主机位

                                子网掩码:  255.255.255.0(前三个是网络位,最后一位是主机位)

        3.2端口号:区分同一主机上的不同进程

                *16位的数值 0-65535作用:唯一的标识一个进程每一个应用进程都有一个端口号;通讯时用来区分数据包属于哪一个进程。
Mtp :80

                FTP:20/21

                TFPT: 69

                HTTPS: 443

                MQTT:1883

ip是面向计算机的,域名是面向人的(将域名解析为ip地址  DNS"域名解析服务”)

4.udp编程常用接口

客户端:

        socket():创建网络套接字

        sendto():发送数据包

        recvfrom():接受数据包

        close():关闭套接字

int socket(int domain,int type,int protocol)
功能:创建一个通信套接字
参数:

domain:ip层协议族

        AF_INET  IP4

        AF_INET6  IP6

type:传输层使用的协议类型

        SOCK_DGRAM UDP

        SOCK_STREAM TCP

protocol:

        0按照默认协议返回值

返回值:

成功:返回套接字

失败:-1

size_t  sendto(int sockfd,const void *buf,sizeof_t len,int flags,const struct sockaddr *dest_addr,socklen_t addrlen);
功能:向通信套接字发送数据
参数:

sockfd:套接字

buf:要发送的数据的首地址

len:发送的数据的大小

flags:默认方式 0

dest_addr:保存接受方地址信息的指针

.sin_port = htons(50000)//

.sin_addr.s_adde =inet_addr("ip地址")//将地址转为un int  inet_ntoa(int 转char)

addrlen:接收方地址变量的大小

返回值:

成功:实际发送的字节数

失败:-1

服务端:

        socket()

        bind():绑定服务器当前主机的身份(IP+PORT)

        recvfrom():接收

        sendto():发送

        close():关闭

bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen)
功能:绑定当前主机的ip和进程的端口
参数:

 sockfd:套接字

addr:自己信息的地址

addrlen:地址信息的大小

返回值:

成功:0

失败:-1

 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:从套接字接受数据
参数:

sockfd:套接字

buf:存储接收到的数据的位置的首地址

len:期待接收到的字节数

flags::默认方式:0
src_addr:送发地址信息的首地址

addrlen:送发方地址变量的大小

返回值:

成功:返回接收到的字节数

失败:-1

B/S模型:browser/server 客户端(通用)(浏览器)/服务端(专用)

C/S模型:client/server 客户端(专用)/服务端(专用)

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

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

相关文章

删除 XML 格式中双引号内的空格

要使用 Shell 命令删除 XML 格式中双引号内的空格(仅处理属性值中的空格,保留标签外的空格),可以使用以下 sed 命令: sed -i :loop; s/\("[^"]*\) \([^"]*"\)/\1\2/g; t loop filename.xml命令详解…

电脑声音修复?【图文详解】电脑没有声音?声音异常

一、问题背景 在使用电脑的过程中,声音异常是很常见的问题。比如明明打开了音频文件,却听不到任何声音;或者声音忽大忽小、伴有杂音;或者更新了声卡驱动后,电脑播放不了声音了;还有可能是插入耳机后&#x…

【文献笔记】ARS: Automatic Routing Solver with Large Language Models

ARS: Automatic Routing Solver with Large Language Models https://github.com/Ahalikai/ARS-Routbench/ ARS:基于大语言模型的自动路由求解器 1. 概述 1.1. 研究背景 车辆路径问题(VRP)是一类经典的组合优化问题,广泛应用于…

RK3568笔记九十:基于web显示RTSP流

若该文为原创文章,转载请注明原文出处。 在网上看到个方案,使用web显示RTSP视频流,思路是前端传入RTSP地址,cgi通过FFMPEG接收RTSP流并保存成avi文件,在通过ffmpeg 命令把avi文件保存成mp4文件,前端在播放mp4文件。此方案需要先保存文件,在转换文件,无法实时播放。 所以…

2025年Flutter开发主流技术栈

2025年Flutter开发主流技术栈 Flutter作为一种高效、跨平台的移动应用开发框架,近年来在开发者社区中越来越受欢迎。以下是2025年Flutter开发的主流技术栈,涵盖了从核心框架到开发工具、状态管理、数据存储等多个方面。 1. 核心框架 Flutter:…

Qt 常用控件 - 1

控件概述 编程讲究的是 --- 站在巨人的肩膀上 --- 不是编写一个图形化界面上的内容 --- Qt 已经提供了很多控件了!!!提高图形化界面的开发效率!!!重点变成我们怎么使用这些已有的控件! Widge…

springdoc-openapi-ui的使用教程

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.14</version> </dependency>springdoc-openapi-ui 是一个用于生成 OpenAPI 文档的库&#xff0c;它与 Swagger 的关…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-3,(运放/三极管)

目录 1、题目 2、解答 【硬件-笔试面试题】硬件/电子工程师&#xff0c;笔试面试题-3&#xff0c;&#xff08;运放/三极管&#xff09; 这是一道大疆的笔试题 1、题目 2、解答

SQL Server 数据类型的含义、特点及常见使用场景的详细说明

数值类型 bigint 含义:用于存储大范围的整数,是 8 字节(64 位)有符号整数类型。 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 。 场景:适合存储像订单编号(可能很大)、系统中需要大范围计数的标识等,比如大型系统中大量数据的主键自增列(数据量极…

WPF的一些基础知识学习记录

路由事件 路由事件(Routed Event)是WPF事件系统的核心&#xff0c;它允许事件在元素树中传播&#xff0c;而不仅仅局限于引发事件的对象。包含以下三类&#xff1a;类型方向触发顺序典型用途示例事件​​直接事件(Direct Event)​​不路由只在源元素触发类似传统.NET事件MouseE…

【补题】Codeforces Round 1000 (Div. 2) C. Remove Exactly Two

题意&#xff1a;给一个树&#xff0c;可以从里面删去两个点&#xff0c;使连通块数量最大 思路&#xff1a;题解&#xff1a;CF2063C Remove Exactly Two - 洛谷专栏 这道题很容易想到&#xff0c;直接删去度最多的两个点就行了&#xff0c;但是这并不对&#xff0c;因为相邻…

基于php的校园招聘平台

学生&#xff1a;注册&#xff0c;登录&#xff0c;个人中心&#xff0c;学生应聘管理&#xff0c;面试邀请管理企业&#xff1a;登录&#xff0c;个人中心&#xff0c;招聘信息管理&#xff0c;学生应聘管理&#xff0c;面试邀请管理管理员&#xff1a;登录&#xff0c;个人中…

在 Ubuntu 22.04 上运行 cAdvisor 时遇到 mountpoint for cpu not found 错误

通常是由于 cgroup v2 导致的兼容性问题。Ubuntu 22.04 默认使用 cgroup v2&#xff0c;而旧版本的 cAdvisor 可能不完全支持它。以下是解决方案&#xff1a;方法 1&#xff1a;启用 cgroup v1&#xff08;推荐&#xff09;临时切换回 cgroup v1&#xff08;cAdvisor 兼容性更好…

如何让RAGFLow每次知识检索都是返回知识库中的所有文档?

在使用raglfow过程中,有时候输入的文本检索为空,要么就是只返回几条.如果想要看到所有知识库里文本返回,就得需要去到源码里修改这个参数minimum_should_match(路径:rag/utils/es_conn.py),将其设置为0%,即可返回所有文本!!

「iOS」——KVO

源码学习iOS底层学习&#xff1a;KVO 底层原理KVO注册 KVO 监听 实现 KVO 监听 移除 KVO 监听 处理变更通知 手动KVO(禁用KVO)关闭自动通知手动实现 setter 方法KVO 和线程如果 KVO 是多线程的**单线程的保证**如果没有 prior 选项**prior 选项的作用**KVO 实现原理派生类重写的…

Unreal5从入门到精通之使用 Python 编写虚幻编辑器脚本

文章目录 前言 如何运行Python 1.控制台 2.蓝图调用python python 入门 变量 数据类型 运算符 条件判断 循环 函数 模块引用 类型转换 类 类方法 继承 构造函数 unreal API 创建材质 创建材质实例 获取Content下选中资源 获取关卡中选中Actors 放置Cube 编辑器进度条 展示对话框…

Django3 - Web前端开发基础 HTML、CSS和JavaScript

网站开发可以分为前端开发和后端开发&#xff0c;前端开发是指网页设计&#xff0c;我们在浏览器看到网站的图片、文字、音乐视频等内容排版都是由前端开发人员实现的&#xff1b;后端开发是为前端开发提供实际的数据内容和业务逻辑&#xff0c;比如提供文字内容、图片和音乐视…

Nginx和Apache的区别

一。Nginx和Apache的优缺点和对比Nginx 优点Apache 优点性能与并发采用事件驱动模型&#xff0c;支持 10 万 高并发连接&#xff0c;资源&#xff08;CPU / 内存&#xff09;占用极低生态成熟&#xff0c;内置模块可直接处理动态内容&#xff0c;无需依赖第三方程序配置与部署…

前端实现可编辑脑图的方案

前端实现可编辑脑图的方案 实现可编辑脑图(Mind Map)在前端有多种方案&#xff0c;以下是一些主流的技术方案&#xff1a; 1. 基于现有开源库的方案 JavaScript 库 MindElixir: 轻量级开源脑图库&#xff0c;支持节点增删改、拖拽、导入导出等 GitHub: https://github.com/sssh…

7-大语言模型—指令理解:指令微调训练+模型微调

目录 1、指令微调的训练过程 2、指令微调数据 2.1、“指令输入” 2.2、“答案输出” 3、指令微调数据的构建方法 3.1、手动构建&#xff1a;纯人工 “出题 写答案” 3.1.1、构建流程 3.1.1.1、定义任务类型 3.1.1.2、设计指令模板 3.1.1.3、人工标注响应 3.1.2、工…