如何快速理解网络编程

news2024/11/15 10:47:32

目录

前言

一、网络编程的概念 

 二、TCP/IP架构体系的各层作用

三、网络通信中常用的专业术语

四、IP地址的分类和划分


前言

        在一个主机中,我们能进行进程间通信,但是随这时代发展,我们不可能只是在单独的一个主机中传输数据,,因此有很多天才就发明了不同主机间的通信方式。下面我们就简单看一下网络的发展历程,简单了解即可

          网络编程的起源与计算机网络的演变密切相关,其发展可以追溯到上世纪60年代和70年代的早期网络研究。

        1. ARPANET(1960年代末)
        ARPANET(Advanced Research Projects Agency Network)是最早的计算机网络之一,由美国国防部高级研究计划局(ARPA)资助和开发。ARPANET的设计初衷是为了在多个计算机之间进行数据交换和资源共享。

        - **包交换技术**:ARPANET采用了包交换技术,而不是传统的电路交换技术,这使得网络通信更加高效和可靠。
        - **网络协议**:为了使不同的计算机能够互通,ARPANET开发了第一个网络协议——NCP(Network Control Protocol)。这一协议是后来的TCP/IP协议的前身。

        2. TCP/IP协议的提出(1970年代)
        在ARPANET的基础上,Vint Cerf和Bob Kahn于1974年提出了TCP/IP协议(传输控制协议/互联网协议),这为现代互联网奠定了基础。

        - **TCP(Transmission Control Protocol)**:负责确保数据传输的可靠性。
        - **IP(Internet Protocol)**:负责数据包的路由和转发。

        3. 互联网的诞生(1980年代)
        1983年,ARPANET正式切换到使用TCP/IP协议,标志着互联网的正式诞生。此时,网络编程开始进入一个新的阶段,网络通信的标准化和普及使得编写网络程序成为可能。

        4. 客户端-服务器模型(1980年代末)
        随着互联网的普及,客户端-服务器模型成为了网络编程的主要架构。这一模型中,客户端发起请求,服务器响应请求并提供服务。

        - **套接字(Socket)编程**:客户端和服务器通过套接字进行通信。套接字编程成为了网络编程的基本方法之一。

        5. 万维网(WWW)的出现(1990年代初)
        1991年,蒂姆·伯纳斯-李(Tim Berners-Lee)提出了万维网(World Wide Web)的概念,并开发了第一个Web浏览器和Web服务器。这一发明极大地推动了网络编程的发展,使得网络应用程序变得更加直观和用户友好。

        - **HTTP(超文本传输协议)**和**HTML(超文本标记语言)**:成为Web应用程序的基础技术,使得信息的传输和展示变得更加方便。

         6. 现代网络编程(2000年代及以后)
        进入21世纪后,网络编程的领域得到了极大的扩展,包括Web开发、移动应用开发、云计算、分布式系统等。

        - **RESTful API**和**GraphQL**:用于创建网络服务和API接口,支持现代Web应用的灵活和高效的数据交换。
        - **WebSocket**:支持全双工通信,广泛应用于实时应用,如聊天应用和在线游戏。
        - **容器化和微服务架构**:使得网络应用的部署和管理更加灵活和高效。

        网络编程的发展不仅仅是技术的演变,更是互联网应用模式和用户需求的变化。今天的网络编程涉及的范围非常广泛,涵盖了从底层网络协议到高层Web应用的各种技术。

         上面是网络的发展历程,而本文的重点其实就是如何理解网络编程,

一、网络编程的概念 

        网络编程就是进程间通信,只不过多个进程不一定在同一台主机上,由于不在同一个主机上,不在同一个进程就需要注意通信协议

         从网络的发展历程我们也可以知道,为了高效的传输数据,在网络传输中引入了分层的理念,并且为了保证数据传输的精准性,还添加了联网协议来保证数据传输不会出现传输错误,避免数据发送目的地错误。

        以下是ISO(国际标准化组织)指定的一个国际标准OSI(开放式通信系统互联参考模型),对通信系统进行标准化,比较偏理想化

        定义了7层模式

        

分层的好处:

