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

linux下的网络编程:基础概念+UDP编程

    目的:实现不同主机,进程间的通信

    实现需要解决的问题:

  • 主机和主机之间物理层面必须互联互通。
  • 进程与进程在软件层面必须互联互通。

一、概念

(1)网络示意图

交换机:实现跨局域网(短距离数据传输)通信。

路由器:实现数据的路由(路径的选择),进行路径规划。→工作在网络层。

        每个路由器中,均存在一个路由表,其主要是存储路由器所爱信号范围内其他路由器的相关信息。

  • MAC地址:计算机的硬件地址(固定)。
  • IP地址:计算机软件地址,用来标识计算机设备(标记不同主机)。
  • 网络端口号:标记同意主机上的不同网络进程。

(2)网络协议——“网络通信标准”

1.OSI七层模型(open system interconnect)

                                                                           ——开放系统互连模型,"理论模型"

        1)目的:解决不同设备间网络的通信标准。

        2)分类:

                   要传输的数据信息,如下文件传输,电子邮件等。

                   数据加密,解密操作,压缩,解压缩。➡保证其安全性。

                   建立数据传输通道。 ➡建立一次会话。

                   传输的方式 ( UDP 、TCP)。➡决定数据的数据的传输方式。

                   实现数据路由,路径规划 。➡ 路由器  ip工作在此层。

                   封装成帧,点对点通信(局域网内通信),差错检测  。➡交换机  ARP在此工作。

  • 物理层

                    定义物理设备标准、电气特性,比如网线,光纤等传输介质 。➡将数据链路层封装成帧转化成高低电平,即比特流(bit)然后通过传输介质进行传输。

2.TCP/TP模型——”应用模型“

(一)TCP模型——”五层‘

  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

(二)IP模型——“四层”

  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网络层
  • 网络接口层(数据链路层、物理层)

(三)各层的网络协议

1)应用层

  • HTTP:超文本传输协议
  • HTTPS:超文本传输协议(SSL加密算法)
  • FTP:文件传输协议➡TCP工作在传输层。
  • TFTP:简单文件传输协议  ➡UDP
  • MQTT:消息队列遥测传输(物联网协议)
  • DNS:域名解析服务器(如:baidu.com)➡将域名转换为IP地址。

2)传输层

            先进行路径规划,在进行传输,所以安全性、可靠性高。

  • TCP:传输控制协议
  • UDP:用户数据协议

            直接进行传输,可能会造成数据的丢失,所以安全性不高。

3)网络层

  • IP协议:IPV4、IPV6

4)数据链路层

        ARP:地址解析协议(将IP地址转换为MAR地址)。

3.IP协议

(一)分类

  • IPV4——32位(均表示IP地址)
  • IPV6——128位(解决了IPV4地址不足的问题)

在windows上查IP地址:windows+R➡输入cmd➡输入命令ipconfig

在虚拟机上查IP地址: 输入命令ifconfig

(二)IPV4概念

1)表达形式:

        192.168.0.140 (用户表现形式)点分十进制

11000000 10101000 00000000 01000001 (计算机存储形式)4 * 8 bit

2)组成

        IP地址 = 网络位 + 主机位

判断IP地址的网路位和主机位时,需要搭配子网掩码查看:

    子网掩码全为1的IP地址的网络段,子网掩码是0的部分对应IP地址的主机位

<192.168.0.121/24  ➡24:网络位的位数>

3)特殊的IP地址

  • 网络位:该IP地址处于哪个网段(局域网)内。
  • 主机位:这个网段(局域网)第几台主机。
  • 网段号:IP地址网络位不变,主机位全为0,则为该IP地址的网段号

            如:192.168.1.0 网段内(网段内的IP能直接通信)

  •  广播号:IP地址网络位不变,主机位全为1,则为该IP地址的广播号

            如:192.168.1.255(向广播号发送信息,所有局域网内IP都能收到此信息)

  •    网关地址:IP地址网络位不变,主机位为

        如:192.169.1.1

4.IP地址的划分

   (1)A类地址:
范围:1.0.0.0 - 126.255.255.255
子网掩码:255.0.0.0          126*2^24        
用于管理大规模网络

私有IP地址:10.0.0.0 - 10.255.255.255

127.0.0.0   回环地址
(2)B类地址:
范围:128.0.0.0 - 191.255.255.255
子网掩码:255.255.0.0         2^16
管理大中规模网络

私有IP地址:172.16.0.0 - 172.31.255.255

