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

news2024/12/29 9:07:08

247a11e6632540cdbdd7dfa921f39393.png

网络:
1.协议:通信双方约定的一套标准 
2.国际网络通信协议标准:
    1.OSI协议:
        应用层          发送的数据内容
        表示层          数据是否加密
        会话层          是否建立会话连接
        传输层          数据传输的方式
        网络层          数据的路由
        数据链路层      局域网内部通信
        物理层          物理介质的连接

    2.TCP/IP协议模型:
        应用层          发送的数据内容
        传输层          数据传输的方式
        网络层          数据由一台主机到达另一台主机
        网络接口层      物理介质连接 

        应用层:
            FTP     文件传输协议    
            TFTP    简单文件传输协议
            HTTP    超文本传输协议
            HTTPS   安全超文本传输协议
            SMTP    简单邮件传输协议
            TELNET  网络终端登录协议
            DNS     域名系统
            .. 
        
        传输层:
            TCP     传输控制协议
            UDP     用户数据报协议

            UDP:不安全、不可靠的传输方式
                 UDP机制简单
                 UDP占用的资源开销比较小
            TCP:安全、可靠的传输方式
                 TCP机制复杂
                 TCP占用的资源开销比较大 
                    三次握手建立连接(客户端与服务器端),确认双方能够通信
                    通信过程中保障数据传输的完整性
                    四次挥手断开连接,确保数据传输的完整

            98ccb027811446aa895d840bceceeb5b.png1e9491c6c9bf44a19a1e0c4be97853d8.png
                 
        网络层: 
            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地址

 

81423b85e7bb4898872ca43fb142c08e.png

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.编写两个程序,一个发送端,一个接收端,实现一个文件跨主机的传输

 

 

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

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

相关文章

python中模块,包,python常用内置模块,第三方模块

python模块 模块的导入: 模块可以导入一整个也可以导入其中的部分变量函数类,直接饶了的变脸函数类在使用时候就可以不用再前边写上 模块的名字. 这个部分了,所有需要注意同名函数会覆盖,使用时会调用后引入模块的这个函数 包 …

第18 章探讨 C++新标准.新的类功能.比较函数指针、函数符和 Lambda 函数

第18 章探讨 C新标准.新的类功能.比较函数指针、函数符和 Lambda 函数 第18 章探讨 C新标准.新的类功能.比较函数指针、函数符和 Lambda 函数 文章目录 第18 章探讨 C新标准.新的类功能.比较函数指针、函数符和 Lambda 函数18.4 Lambda 函数18.4.1 比较函数指针、函数符和 Lam…

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术,将…

为什么穷大方

为什么有些人明明很穷,却非常的大方呢? 因为他们认知太低,根本不懂钱的重要性,总是想着及时享乐,所以一年到头也存不了什么钱。等到家人孩子需要用钱的时候,什么也拿不出来,还到处去求人。 而真…

电子电气架构 --- 车载以太网

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

DOM破坏及其实战案例

目录 DOM靶场: 第六关: 第七关: 第八关: DOM破坏: dom破坏案例1: 案例二: DOM靶场: DOM靶场平台:Challenges 前五关请查看:DOM型xss靶场实验_domx…

如何使用天地图

第一步&#xff1a;登录/注册 国家地理信息公共服务平台 第二步&#xff1a;获取服务许可&#xff08;Key&#xff09; 如果你已经申请了许可&#xff0c;那可以不用看上的了&#xff0c;如何使用请看下面 1.首先在index.html中一下代码 <script src"http://api.tian…

creo曲面建模1

偏移平面&#xff1a; 在偏移面做一个圆&#xff1a; 在阿基米德曲线上&#xff0c;将曲线四等分。点在曲线上并且在相交基准面上&#xff1a; 绘制曲线&#xff1a; 第二段&#xff1a; 第三段&#xff1a; 第四段4.5高&#xff1a; 曲线复合&#xff1a; 边界混合&a…

2024下半年软考备考全攻略:科目选择与高效学习策略

