网络编程,网络协议,UDP编程

网络:
1.协议:通信双方约定的一套标准
2.国际网络通信协议标准:
1.OSI协议:
应用层 发送的数据内容
表示层 数据是否加密
会话层 是否建立会话连接
传输层 数据传输的方式
网络层 数据的路由
数据链路层 局域网内部通信
物理层 物理介质的连接
2.TCP/IP协议模型:
应用层 发送的数据内容
传输层 数据传输的方式
网络层 数据由一台主机到达另一台主机
网络接口层 物理介质连接
应用层:
FTP 文件传输协议
TFTP 简单文件传输协议
HTTP 超文本传输协议
HTTPS 安全超文本传输协议
SMTP 简单邮件传输协议
TELNET 网络终端登录协议
DNS 域名系统
..
传输层:
TCP 传输控制协议
UDP 用户数据报协议
UDP:不安全、不可靠的传输方式
UDP机制简单
UDP占用的资源开销比较小
TCP:安全、可靠的传输方式
TCP机制复杂
TCP占用的资源开销比较大
三次握手建立连接(客户端与服务器端),确认双方能够通信
通信过程中保障数据传输的完整性
四次挥手断开连接,确保数据传输的完整


网络层:
IPV4协议
IP地址
管理员IP地址形式:192.168.0.167
内存IP地址形式: 11000000.10101000.00000000.10100111
IP地址 = 网络位 + 主机位
网络位:IP地址所属的网段(局域网的编号)
主机位:局域网中的第几台主机
网段号:网络位不变,主机位全为0
广播号:网络位不变, 主机位全为1
子网掩码:每个IP地址都会搭配一个子网掩码,用来区分IP地址的网络位及主机位子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位
192.168.0.167
255.255.255.0
11000000.10101000.00000000.10100111
11111111.11111111.11111111.00000000
192.168.0.0
192.168.0.255
IP地址的划分:
公有地址
私有地址
A类:1.0.0.0 ~ 126.255.255.255
子网掩码:255.0.0.0
管理超大规模型网络 私有IP 10.0.0.0——10.255.255.255
B类:128.0.0.0 ~ 191.255.255.255
子网掩码:255.255.0.0
管理大中规模型网络
私有地址:172.16.0.0 - 172.31.255.255
C类:192.0.0.0 ~ 223.255.255.255
子网掩码:255.255.255.0
管理中小规模型网络
私有地址:192.168.0.0 ~ 192.168.255.255
D类:224.0.0.0 ~ 239.255.255.255
用于组播:255.255.255.0
E类:240.0.0.0 ~ 255.255.255.255
用于实验和研究:255.255.255.0
MAC地址:设备自带网卡的地址(该地址是唯一的)
端口号:找到同一台主机不同的应用程序
网络接口层通信方式:
网络接口层的主要功能包括:
1.将网络层的数据包封装成帧,准备发送到物理层。
2.通过物理媒介发送和接收数据帧。
3.实现数据链路层协议,如以太网协议等。
4.处理对传输介质的访问控制。
5.以及实现网络接口的配置和管理,如使用ifconfig命令查看和配置IP地址

