01 网络编程-概念引入

news2024/9/23 1:36:08

目录

1、互联网与物联网

2、计算机网络分类

(1)按地理范围分类

(2)按网络拓扑分类

(3)按网络用途分类

3、套接字

4、网络的七层模型(OSI--国际化标准)

5、TCP/IP四层协议栈

6、网络协议

(1)协议

(3)数据包

7、IP地址

(1)IP地址标识符

(2)IP地址分类

(3)子网属性

8、端口

9、字节序

10、大端小端笔试题


1、互联网与物联网

        互联网:不同主机通过网络进行通信--万物互联

        物联网:不同智能终端通过互联网实现终端控制

2、计算机网络分类

(1)按地理范围分类

  • 个人区域网(PAN,Personal Area Network)
    • 范围:几米到十几米
    • 用途:连接个人设备,如收集、电脑、笔记本电脑、智能手表
    • 示例:蓝牙(Bluetooth)、红外线通信(Infrared Communication)
  • 局域网(LAN,Local Area Network)
    • 范围:覆盖一个建筑物、办公室、校园
    • 用途:小范围内实现高速数据传输和资源共享
    • 示例:以太网(Ethernet)、Wi_Fi(Wireless Fidelity)
  • 城域网(MAN,metropolitan Area Network)
    • 范围:覆盖一个城市或多个相邻城市
    • 用途:连接多个局域网,提供城域范围内的数据传输服务
    • 示例:光纤网络(Fiber OpticNetwork)、有线电视和DSL(Digital Subscriber Line)连接
  • 广域网(WAN,Wide Optic Network)
    • 范围:覆盖国家、洲际甚至全球范围
    • 用途:连接多个局域网和城域网、实现长距离数据传输
    • 示例:互联网(Internet)、企业专用网(Enterprise Private Network)

(2)按网络拓扑分类

  • 总线型拓扑(Bus Topology)--所有设备共享一条通信介质(总线)
    • 优点:布线简单,成本低。
    • 缺点:总线故障会导致整个网络瘫痪。
    • 常见场景:家庭小型网络(所有设备都连接同一个WIFI或者路由)
  • 星型拓扑(Star Topology)--所有设备通过单独的通信链路连接到一个中央节点
    • 优点:易于管理和扩展,单个设备故障不会影响整个网络。
    • 缺点:中央节点故障会导致整个网络瘫痪。
    • 常见场景:教室机房网络,交换机
  • 环形拓扑(Ring Topology)
    • 优点:数据传输延迟低,适合实时通信。
    • 缺点:任何一个节点或链路故障都会影响整个网络。
    • 常见场景:小区小型网络
  • 网状拓扑(Mesh Topology)
    • 优点:高度冗余,可靠性强,任意节点或链路故障不影响整体通信。
    • 缺点:布线复杂,成本高。

(3)按网络用途分类

  • 互联网(Internet)
    • 全球范围内连接各种网络的集合
    • 提供全球范围的通信和信息共享。
  • 企业内部网(Intranet)
    • 仅限于企业或组织内部使用的网络。
    • 提供内部资源共享和通信。
  • 外联网(Extranet)
    • 连接企业内部网与外部合作伙伴或客户的网络。
    • 在安全受控的环境下,与外部实体进行通信和协作。

3、套接字

        socket在Linux系统中指的是一种特殊接口,该接口可以实现互联网中不同主机上的应用进程之间进行双向通信。socket的中文翻译具有“插座/插孔”的含义,而插座需要选择合适的线才可以正常连通,如果把插座理解为互联网中的主机,则合适的线指的是网络协议。

        socket接口一般采用的是C/S架构,C指的是客户端(client),S指的是服务器(server)。也就是说利用该接口可以实现支持多个客户端对同一个服务器进行并发访问,也可以实现一对一通信。

4、网络的七层模型(OSI--国际化标准)

OSI(Open System Interconnection)七层理论模型是一个理想状态。