1、各层之间相互独立,每一层不需要知道下一层如何实现,仅仅只需要知道该层通过层次间的接口提供服务

2、稳定,当任何一层发生变化时,只要层间接口关系保持不变,则其他层不受影响

3、易于实现和维护

4、促进标准化工作

5、各层之间相互配合,提高传输效率

        但是在实际应用当中,我们通常把网络通信分为四层或者五层,这样更容易实现:

        这样分层之后,不会对数据传输有任何影响,而且会更容易实现,所以一般采用四层或者五层来进行网络通信

        假如你已经知道一些网络的知识基础,我们可以这样理解:

        在用户空间中,我们在进程中,也就是在某个应用当中,比如我们在微信当中发送一条消息给朋友或者家人,我们是如何将我们手机里的信息传输到对应手机里来实现通信的呢?

        首先,我们在打开微信之后,微信这个进程会运行,然后你输入数据,微信就是应用层。第二步,在传输层中会在数据安装上一个标签,也就是协议,这个协议在传输层中特有的,目的是确定这个消息是发送给微信,而不是其他应用。在网络层中,我们又在数据里面安装上一个协议,这个协议是确保这个消息是发送给哪个手机的。在网络接口层中,我们会在数据中安装一个协议,让数据在手机和基站当中传输,这个传输的过程要重复进行多次,因为从你手机最近的基站到你想要传输的目的地很远,要通过一个又一个基站来进行传输,则要进行多次。

        那么在传输层我们安装的协议通常有TCP、DUP协议,在网络层我们通常安装的是IP协议,所以在日常工作中,我们经常提到TCP\IP协议

 二、TCP/IP架构体系的各层作用

1、网络接口层(网络访问层)

  •  功能:包括ip地址与物理地址的映射(mac地址),以及将上一层的ip保温封装成帧,转换成二进制比特流传输
  •  mac:主机的物理地址,48bit全球唯一(物理网卡的编号),网络设备的身份标识,由厂商生产确定
  • 改变网络环境,ip地址可能发生改变,mac地址不变
  • ARP/RARP:地址解析协议/逆向地址解析协议
  • ARP:通过ip地址获取对应的mac地址
  • RARP:通过MAC地址获取对应的ip地址
  • PPP:拨号协议
  • MTU:最大传输单元:1500bytes
  • MSS:最大报文长度:1460bytes

2、网络层

  • 功能:负责在主机之间的通信,在通信中选择数据包传输的路径,即选择路由
  • IP:主机的网络地址
  • IP协议:

        IP协议根据数据包的目的ip地址来决定如何投递数据包

        如果数据包不能直接投递给目的主机,那么IP协议就为数据包寻找下一个合适的下一跳路由器

  • ICMP协议:

        因特网控制管理协议,ping检测网络就是使用这个协议

        用于在ip主机、路由器之间传递控制信息

  • IGMP协议:

        因特网分组管理协议、组播、广播

3、传输层

  • 负责提供应用程序之间通信服务,这种服务又称为端对端
  • 传输层与网络层不同,传输层只关心通信的起始端 和 目的端,并不在乎数据包的传输中转过程
  • TCP:传输控制协议

        提供面向连接的,一对一的可靠数据传输协议

  • UDP:用户数据报协议

        提供无连接的,不可靠的尽力的传输协议,但是效率更高

4、应用层

  • 功能:负责处理应用程序逻辑,通信数据的解析与组织
  • HTTP/HTTPS协议:

        超文本传输协议,万维网数据通信的基础

  • http:明文传输,https:加密传输
  • SMTP:简单邮件传输协议
  • IMAP:交互式邮件存储协议
  • DNS:域名解析协议