3.命令:
1.ifconfig
2.将虚拟机IP地址设置为桥接模式:
1.点击"虚拟机"
2.点击"设置"
3.选择"网络适配器"
4.点击"桥接模式"
5.点击"确定"
3.将虚拟机桥接到无线网卡上去
1.点击"编辑"
2.点击"虚拟网络编辑器"
3.点击"更改设置"
4.已桥接至选择无线网卡
5.点击"确定"
4.修改网卡配置文件
1.sudo vim /etc/network/interfaces
2.修改文件内容为:
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet dhcp
3.保存退出
:wq
4.重启网络服务
sudo /etc/init.d/networking restart
5.测试与局域网内其余IP地址是否能够连通
ping 192.168.0.167
ping www.baidu.com
4.UDP编程:
1.套接字:
实现Linux系统下的网络通信
套接字:一次通信对象的抽象
2.socket
int socket(int domain, int type, int protocol);
功能:
创建套接字
参数:
domain: AF_INET 表示IPV4协议
type:套接字类型
SOCK_STREAM:流式套接字
SOCK_DGRAM:数据报套接字
SOCK_RAW:原始套接字
protocol:
TCP和UDP协议:0
返回值:
成功返回用来通信的文件描述符
失败返回-1
3.sendto
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
功能:
发送信息
参数:
sockfd:套接字文件描述符
buf:发送数据空间首地址
len:发送数据长度
flags:发送属性 默认为0
dest_addr:目标地址存放空间首地址
addrlen:目的地址的长度
返回值:
成功返回发送字节数
失败返回-1
struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
如果sendto对应的套接字没有绑定端口,则sendto绑定一个随机端口完成发送功能
4.inet_addr
in_addr_t inet_addr(const char *cp);
功能:
将字符串的IP地址转换为32位的地址类型
5.htons
uint16_t htons(uint16_t hostshort);
功能:
将本地字节序(小端)转换成网络大端字节序
6.bind
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:
将套接字与IP地址和端口进行绑定
参数:
addr:绑定地址结构体空间首地址
addrlen:绑定地址空间大小
返回值:
成功返回0
失败返回-1
注意:
只能绑定自己的IP地址
发送端流程:1.创建套接字
2.发送信息
3.关闭套接字
接收端流程: 1.创建套接字
2.绑定IP和Port
3.接收信息
4.关闭套接字
7.recvfrom
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
NAT: NAT是一种网络技术,用于将私有IP地址转换为公共IP地址,以便在互联网上进行通信。在NAT网络中,内部网络中的设备使用私有IP地址,这些地址通常是从RFC 1918中定义的地址块中分配的,以避免与公共IP地址冲突。NAT转换器(NAT router)是一种网络设备,它包含NAT功能,可以接收来自内部网络的数据包,并将其源IP地址和端口号转换为公共IP地址和端口号。这样,内部网络中的设备就可以通过NAT转换器与互联网上的其他设备进行通信。当外部网络中的设备尝试与内部网络中的设备通信时,NAT转换器会记录下原始的源IP地址和端口号,以便在返回的数据包中进行相应的转换。这种机制可以保护内部网络免受来自互联网的直接访问,提高网络安全性
作业:
1.自己实现发送端,从终端接收一个字符串发送给接收端
自己实现接收端,从网络中接收到一个字符串并打印
2.编写两个程序,一个发送端,一个接收端,实现一个文件跨主机的传输
相关文章:
网络编程,网络协议,UDP编程
网络: 1.协议:通信双方约定的一套标准 2.国际网络通信协议标准: 1.OSI协议: 应用层 发送的数据内容 表示层 数据是否加密 会话层 是否建立会话连接 传输层 …...
通过访存地址获取主存数据的过程
目录 1.根据访存地址在Cache中查找数据 2.如果在Cache中命中 3.如果没有命中 4.数据送CPU 5.做几道题: 主要厘清思路,中间细节需自行补充! 1.根据访存地址在Cache中查找数据 ① 访存地址的结构会根据Cache和主存之间的映射方式不同而改变。映射方式…...
sqlite3交叉编译问题(对‘fcntl64@GLIBC_2.28’未定义的引用)
使用rk3568的编译器交叉编译程序,报如下错误: libsqlite3.so:对‘fcntl64GLIBC_2.28’未定义的引用 libsqlite3.so:对‘logGLIBC_2.29’未定义的引用在网上查了下这个问题的原因可能是在GLIBC库2.28版本中, "fcn…...
每天一个数据分析题(四百九十六)- 决策树模型
回归树是可以用于回归的决策树模型,一个回归树对应着输入空间(即特征空间)的一个划分以及在划分单元上的输出值。以下哪个指标可用于回归树中的模型比较 A. Adjusted R2 B. F-measure C. AUC D. Precision & Recall 数据分析认证考试…...
七牛云 CDN 视频瘦身,为视频分发「减负增效」
随着智能设备的普及,以及各种以分享视频为主的平台的兴起,人们记录生活、分享故事的方式不再局限于文字和图片,而是越来越多地通过视频来表达。视频也不再需要复杂的制作过程,变得随手可得。 然而,视频在互联网上的爆炸…...
使用html-docx-js + fileSaver实现前端导出word
因为html-docx-js是16年的老库了,它代码里面用到的with语法现在严格模式不允许,用npm直接引入会报错,所以我们需要用其它方式引入 首先要将html-docx-js的代码放到项目中 html-docx-js/dist/html-docx.js at master evidenceprime/html-do…...
Spark2.x 入门:DStream 输出操作
在Spark应用中,外部系统经常需要使用到Spark DStream处理后的数据,因此,需要采用输出操作把DStream的数据输出到数据库或者文件系统中。 这里以《Spark2.1.0入门:DStream输出操作》中介绍的NetworkWordCountStateful.scala为基础…...
Python爬虫——简单网页抓取(实战案例)小白篇
Python 爬虫是一种强大的工具,用于从网页中提取数据。这里,我将通过一个简单的实战案例来展示如何使用 Python 和一些流行的库(如 requests 和 BeautifulSoup)来抓取网页数据。 实战案例:抓取一个新闻网站的头条新闻标…...
linux,ubuntu,使用ollama本地部署大模型llama3,模型通用,简易快速安装
文章目录 前言安装ollama启动ollama运行llama3模型查看ollama列表删除模型通过代码进行调用REST API 前言 在拥有了一条4090显卡后,那冗余的性能让你不得不去想着办法整花活,于是就想着部署个llama3,于是发现了ollama这个新大陆,…...
JS中的encodeURIComponent函数示例
JavaScript中的encodeURIComponent函数用于对字符串进行URL编码。它将字符串中的特殊字符转换为相应的编码形式,以确保字符串可以安全地嵌入到URL中。 使用encodeURIComponent函数时,它会将除了字母、数字、-、_、.、~以外的所有字符都进行编码。编码后…...
8.20 pre day bug
pre-bug1 分号省略 这些语句的分隔规则会导致一些意想不到的情形,如以下的一个示例; let m n f(bc).toString()但该语句最终会被解析为: let m n f(ab).toString();returntrue一定会被解析成 return;true;pre-bug2 Math.random()与Mat…...
位运算专题
分享丨【题单】位运算(基础/性质/拆位/试填/恒等式/思维) - 力扣(LeetCode) Leetcode 3133. 数组最后一个元素的最小值 我的答案与思路: class Solution { public: // 4 --> (100)2 7 --> (0111)2 // 5 --&g…...
HaProxy学习 —300K的TCP Socket并发连接实现(翻译)
HaProxy学习 —300K的TCP Socket并发连接实现(翻译) 1 原文链接2 原文翻译2.1 调整Linux系统参数2.2 调整HAProxy 1 原文链接 Use HAProxy to load balance 300k concurrent tcp socket connections: Port Exhaustion, Keep-alive and others࿰…...
92.WEB渗透测试-信息收集-Google语法(6)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:91.WEB渗透测试-信息收集-Google语法(5) 监控的漏洞也有很多 打…...
[数据集][目标检测]木材缺陷检测数据集VOC+YOLO格式2383张10类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2383 标注数量(xml文件个数):2383 标注数量(txt文件个数):2383 标注…...
【启明智显分享】智能音箱AI大模型一站式解决方案重塑人机交互体验,2个月高效落地
2010年左右,智能系统接入音箱市场,智能音箱行业在中国市场兴起。但大潮激荡,阿里、小米、百度三大巨头凭借自身强大的资本、技术、粉丝群强势入局,形成三足鼎立态势。经过几年快速普及,智能音箱整体渗透率极高…...
逻辑与集合论基础及其在编程中的应用
目录 第一篇文章:逻辑与集合论基础及其在编程中的深度应用 引言 命题逻辑与谓词逻辑在编程中的深入应用 集合论及其在编程中的深度运用 函数的概念及其与集合的结合 总结与应用 第一篇文章:逻辑与集合论基础及其在编程中的深度应用 引言 逻辑与集…...
【无标题】为什么 pg_rewind 在 PostgreSQL 中很重要?
文章目录 pg_rewind 的工作原理使用 pg_rewind 的要求Basic Usage of pg_rewind重要注意事项:为什么 pg_rewind 需要干净关闭?无法进行干净关闭的情况处理不正常关机结论 pg_rewind 是 PostgreSQL 中的一个实用程序,用于将一个数据库集群与另一个数据库集…...
hostapd生成beacon_ie
配置文件 /data/vendor/wifi/hostapd/hostapd_wlan0.conf 配置参数 AP启动过程:1.上层配置一些参数并根据参数生成配置文件 2.init的时候设置默认参数并加载配置文件上的参数(如果重复,以配置文件上的设置优先) 相关函数及结构…...
leetcode349:两个数组的交集
两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 public int[] intersection(int[] nums1, int[] nums2) {ArrayList<Integer> list new ArrayList<>();Has…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
【前端实战】如何让用户回到上次阅读的位置?
目录 【前端实战】如何让用户回到上次阅读的位置? 一、总体思路 1、核心目标 2、涉及到的技术 二、实现方案详解 1、基础方法:监听滚动,记录 scrollTop(不推荐) 2、Intersection Observer 插入探针元素 3、基…...
简约商务年终工作总结报告PPT模版分享
简约精致扁平化商务通用动画PPT模版,简约大气素雅商务PPT模版,商务PPT模版,商业计划书PPT模版,IOS风商务通用PPT模版,公司介绍企业宣传PPT模版,创业融资PPT模版,创意低多边形PPT模版,…...