5、TCP/IP四层协议栈

        OSI七层模型只是一个理想状态,对应现实中的实际存在的TCP/IP四层协议栈。OSI理论模型与TCP/IP四层协议栈型对应

  • 应用层:
    • 包含 OSI 模型中的最顶部三层,加密、压缩、编码、会话、语义等等功能统统是应用程序 APP 所辖范畴。
    • 应用程序 APP 可以很简单,也可以很复杂。
  • 传输层(位与操作系统内核):
    • 与 OSI 模型对应,负责传输控制。
  • 网络层(位与操作系统内核)
    • 与 OSI 模型对应,负责路由选择。
  • 网络接口与物理层(位与操作系统内核):
    • 这包括实际数据传输的物理媒介,及其对应的驱动层软件。

6、网络协议

(1)协议

        协议就是通信双方预先商量好的一组“暗号”,将彼此之间需要协定的东西写入数据包的固定位置,大家使用相同的方式来解读这一组特定的信息,最终达到能互相理解对方意图的方式。对应于不同的网络分层,每一层都有一个或多个协议,比如应用层中的 HTTP、FTP、NFS、TELNET 等等。在不同的网络拓扑和场景下,使用到的网络协议纷繁复杂,林林总总,但在互联网领域中,应用最为广泛的是所谓 TCP/IP 协议栈。

(2)TCP/IP协议栈

        TCP/IP 协议栈名称的由来是历史原因,它们并不仅指 TCP 协议和 IP 协议,广义上而言,协议栈囊括众多使用基于 IP 协议的应用层协议,传输层最重要的 TCP 和 UDP 协议,以及众多 IP 协议的辅助协议。

层次

协议

应用层

DNS, FTP, HTTP, IMAP, POP3, SMTP, SSH, Telnet, SSL, …

传输层

TCP, UDP, …

网络层

IP (IPv4, IPv6), ICMP, ARP, …

数据链路与物理层

802.3(Ethernet), 802.11(Wi-Fi), PPP, …

(3)数据包

        数据包在网络中传输时,发送方逐层对数据包进行对应协议的封装,这个过程类似于寄包裹的时候往包裹上贴标签。而接收方执行相反的过程,接收方拆包裹并读取对应协议信息(一般称为协议头)。各种协议的头部数据如下图所示:

7、IP地址

(1)IP地址标识符

        IP 地址实质上等同于一台计算机的 ID,用来便于在世界范围内更加方便地唯一标识某一台机器。以 IPv4 为例,IP 地址总共32位,通常的形式是所谓点分式的字符串:

(2)IP地址分类

        一个 IP 地址从形式上可以分成前后两段,前半段称为网络号,后半段称为主机号

        网络号用来作为该主机所在的网络在全世界范围内的唯一标识,

        主机号用来作为该主机在其所在的网络内部的唯一标识。

        由此,根据网络号和主机号所占位数的不同,将 IP 地址分为以下类别:

  • A类地址
    • 第1字节为网络地址,其他3个字节为主机地址。
    • 第1字节的最高位固定为0
    • 1.0.0.1 – 126.255.255.255
  • B类地址
    • 第1字节和第2字节是网络地址,其他2个字节是主机地址。
    • 第1字节的前两位固定为10
    • 128.0.0.1 – 191.255.255.255
  • C类地址
    • 前3个字节是网络地址,最后1个字节是主机地址。
    • 第1字节的前3位固定为110
    • 192.0.0.1 – 223.255.255.255
  • D类地址(组播地址)
    • 不分网络地址和主机地址,第1字节的前4位固定为1110
    • 224.0.0.1 – 239.255.255.255

(3)子网属性

        IP地址与子网掩码相与之后的结果被称为网段网段 = IP & 子网掩码

        上述例子中,子网掩码是 255.255.255.0,因此网段就是 192.168.9.x,局域网内通信的主机应该都要处于同一网段内,否则数据无法被该网段所属的网关(192.168.9.1)路由转发。

在很多场合下,子网掩码会以比特位的形式跟IP地址写在一起,例如上述子网属性可以写成:

