linux网络编程3

24.9.19学习目录

  • 一.UDP(续)
    • 1.UDP编程
    • 2.注意点
    • 2.TFTP
      • TFTP通信过程
      • TFTP协议分析

一.UDP(续)

1.UDP编程

(1)sendto函数发送数据

向to结构体指针中指定的ip,发送UDP数据;
通过to和addrlen确定目的地址;
可以发送长度为0的数据

ssize_t sendto(int sockfd,const void *buf,size_t nbytes,int flags,const struct sockaddr *to,socklen_t addrlen);

sockfd:套接字
buf:发送数据缓冲区
nbytes:发送数据缓冲区的大小
flags:一般为0
to:指向目的主机地址结构体的指针
addrlen:to所指向内容的长度

(2)bind函数绑定
bind函数将socket套接字与本地协议的地址进行绑定

int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen);

sockfd:socket套接字
myaddr:指定特定协议的地址结构指针
addrlen:该地址结构的长度

(3)recvfrom函数接收函数
将源地址信息保存在from指向的结构中

ssize_t recvfrom(int sockfd.void *buf,size_t nbytes,int flags,struct sockaddr *from,socklen_t *addrlen);

sockfd:套接字
buf:接收数据缓冲区
nbytes:接收数据缓冲区的大小
flags:套接字标志(常为0)
from:源地址结构体指针,用来保存数据的来源
addrlen:from所指内容的长度

注意:
from和addrlen可以为NULL,表示不保存数据来源

2.注意点

(1)客户端
在客户端的代码中,指设置了目的IP、目的端口,而客户端的IP和端口都是linux系统底层自动给客户端分配的;
分配端口的方法时随机分配;

(2)服务端
因为服务器需要固定本地端口,所以需要进行bind;
服务器也可以主动给客户端发送数据;
客户端可以进行bind,但一般不必要

2.TFTP

TFTP为简单文件传送协议;
其是基于UDP协议实现的,因此在应用层中想要使用TFTP,那么传输层就一定要是UDP;
和UDP一样是不进行用户有效认证;

数据传输模式:

  • octet:二进制模式
  • netascii:文本模式
  • mail:已经不再支持

TFTP通信过程

在这里插入图片描述

  1. 服务器等待客户端的请求
  2. 服务器接收到请求后,使用临时端口与客户端进行通信
  3. 发送长度为512Byte的数据,数据包的编号从1开始增加
  4. 每个数据包都要得到ACK的确认,当出现超时时,则重新发送最近一次的数据包
  5. 当数据包是大小小于512Byte时表示传输结束

TFTP协议分析

在这里插入图片描述
读写请求中操作码为1或2,代表为读或写,即上传或下传;
以上的0代表的是“\0”;

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

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

相关文章

时间复杂度的常用符号+渐进时间复杂度分析

时间复杂度的常用符号 Θ \Theta Θ 如果 f ( n ) Θ ( g ( n ) ) f(n)\Theta(g(n)) f(n)Θ(g(n)),则 f ( n ) f(n) f(n) 与 g ( n ) g(n) g(n) 同阶。(阶是指 f ( n ) f(n) f(n) 的指数,比如 n 2 n^2 n2 高于 n n n) O O …

MacOS安装homebrew,jEnv,多版本JDK

1 安装homebrew homebrew官网 根据官网提示,运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后,bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…

海康威视摄像机和录像机的监控与回放

文章目录 海康威视摄像机和录像机的监控与回放1、海康威视监控设备简介1.1、摄像机二次开发1.1.1:协议选择 1.2:web集成1.2:标准协议对接1.2.1:ffmpeg软件转流1.2.2:开源监控软件shinobi1.2.3:使用nginx的R…

黑神话悟空mac可以玩吗

黑神话悟空mac上能不能玩对于苹果玩家来说很重要,那么黑神话悟空mac可以玩吗?目前是玩不了了,没有针对ios系统的版本,只能之后在云平台上找找了,大家可以再观望下看看。 黑神话悟空mac可以玩吗 ‌使用CrossOver‌&…

【海康威视面经】

