如何快速理解网络编程

目录

前言

一、网络编程的概念 

 二、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地址

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值