192.168.9.88/24,后面的 /24 代表该IP地址所在的网段是前24比特位,也就是说子网掩码是 255.255.255.0

8、端口

        IP 地址可以唯一标识一台计算机,但通信的双方并不是两台计算机,而是计算机内部的进程。很明显,为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来加以区分。

端口号是一个短整型数据,长度为16位。具体分布:

  • 系统端口:1~1023
  • 注册端口:1024~49150
  • 动态或私有端口:49151~65535(这是平常做实验可用的端口号范围)

注意:

  • TCP端口号与UDP端口号独立
  • 端口号一般由IANA (Internet Assigned Numbers Authority) 管理

点击查看TCP/UDP常见端口

9、字节序

        当一个数据需要使用2个或以上字节来存储时,就会出现所谓字节序的概念。即可以将低有效位放在低地址处,也可将低有效位放在高地址处,就会产生大端和小端的问题。

大端存储:低地址存放高字节

小端存储:低地址存放低字节

        字节序是系统内部的存储方式,与程序无关。在网络编程中,由于数据是在两台不同的机器中传输和表达,因此如果字节序不一致,将会导致结果牛头不对马嘴。

        解决的办法是:将网络中的数据,统一为某种固定的字节序(如大端序)。这样一来,凡是从主机往外发送的数据,还是从网络接收的数据,一律是统一之后的字节序,网络字节序屏蔽了通信双方的具体细节,从而使得双方能够进行通信。

10、大端小端笔试题

笔试题:如何检测当前设备是大端存储还是小端存储?

方法一:将一个int型的数据放入char型变量中

int main()
{
    char a;
    int b=0x12345678;
    a=b;
    if(a=0x12)
    {
        printf("Big\n");  
    }
    if(a=0x78)
    {
        printf("Little\n"); 
    }
    return 0;
}



int main(int argc, char *argv[])
{
    printf("%#hhx\n", 0x12345678);
    return 0;
}

方法二:用联合体

union test{
    char a;
    int b;
};

int main()
{
    test.b=0x12345678;
    test.a=b;
    if(test.a=0x12)
    {
        printf("Big\n");  
    }
    if(test.a=0x78)
    {
        printf("Little\n");  
    }
    return 0;
}

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

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

相关文章

qml ChartView实现动态数据曲线

文章目录 一、qml静态数据曲线二、qml ChartView实现动态数据曲线三、使用C++给曲线提供数据更多qml教程,请参考QML入门进阶教程专栏:https://mingshiqiang.blog.csdn.net/category_9951228_2.html 本篇博客介绍使用qml实现动态数据曲线,效果图如下: 本篇博客代码通过C+…

DolphinScheduler3.2.2在centos7上伪集群部署

DolphinScheduler 是一个分布式易扩展的可视化工作流任务调度系统。集成了很多数据处理常用的功能,包括定时任务,脚本执行,错误预警等。 它具有以下一些主要特点和优势: 分布式架构:支持大规模任务的调度和管理&#…

centos7卸载docker报错No Packages marked for removal

执行: yum -y remove docker* 报错: No Packages marked for removal 执行: yum list installed | grep docker yum remove -y docker-ce.x86_64 docker-ce-cli.x86_64 containerd.io.x86_64

进程的退出以及线程

接上节: 1.wait 本身是一个阻塞操作,谁调用它就会使调用者阻塞 2.父进程要获得子进程的退出状态 要两个进程配合操作: 子进程: exit(退出状态值) 退出状态值 只有最低为有效,范围为[0-255] 父进程 wa…

<Qt> 系统 - 网络编程 | 音视频

目录 前言: 一、QUdpSocket (一)核心 API 概览 (二)设计一个UDP回显服务器 二、QTCPSocket (一)核心 API 概览 (二)设计一个TCP回显服务器 三、HTTP Client 四、…

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…

【自动驾驶】自定义消息格式的话题通信(C++版本)

