Linux学习-网络UDP

网络


    数据传输,数据共享

网络协议模型


    OSI协议模型
        应用层              实际发送的数据
        表示层              发送的数据是否加密
        会话层              是否建立会话连接
        传输层              数据传输的方式(数据报、流式)
        网络层              数据的路由(如何从一个局域网到达另一个局域网)        IP地址
        数据链路层          局域网下如何通信
        物理层              物理介质的连接

    TCP/IP协议模型   
        应用层              传输的数据
        传输层              传输的方式
        网络层              数据如何从一台主机到达另一台主机
        网络接口层          物理介质的连接

    应用层:
        HTTP    超文本传输协议
        HTTPS   
        FTP     文件传输协议
        TFTP    简单文本传输协议
        SMTP    邮件传输协议
        MQTT    物联网交互
        TELNET   远程登陆协议
        ..
    
    传输层:
        UDP     用户数据报协议 。 不会对接收ip是否可以接受进行核验,直接发送。是否收到数据也不知道。
                特点:
                    1.实现机制简单
                    2.资源开销小
                    3.不安全不可靠

        TCP     传输控制协议   在通信之前进行三次握手。发送请求应答信号SYN。收到后回复ACK+SYN确认应答并请求对方应答。对方在发ACK应答,保证双方都是收发通讯正常。

                    数据发出后,对方没有接收完整,返回ACK告知发送方自己接受多少数据,然后发送方会再次进行缺失数据的发送以保证数据完整。

                       还可以进行流量控制。

                        关闭实现四次挥手,等待数据传输完毕才可以关闭
                特点:
                    1.实现机制复杂
                    2.资源开销大
                    3.安全可靠

    网络层:
        IPv4

        IP地址:唯一标识网络中一台主机的标号
        IP地址:网络位 + 主机位
        子网掩码:用来标识IP地址的网络位和主机位
                子网掩码是1的部分表示IP地址的网络位
                子网掩码是0的部分表示IP地址的主机位
        网段号:网络位不变,主机位全为0,表示网段号
        广播地址:网络位不变,主机位全为1,表示广播地址

端口号就是找电脑中是哪个软件需要接收信息

        IP地址类型:
        A类
            1.0.0.0 - 126.255.255.255
            子网掩码:255.0.0.0
            管理超大规模网络
            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.0.0.0
            用于组播

        E类
            240.0.0.0 - 255.255.255.255 
            用于实验

UDP编程


    socket套接字编程:
    1.发端:
        socket 
        int socket(int domain, int type, int protocol);
        功能:
            创建一个用来通信的文件描述符
        参数:
            domain:使用的协议族 AF_INET (IPv4协议族)  还有其他协议组,可在手册中查看。
            type:套接字类型
                SOCK_STREAM:流式套接字        tcp
                SOCK_DGRAM:数据报套接字  udp
                SOCK_RAW:原始套接字   协议
            protocol:协议
                默认为0 
        返回值:
            成功返回文件描述符
            失败返回-1 

        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:目的地址的长度(就是dest_addrlen的大小)
        
        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 */
        };

这是ipv4的协议结构体,要转换乘通用的要强制转化(struct sockaddr *)

        /* Internet address. */
        struct in_addr {
            uint32_t       s_addr;     /* address in network byte order */
        };
                  
        返回值:
            成功返回实际发送字节数
            失败返回-1 

        inet_addr:
        in_addr_t inet_addr(const char *cp);
        功能:  
            将字符串IP地址转换为内存中的IP地址 

        htons
        uint16_t htons(uint16_t hostshort);
        功能:
            将本地字节序转换为网络的大端字节序
        关闭close() 

1.recvfrom
    ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                        struct sockaddr *src_addr, socklen_t *addrlen);
    功能:
        从套接字中接收数据
    参数:
        sockfd:套接字文件描述符
        buf:存放数据空间首地址
        flags:属性 默认为0 
        src_addr:存放IP地址信息的空间首地址
        addrlen:存放接收到IP地址大小空间的首地址
    返回值:
        成功返回实际接收字节数
        失败返回-1 