海康威视面经 Java基础java常用集合 及其优缺点ArrayListVectorLinkedList Jvm调优监控发现问题工具分析问题 :性能调优GC频繁 出现内存泄漏 内存溢出CPU飙升 Synchronized和Volatile的比较反射线程池和new thread利弊高并发 集群 分布式 负载均衡 MySQL调优基础优化…

neo4j安装启动教程+对应的jdk配置

参考这位博主的视频教程:neo4j社区windows版下载 一、官网下载neo4j的安装包 (1)官网下载页面 (2)上一步 【download】之后,会自动下载,如果没有,点击【here】 这里可以看到一行字…

Gradio 自定义组件

如何使用 Gradio 自定义组件,Gradio 前端使用 Svelte,后端使用的 Python。如何自定义一个组件呢?Gadio 提供了类似于脚手架的命令,可以生成需要开发组件的前后和后端代码。 创建组件 运行如下命令,gradio 会自动生成…

[2025]基于微信小程序慢性呼吸系统疾病的健康管理(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新

应对数字化与可持续发展的双重挑战,开放标准是关键 在当今快速变化的商业环境中,企业不仅需要通过数字化转型提升竞争力,还面临日益严格的可持续发展要求。开放标准正在成为企业破解这一双重挑战的核心工具。The Open Group 2024生态系统架构…

【MySQL】了解并操作MySQL的缓存配置与信息

目录 一、查看缓存配置 二、查看缓存信息 查询MySQL的缓存相关信息,一般我们用两个命令: show variables like %query_cache%; show status like %qcache%; 一、查看缓存配置 查看缓存配置的相关的系统变量变量,返回给我们服务器缓存的配置…

【SQL】百题计划:SQL内置函数“LENGTH“的使用

【SQL】百题计划-20240912 方法一: Select tweet_id from Tweets where LENGTH(content) > 15;– 方法二: Select tweet_id from Tweets where CHAR_LENGTH(content)> 15;

WordPress建站钩子函数及使用

目录 前言: 使用场景: 一、常用的wordpress钩子(动作钩子、过滤器钩子) 1、动作钩子(Action Hooks) 2、过滤器钩子(Filter Hooks) 二、常用钩子示例 1、添加自定义 CSS 和 JS…

HTB-Vaccine(suid提权、sqlmap、john2zip)

前言 各位师傅大家好,我是qmx_07,今天来为大家讲解Vaccine靶机 渗透过程 信息搜集 服务器开放了 21FTP服务、22SSH服务、80HTTP服务 通过匿名登录FTP服务器 通过匿名登录到服务器,发现backup.zip文件,可能存在账号密码 发现b…

硬件工程师笔试面试——滤波器

目录 12、滤波器 12.1 基础 滤波器原理图 滤波器实物图 12.1.1 概念 12.1.2 滤波器的分类 12.1.3 滤波器的工作原理 12.1.4 滤波器的应用 12.1.5 滤波器设计的关键参数 12.2 相关问题 12.2.1 不同类型的滤波器在实际应用中的具体作用是什么? 12.2.2 如何设计一个简…

ABAP-Logger ABAP 日志记录与任何其他语言一样轻松

ABAP-Logger ABAP 日志记录与任何其他语言一样轻松 ABAP Logger SAP Logging as painless as any other language. ABAP Version: 702 or higher See the mission statement Features Record message in Application Log(BC-SRV-BAL)Display message Installation Insta…

记忆化搜索

目录 引言: 1. 什么是记忆化搜索? 2. 如何实现记忆化搜索? 一、斐波那契数 1. 题目链接:509. 斐波那契数 2. 题目描述: 3. 解法(暴搜 -> 记忆化搜索 -> 动态规划): &am…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题六

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后,请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作: systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

使用 SpringBoot 基础web开发的支持

首先导入项目相关的依赖&#xff1a; pom.xml 文件&#xff1a; 导入相关项目依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

Git使用—把当前仓库的一个分支push到另一个仓库的指定分支、基于当前仓库创建另一个仓库的分支并推送到对应仓库(mit6828)

把学习过程中遇到的Git问题汇总如下&#xff08;后续学习遇到问题会及时更新此专栏&#xff09;&#xff1a; Git原理及常用命令小结——实用版&#xff08;ing......&#xff09;、Git设置用户名邮箱-CSDN博客 解决git每次push代码到github都需要输入用户名以及密码-CSDN博客…