三、网络通信中常用的专业术语

  • 网关:
    • 定义:网关是网络中的某台设备的IP地址,
    • 举例:
    • 你的电脑的网关是路由器的IP地址。
    • 路由器的网关则是指它连接到的ISP网络的设备地址。
  • IP地址
    • IP地址是因特网中主机的标识(IP地址作为主机在网络中的标识),进行通信时每个数据包都必须携带目的IP地址和源IP地址,网络中的路由依靠此信息作为数据包的路由选择
    • IP地址是,设置连接到路由器后,由路由器来分配
  • 端口号
    • 为了区分一台主机收到的数据包要交给哪个进程处理,为网络应用程序设置一个端口号来区分进程。

    • 程序启动后将端口号与进程绑定在一起

    • 网络通信由IP地址+端口号 来确定通信对象

    • 端口号用2字节无符号整数标表示[1,65535]

    • TCP和UDP的端口号是相互独立的(使用TCP和使用UDP可以使用同一个端口号)

四、IP地址的分类和划分

         IP地址分类:

        IPV4:采用4个字节,32bit的无符号整数存储IP地址,共有:2^32 = 42.9亿个

        IPV6:采用16个字节,128bit的无符号整数存储IP地址。共有2^128(IPV4与IPV6不兼容)

        IP地址的划分: 

  • 定义:由于IP地址基数比较大,所以为了提高寻径效率,则将IP地址划分成二级IP地址
  •         二级IP地址 = 网络号 + 主机号 == IP地址(IP地址分为两段)
  •         网络号:确认计算机从属的物理网络地址
  •         主机号:确定网络号后,用主机号标识该网络号中的所有主机

因此通常我们将IP地址分为5类IP地址,方便寻找IP地址

        

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

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

相关文章

H3C SR-MPLS通过OSPF通告SID配置

首先在配置前理解几个基本概念 Prefix SID配置 统一分配和配置(全局规划)loopback和prefix sidPrefix SIDSRGB Base(16000)index Adj SID自动生成 对应SR节点间的互联链路SR节点本地标识,从设备本地Segment池中动态…

观趋势 谋发展 2024 SSHT上海智能家居展有哪些创新呈现?

引言:大数跨境发布的《2024全球智能家居市场洞察报告》显示,智能家居市场正迎来快速增长,预计从2024年的1215.9亿美元增长至2032年的6332.0亿美元,复合年增长率为22.9%。 近年来,随着物联网、AI等底层技术的飞速进步&…

I/O管理【上】

目录 一. I/O设备的概念与分类二. I/O控制器(考的频率不高,但还是要有印象)三. I/O控制方式(重要考点)3.1 程序直接控制方式3.2 中断驱动方式3.3 DMA方式3.4 通道控制方式 四. I/O软件层次结构4.1用户层软件4.2 设备独立性软件4.3 设备驱动程…

摩博会前瞻:OneOS智能超高安全性彩屏,百元级价格,高性能骑行新选择!

引言 中国国际摩托车博览会即将启动!倒计时7天,OneOS与恒石智能联合打造的十几款智能彩屏仪表首次展出!十几款彩屏仪表由国产HMI芯片Model系列驱动,OneOS实时操作系统,100%国产自主设计,实现百元级超高安全…

DP(Display Port)