如果要接收收据要加上

ssize_t recv_len;

socklen_t len;

len = sizeof(s);

recv_len = recvfrom(sco_num, b, sizeof(b), 0, (struct sockaddr *)&s, &len);

传长度指针,是因为当接受完了之后,该指针指向的值会改正真正结收的地址的大小

2.修改虚拟机到桥接模式:
    点击"虚拟机"
    点击"设置"
    点击"网络适配器"
    选择"桥接模式"
    点击"确定"

3.将网卡桥接到无线网卡
    点击"编辑"
    点击"虚拟网络编辑器"
    点击"更改设置"

4.在Ubuntu中重启网络服务
    sudo /etc/init.d/networking restart 

    ifconfig

2.bind 
    int bind(int sockfd, const struct sockaddr *addr,
                socklen_t addrlen);
    功能:
        在套接字上绑定一个IP地址和端口号,只能绑定自己的IP地址
    参数:
        sockfd:套接字文件描述符
        addr:绑定IP地址空间首地址
        addrlen:绑定IP地址的长度
    返回值:
        成功返回0 
        失败返回-1 


3.UDP编程:
    发端:socket -> sendto -> close 
    收端: socket -> bind -> recvfrom -> close 

练习:
    编写程序实现两台主机间传输一个文件
    ./recv 
    
    ./send 
    a.txt 

4.UDP需要注意的细节点:
    1.UDP是无连接,发端退出,收端没有任何影响
    2.UDP发送数据上限,最好不要超过1500个字节
    3.UDP是不安全不可靠的,连续且快速的传输数据容易产生数据丢失

5.wireshark
  抓包工具

  操作流程:
    1.sudo wireshark
      打开wireshark抓包工具
    2.选择抓取数据包的网卡
      any
    3.执行通信的代码
    4.停止通信
    5.设定过滤条件
        ip.addr == IP地址 
        udp 
        tcp 
        udp.port == 端口

6.UDP包头长度:8个字节
    源端口号(2个字节)
    目的端口号(2个字节)
    长度(2个字节)
    校验和(2个字节)


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

esp32上PWM呼吸灯

1、什么是pwm PWM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、工控等方面。 1.1频率 单位时间内PWM方波重复的次数 1.2占空比 一个周期内…

HarmonyOS 应用开发-根据icon自适应背景颜色

介绍 本示例将介绍如何根据图片设置自适应的背景色。 效果图预览 使用说明 转换图片为PixelMap,取出所有像素值遍历所有像素值,查找到出现次数最多的像素,即为图片的主要颜色适当修改图片的主要颜色,作为自适应的背景色 实现思…

云岚到家项目

一.项目介绍 云岚到家项目是一个家政服务o2o平台,互联网家政是继打车、外卖后的又一个风口,创业者众多,比如:58到家,天鹅到家等,o2o(Online To Offline)是将线下商务的机会与互联网…

负荷预测 | Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab…

高端大气自适应全屏酷炫渐变卡片html源码图片切换特效html5源码导航引导网站源码

源码特点: 1:手工书写DIVCSS、代码精简无冗余。 2:自适应结构,全球先进技术,高端视觉体验。 3:SEO框架布局,栏目及文章页均可独立设置标题/关键词/描述。 4:附带测试数据、安装教程、…

说说对WebSocket的理解?应用场景?

一、是什么 WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接&#xff0c…

flutter组件_AlertDialog