(3)C类地址:
范围:192.0.0.0 - 223.255.255.255
子网掩码:255.255.255.0        2^8
管理中小规模网络

私有IP地址:192.168.0.0 - 192.168.255.255

(4)D类地址:
224.0.0.0 - 239.255.255.255
组播和广播使用

(5)E类地址:
240.0.0.0 - 255.255.255.254
用来进行实验

        公有IP:由电信公司直接分配,并需要付费的IP地址, 可以直接访问internet
私有IP:不能直接访问internet的ip地址

节省ip地址

5.端口号网络

                                                                                        ——16位整形数据(unsigned short)

(1)功能 

                标记同一主机上的不同网络进程

(2)范围

                0~65535

(3)分类

  • 任何TCP/IP实现所提供的服务都用1-1023之间的端口号。

            http : 80
FTP: 20/21
TFPT: 69
HTTPS: 443

  • 端口号从1024-49151是被注册的端口号,被IANA指定为特殊服务使用。

                MQTT:1883/8883

  • 从49152-65535是动态或私有端口号。

(4)数据包封装和解封过程

6.网络配置

  • 1.  ping  ip地址/域名

        查看当前主机和IP/域名所对应的这台主机网络是否联通
ping www.baidu.com

  •    2. ifconfig 

       在Linux查看当前主机的IP地址
ipconfig
在Windows上查看当前主机的IP地址

  •    3. 网络配置的步骤

       1)虚拟机--》设置--》网络适配器---》桥接模式
2)编辑--》虚拟网络编辑器--》更改设置--》VMnet0---》桥接至--》当前PC正在上网的网卡上--》应用--》确定
3)修改网络配置文件
sudo vim /etc/network/interfaces

             auto lo
iface lo inet loopback

             auto ens33 
iface ens33 inet dhcp

        4)重启网络服务
sudo /etc/init.d/networking restart
5) 测试
ping www.baidu.com

7.网络协议——UDP

        UDP:传输层
用户数据报协议(User Datagram Protocol)

     1)网络编程模型
B/S模型:browser/server(浏览器/服务器)
1. 客户端是通用的客户端(浏览器)
2. 一般只做服务器开发
3. 客户端要加载的数据均来自服务器
C/S模型:client/server(客户端/服务端)
1. 客户端是一个专用的客户端
2. 服务器和客户端都需开发
3. 客户端可保存资源,本地加载,无需所有数据都请求服务器


http://www.dtcms.com/a/346843.html

相关文章:

  • Class41样式迁移
  • 55.Redis搭建主从架构
  • 计算机网络 各版本TLS握手的详细过程
  • CSS学习步骤及详解
  • 美食菜谱数据集(13943条)收集 | 智能体知识库 | AI大模型训练
  • JUC之虚拟线程
  • ArcGIS Pro 安装路径避坑指南:从崩溃根源到规范实操(附问题修复方案)
  • 运行npm run命令报错“error:0308010C:digital envelope routines::unsupported”
  • 使用 AD 帐户从 ASP.NET 8 容器登录 SQL Server 的 Kerberos Sidecar
  • 【深入理解 Linux 网络】收包原理与内核实现(下)应用层读取与 epoll 实现
  • 5G物联网的现实与未来:CTO视角下的成本、风险与破局点
  • 嵌入式学习日记(33)TCP
  • OpenFeign相关记录
  • 【嵌入式】【搜集】RTOS相关技术信息整理
  • Ubuntu2204server系统安装postgresql14并配置密码远程连接
  • 【python与生活】如何自动总结视频并输出一段总结视频?
  • FastAPI + SQLAlchemy 数据库对象转字典
  • 【力扣 Hot100】每日一题
  • C++之list类的代码及其逻辑详解 (中)
  • Java线程的几种状态 以及synchronized和Lock造成的线程状态差异,一篇让你搞明白
  • Linux服务器Systemctl命令详细使用指南
  • GitLab CI:安全扫描双雄 SAST vs. Dependency Scanning 该如何抉择?
  • 智慧园区人车混行误检率↓78%!陌讯动态决策算法实战解析
  • html链接的target属性
  • Win11 下卸载 Oracle11g
  • 《文字的本体论突围:从工具论到符号学革命的范式转换》
  • B.30.01.1-Java并发编程及电商场景应用
  • 算法 ---哈希表
  • 从0到1:数据库进阶之路,解锁SQL与架构的奥秘
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(6):51-60语法