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

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.mrgr.cn/news/30437.html

相关文章:

  • 项目实现:云备份服务端①(文件操作、Json等工具类实现)
  • 建设工程联合体的性质如何认定?
  • 【机器学习】经典数据集鸢尾花的分类识别
  • Yocto - 使用Yocto开发嵌入式Linux系统_01 前言
  • 模型训练时CPU和GPU大幅度波动——可能是数据的读入拖后腿
  • OJ在线评测系统 思考主流OJ的实现方案 常用概念 自己的思考
  • Win32 Wmi获取设备信息
  • 总结拓展十:SAP开发计划(下)
  • ①原装进口芯片一主多从RS485通讯转换器从站转地址波特率转校验位转寄存器转停止位modbus协议转换中继器
  • 进入C++
  • Python的基础知识,帮助初学者快速上手
  • Java键盘输入语句
  • 大模型-模型架构-长上下文模型
  • 3.使用 VSCode 过程中的英语积累 - Selection 菜单(每一次重点积累 5 个单词)
  • 面试官:什么是CAS?存在什么问题?
  • 【海康威视面经】
  • gcc升级(含命令行升级、手动升级两种方式)
  • 数据结构之二叉树遍历
  • 字节推音乐生成神器 Seed-Music 支持多样化输入和精确控制
  • C++初阶学习第六弹------标准库中的string类