官方说明:A Material Design alert dialog. 翻译:一个材料设计警告对话框。 作者释义:显示弹窗,类似于element ui中的Dialog组件。 AlertDialog的定义 const AlertDialog({super.key,this.icon,this.iconPadding,this.iconColor,t…

c++的学习之路:18、容器适配器与反向迭代器

摘要 本文有可能讲的不是特别清楚,我也是初学者有的理解可能有偏差欢迎指出,文章末附上导图。 目录 摘要 一、什么是适配器 二、STL标准库中stack和queue的底层结构 三、deque 1、deque的原理介绍 2、deque的缺陷 四、反向迭代器 五、思维导图…

政安晨:【Keras机器学习实践要点】(二十一)—— MobileViT:基于变换器的移动友好图像分类模型

目录 简介 导入 超参数 MobileViT 实用程序 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! …

kafka(四)——生产者流程分析(c++)

前言 kafka生产者负责将数据发布到kafka集群的主题;kafka生产者消息发送方式有两种: 同步发送异步回调发送 流程 流程说明: Kafka Producer整体可看作是一个异步处理操作;消息发送过程中涉及两个线程:main线程和se…

JetBrains IDE(IDEA/WebStorm)配置GitHub Copilot

关于 GitHub Copilot 和 JetBrains IDE GitHub Copilot 在编写代码时提供 AI 对程序员的自动完成样式的建议。 有关详细信息,请参阅“关于 GitHub Copilot Individual”。 如果使用 JetBrains IDE,可以直接在编辑器中查看并合并来自 GitHub Copilot 的…

DXP学习002-PCB编辑器的环境参数及电路板参数相关设置

目录 一,dxp的pcb编辑器环境 1,创建新的PCB设计文档 2,PCB编辑器界面 1)布线工具栏 2)公用工具栏 3)层标签栏 ​编辑 3,PCB设计面板 1)打开pcb设计面板 4,PCB观…

线程的666种状态

文章目录 在Java中,线程有以下六种状态: NEW:新建状态,表示线程对象已经被创建但还未启动。RUNNABLE:可运行状态,表示线程处于就绪状态,等待系统分配CPU资源执行。BLOCKED:阻塞状态…

抖音在线点赞任务发布接单运营平台PHP网站源码 多个支付通道+分级会员制度

源码介绍 1、三级代理裂变,静态返佣/动态返佣均可设置。(烧伤制度)。 2、邀请二维码接入防红跳转。 3、自动机器人做任务,任务时间可设置,机器人价格时间可设置。 4、后台可设置注册即送X天机器人。 5、不同级别会…

LLM大语言模型助力DataEase小助手,新增气泡地图,DataEase开源数据可视化分析平台v2.5.0发布

2024年4月8日,DataEase开源数据可视化分析平台正式发布v2.5.0版本。 这一版本的功能升级包括:新增DataEase小助手支持,通过结合智能算法和LLM(即Large Language Model,大语言模型)能力,DataEas…

Servlet(一)

文章目录 1.Servlet整体框架2.Servlet快速入门1.创建项目配置基本环境2.添加jar包1.在WEB-INF下创建目录lib,添加文件2.添加到项目中3.配置代码提示 3.src下创建文件4.实现Servlet接口5.在web.xml配置HelloServlet6.通过浏览器访问HelloServlet 3.浏览器访问Servlet…

axios是什么?axios使用axios和ajax

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境。它是由 GitHub 用户 mzabriskie 开发的,并且得到了广泛的社区支持。Axios 的设计目标是提供一种简洁、易用且功能强大的 HTTP 请求方式,以替代传统的 Ajax(A…

ssm031社区管理与服务的设计与实现+jsp

社区管理与服务系统的设计与实现 摘 要 Abstract 第一章 绪论 1.1研究背景 1.2 研究现状 1.3 研究内容 第二章 系统关键技术 2.1 Java简介 2.2 MySql数据库 2.3 B/S结构 2.4 Tomcat服务器 第三章 系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.…

usbserial驱动流程解析_Part3_write_read数据流分析

usb转串口设备需要进行收发,主机接到uart rx线上的数据,把主机数据发送到 uart tx线上,对应的就是read函数和write函数,以上两个Part提到了tty有关的函数,在以下结构体被定义,write被指定为serial_write&a…

在 VS Code 中使用 GitHub Copilot

Code 结合使用。 GitHub Copilot 是什么 GitHub Copilot 是一个可以帮助你更简单、更快速地编写代码的工具,由 GPT-3 提供支持。你只需编写所需代码的描述——例如,编写一个函数来生成一个随机数,或对一个数组进行排序——Copilot 就会为你…