DP(Display Port) 一、DP简介 DisplayPort是由美国视频电子协会(VESA:Video Electronics Standards Association)在2006年5月提出的一种新型数字显示接口规范,主要用于源端和设备端(如电脑显示…

虚拟机中使用gparted扩展硬盘容量

步骤1:安装gparted apt-get install gparted 步骤2:关闭虚拟机,扩展硬盘容量 步骤3:开启虚拟机,找到gparted软件,双击 步骤4:扩展,点击原磁盘,点击扩展,点击保…

深度学习(十一)-PaddlePaddle

PaddlePaddle PaddlePaddle(Parallel Distributed Deep Learning,中文名飞桨) 是百度公司推出的开源、易学习、易使用的分布式深度学习平台 源于产业实践,在实际中有着优异表现 支持多种机器学习经典模型 优点 易用性。语法简…

网页时装购物系统:Spring Boot框架的创新设计

第1章 绪论 1.1背景及意义 随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对时装购物系统方面的要求也在不断提高,喜欢购物的人数更是不断增加,使得时装购物系统的开发成为必需而且紧迫的…

搭建线上虚拟展厅,需要哪些技术?

搭建虚拟展厅需要一系列先进的技术支持,以确保能够为用户提供逼真、生动、互动的参观体验。以下是搭建虚拟展厅所需的主要技术: 1. 三维建模与渲染技术 三维建模:利用三维建模软件(如Maya、3D MAX、Blender等)建造三维…

Python | Leetcode Python题解之第389题找不同

题目: 题解: class Solution:def findTheDifference(self, s: str, t: str) -> str:return chr(sum(map(ord, t)) - sum(map(ord, s)))

基于free5gc模拟5G核心网和UERANSIM模拟5G用户设备的模拟5G网络环境的部署搭建方法总结和解析。

简介:下文介绍了基于free5gc模拟5G核心网和UERANSIM模拟5G用户设备的模拟5G网络环境的部署搭建方法,并且通过完成相关配置, 简单实现测试5G用户设备接入核心网的注册流程、去注册流程,模拟了一个用户设备通过模拟核心网进行实际的…

2024年上海松江启动建筑绿色低碳发展专项检查,共绘城市节能新篇章

2024年9月4日,2024年度松江区建筑工程绿色低碳发展工作专项检查会议正式开展,会议内容主要围绕以下三点, 1、《关于开展 2024年度本市建筑领域绿色低碳发展工作监督检查的通知》宣贯。 2、分项计量、能效测评工作验收要求介绍。 3、专项检…

怎么使用matplotlib绘制一个从-2π到2π的sin(x)的折线图-学习篇

首先:如果你的环境中没有安装matplotlib,使用以下命令可以直接安装 pip install matplotlib如何画一个这样的折线图呢?往下看 想要画一个简单的sin(x)在-2π到2π的折线图,我们要拆分成以下步骤: 先导入相关的库文…

用ChatGPT撰写论文被判抄袭?8个技巧让你轻松写出原创优质论文

在学术写作中,原创性和诚信是评价论文质量的关键因素。ChatGPT作为一种先进的AI写作助手,可以帮助您快速生成内容,但同时也带来了抄袭的风险。本文将探讨如何在使用ChatGPT时确保您的论文内容独特且原创。 以下是每个步骤的详细使用说明和操作案例: 一、具体提问与个性化…

VBA进行excel坐标转换

在Excel里利用坐标绘图时,可以比较容易想到采用数据透视表,但是数据透视表生成的图不可更改,因此本案例采用VBA进行坐标变换而不改变原始值来转换图像,即实现图像的左右翻转和上下翻转,如下图所示,选择map的…

万字长文,只为给小白说明白搭建一个单节点多工作节点k8s如何操作!!!

这里写目录标题 1. Kubernetes 基础概念1.1 什么是 Kubernetes?1.2 核心组件 本次搭建的机器演示具体的安装部署步骤修改主机的机器名称依次修改主机的host文件配置免密登录当前用户的 SSH 公钥复制到远程主机关闭交换区分区加载 br_netfilter 内核模块为什么安装 K…

iptables防火墙的通俗理解,和k8s中的iptables策略使用

iptables是什么? 是ip table s ip 表格 多个 就是 多个和ip有关系的表格 什么是ip? 每个网络设备的唯一标识 有这个,能和别的有ip的设备聊天 没这个,得想别的办法 拿四版本来说 ip是32个二进制数 比如…

JAVA并发编程JUC包之CAS原理

在JDK 1.5之后,java api中提供了java.util.concurrent包,简称JUC包。这个包定义了很多我们非常熟悉的工具类,比如原子类AtomicXX,线程池executors、信号量semaphore、阻塞队列、同步器等。日常并发编程要用的熟面孔基本都在这里。…

Rk3588 Android12 AIDL 开发

AIDL (Android Interface Definition Language) 和 HIDL (HAL Interface Definition Language) 都是 Android 系统中用于定义接口的工具,但它们有不同的用途和特性。 AIDL (Android Interface Definition Language) 用途: 主要用于应用程序之间的进程间…

基于SpringBoot的智能物流仓库管理系统-源代码-论文

💥💥源码和论文下载💥💥:基于SpringBoot的智能物流仓库管理系统-源代码-论文-数据库 1. 系统介绍 物流快递仓库管理是一项非常繁琐复杂的工作,每天要处理大量的单据数据,包括入库、出库、退库、…