随着2024年下半年的脚步日益临近&#xff0c;软考&#xff08;软件水平考试&#xff09;的考生们也开始紧锣密鼓地准备起来。今年&#xff0c;软考官方对考试科目进行了重大调整&#xff0c;为考生们提供了更加多样化的选择。以下是详细的考试信息、科目调整以及针对不同考生群…

铁电存储器(FM24W256)I2C读写驱动(1):FM24W256简介

0 参考资料 FM24W256&#xff08;Cypress公司生产&#xff09;数据手册 1 FM24W256铁电存储器简介 铁电存储器&#xff08;FRAM&#xff09;相比带电可擦可编程只读存储器&#xff08;EEPROM&#xff09;最突出的两个优势就是 拥有几乎无限的读写次数和写入不需要等待&#xf…

打卡学习Python爬虫第二天|Requests的使用

一、什么是requests库&#xff1f; requests库是一个非常流行和强大的HTTP库&#xff0c;它用于在Python中发送HTTP请求。这个库的主要特点是其简洁和易于使用的API&#xff0c;使得发送网络请求和获取响应变得非常简单。 以下是requests库的一些关键特点和使用方法&#xff…

四年的功能测试,在这个金九银十的招聘旺季找不到工作怎么办?

昨天周日跟一个读者聊了很久&#xff0c;今天跟大家聊一下他的故事。 他做了4年的功能测试了&#xff0c;最近因为种种原因换工作&#xff0c;结果从8月底到现在快两个月了&#xff0c;面试了十几二十家&#xff0c;收到的offer都不是自己很满意的&#xff0c;很是懊恼&#x…

C语言相关

1. 代码执行过程 1.1 简述编译运行一段代码的过程 1.1.1 预处理 为了接下来能够解释的更加清楚&#xff0c;使用linux 平台下的 gcc 编译器解释。先书写一个非常简单的程序来介绍&#xff1a; 第一步发生的是预编译&#xff0c;使用-E 指令会使程序只进行到预编译指令。经过…

html+css+js 黑神话悟空网页设计与制作

htmlcssjs 黑神话悟空网页设计与制作 网站介绍 1、网站程序&#xff1a;主要使用网页三剑客htmlcssjavaScript实现网页设计与制作&#xff0c;完成网站的功能设计。制作适用于任何浏览器或设备的精美网站。 2、网站素材&#xff1a;搜集或制作适合网页风格和尺寸的图片&#…

Vmware WorkStations 17 ,centos 安装 vmware tools

1.Vmware WorkStations 17 ,安装vmware tools 按钮显示灰色,需重新下载下载vmware tools https://softwareupdate.vmware.com/cds/vmw-desktop/ws/ 根据自身的vmware workstation 版本选择 选择Windows 选择packages 2.搜索Centos8 自带vmware tools ****.iso文件 3.将ISO文…

我主编的电子技术实验手册(16)——认识电容

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…

如何利用TRIZ创新思维进行产品的市场需求分析?

实践证明&#xff0c;传统的市场调研方法往往难以触及那些未被言说的“隐性需求”。而今&#xff0c;借助TRIZ&#xff08;发明问题解决理论&#xff09;这一强大的创新思维工具&#xff0c;我们不仅能洞悉市场的显性需求&#xff0c;更能解锁隐藏在背后的无限商机。本文&#…

【排序篇】插入排序与选择排序

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用场景1.3 常见的排序算法 2.常…

Diffusion Model相关论文解析之(一)Denoising Diffusion Probabilistic Models

目录 1、摘要2、创新点3、主要公式4、主要实现过程 1、摘要 ‌Denoising Diffusion Probabilistic Models (DDPMs) 是一种基于参数化的马尔可夫链的模型&#xff0c;它使用变分推理进行训练&#xff0c;以在有限时间内生成与数据匹配的样本。‌ 这种模型通过逆扩散过程逐渐向样…

Unity开发抖音小游戏广告部分接入

Unity开发抖音小游戏广告部分接入 介绍环境确保开通流量主获取广告位广告部分代码测试如下总结 介绍 最近在使用Unity做抖音小游戏这块的内容&#xff0c;因为要接入广告&#xff0c;所以这里我把我接入广告的部分代码和经验分享一下。 环境确保 根据抖音官方的文档我们是先…