目录 新建消息文件更改包xml文件中的依赖关系更改cmakelist文件中的配置执行时依赖改变cmakelist编译顺序发布者程序调用者程序新建launch文件程序测试 新建消息文件 在功能包目录下,新建msg文件夹,下面新建mymsg.msg文件,其内容为 string …

机械行业数字化生产供应链产品解决方案(十六)

我们的机械行业数字化生产供应链产品解决方案通过全面应用物联网、人工智能和大数据技术,构建了一个高效的智能生产与供应链系统,能够在设计、生产和物流全环节中实现实时数据监控与动态优化。系统通过智能分析和预测,优化了生产计划和资源配…

Linux系统驱动(十九)块设备驱动

文章目录 一、块设备驱动简介(一)简介(二)块设备驱动相关概念 二、块设备驱动(一)框架图1. 虚拟文件系统(VFS)2. Disk Cache:硬盘的高速缓存3. 映射层(mappin…

IP代理如何增强网络安全性?

在当今的数字时代,网络安全已成为一个关键问题,而使用 IP 代理可以成为增强网络安全的有效方法。根据请求信息的安全性,IP 代理服务器可分为三类:高级匿名代理、普通匿名代理和透明代理。此外,根据使用的用途&#xff…

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记)

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记) 资料下载: 洋桃电子 YoungTalk 探索最好的 STM32 教学 (doyoung.net) 接口类型 NT35510 数据手册(英文).pdf NT35510 应用手册(英文).…

Jenkins持续集成工具学习

一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、Jenkins+SVN持续集成环境搭建

WebGoC题解(18) 630.电线杆(2019NHOI小乙)

题目描述 小C在农场的附近看到有n颗电线杆排成一行,相邻之间距离为20。它们高度可能不一样,但高度相同的电线杆顶端有电线连接。如下面示意图中,电线杆用粗细为6的垂直直线画,电线用粗细为2的水平直线画。给定每个电线杆的高度&am…

Linux-Haproxy搭建Web群集

LVS在企业应用中抗负载能力强 不支持正则处理,不能实现动静分离对于大型网格,LVS的实施配置复杂,维护成本较高 Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件 适用于负载大的Web站点运行在硬件上可支持数以万计的…

AI大模型开发——4.transformer模型(0基础也可懂)(1)

无论是想怎样学习大模型,transformer都是一个绕不开的话题。transformer的出现彻底改变了nlp领域,进一步推动了大模型的产生,可以说,transformer就是大模型开发的鼻祖。 可能只通过说大家会有些不理解。大家可以看下方的大语言模型…

打卡第四十四天:最长公共子序列、不相交的线、最大子序和、判断子序列

一、最长公共子序列 题目 文章 视频 本题和最长重复子数组区别在于这里不要求是连续的了,但要有相对顺序,即:"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。 确定dp数…

4个快捷高效的ai在线写作工具推荐。

ai在线写作因其快速的创作方式,高效的写作效率以及能够为我们带来无限的灵感而被广泛应用。如果你还不会使用ai进行写作的话,就看看下面这4款AI写作工具吧。 1、笔灵在线创作 直通车 :https://ibiling.cn 这是个在线的AI工具网站,在内容创作…

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息(PII) 个人信息保护 / AI 模型 。 1. 产品功能 基于自有专业模型进行 PII 自动去除高效处理敏感信息全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 /…

地质灾害评估和治理工程勘查设计资质乙级资质办理标准

地质灾害评估和治理工程勘查设计资质乙级资质的办理标准主要包括单位条件、专业技术人员条件、仪器设备要求以及申请材料等方面。以下是详细的办理标准: 一、单位条件 **1、法人资格:**申请单位应具有企业法人或者事业单位法人资格。 **2、管理体系&a…

龙良曲pytorch课时1-课时13

前言 这篇是个人学习龙曲良老师的pytorch课程的笔记,疑惑地方自己加的内容 一、pytorch引入 1. 自动求导 在深度学习中,我们通常需要训练一个模型来最小化损失函数。这个过程可以通过梯度下降等优化算法来实现。梯度是函数在某一点上的变化率&#x…