【网络原理】初识相关概念

文章目录

一、网络发展史

独立模式

即各个计算机之间相互独立

网络互连

即将多个计算机连接在一起,完成数据共享。

随着时代的发展,越来越需要计算机之间相互通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

数据共享的本质是 网络数据传输 ,即计算机之间通过网络来传输数据,也成为网络通信

根据网络互连的规模,可以分为 局域网广域网

局域网(LAN)

即 Local Area Network,简称 LAN。

Local 即标识了局域网是本地、局部组建的一种私有网络。

局域网内的各个主机之间能够方便地进行网络通信,构成内网;局域网与局域网之间在没有连接的情况下,是无法进行通信的。

局域网组建网络的方式:

  1. 基于网线直连:

  2. 基于集线器(Hub)组建:

  3. 基于交换机(Switch)组建:

  4. 基于交换机和路由器(Router)组建:

广域网(WAN)

即 Wide Area Network,简称 WAN。

通过路由器,将多个局域网连接起来,在物理上组成一个很大的范围,形成了广域网。广域网内部的所有局域网都属于其子网。

全球化的公共型广域网称为 互联网(又称公网、外网),属于广域网的一个子集。有时候在没有限定条件下说的广域网,是指互联网。

所谓的 "局域网" 和 "广域网" 是相对的概念。

二、网络通信基础

网络互连的目的是进行网络通信,也即是网络数据传输,更具体⼀点地说,是网络主机中的不同进程间,基于网络传输数据。

那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到哪台主机呢?这就需要使用 IP 地址来标识。

IP 地址

概念

IP 地址主要用于标识网络主机和其他网络设备(如路由器)的网络地址。可以理解为:IP 地址用于定位主机的网络地址(在网络世界中的位置)。

比如快递,需要有收货方的地址才能将货物运送过去。

格式

IP 地址是一个 32 位的二进制数,通常被分割成 4 个 " 8 位二进制数",如:01100100.00000100.00000101.00000110。

由于二进制的形式人难以看懂,于是通常采用 "点分十进制" 的方式来表示,即 x.x.x.x 的形式,其中的每一个 "x" 都是 0 ~ 255 之间的十进制整数。如:100.4.5.6。

端口号

概念

在网络通信中,IP 地址用于标识通信主机的网络地址,而定位到主机之后,还需要知道需要发送数据的是主机中的哪一个进程,而不是将整个主机中的数据都发送,因此,端口号用于标识主机中发送数据/接收数据的进程

比如发送快递,收货地址定位到了某个小区(IP 地址),同时也需要知道哪一个住户是收货人(端口号),这样才能把包裹送到家门口。

格式

端口号是 0 ~ 65535 范围内的数字。

在网络通信中,进程可以通过绑定一个端口号,来发送/接收网络数据。

虽然通过 IP 地址和端口号能够定位网络上一个主机的唯一进程,但是如何告诉接收方要接收的数据是什么样的呢?网络通信是基于二进制数据来传输的,可是接收方怎样知道这个呢?

这时候就需要使用 "协议" 来规定双方的数据格式。

协议(Protocol)

概念

网络协议,简称协议,是网络通信中数据所经过的所有网络设备都必须遵从的一套约定、规则。比如怎样建立连接、如何相互识别等。只有遵从这个约定,计算机之间才能相互通信交流。

协议最终体现为网络上传输的数据包格式

作用

如同对暗号,协议就是一种提前的约定。

计算机之间的传输媒介是光电信号,通过频率和强弱标识高低电平。若想要传输不同信息,需要约定好双方的数据格式。

而且,由于不同计算机的硬件设备厂商不同,也需要通过一种规定来让不同计算机相互通信。网络协议就是充当这种角色。

五元组

在 TCP/IP 协议中,使用五元组来标识一个网络通信:

  1. 源 IP:标识发送方主机的网络地址
  2. 源端口号:标识发送方主机中发送数据的进程
  3. 目的 IP:标识接收方主机的网络地址
  4. 目的端口号:标识接收方主机中接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

协议分层

由于网络通信往往十分复杂,各中问题都有相关协议处理,导致整个网络协议变得乱糟糟的,因此,将各部分协议归为一类(分层),每一层协议各司其职,且只能相邻的两层之间进行交互,不能跨层交互。

分层对每一层协议进行了封装,每一层不需要了解其他层的具体细节。此外还进行了解耦,对任意一层进行替换也不会影响到整体。

分层的作用类似于面向接口编程:定义好两层之间的接口规范,双方都遵循这个规范来对接。

在代码中,类似于定义好一个接口,一方是接口的实现类(提供方,提供服务),一方是接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可。
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。
    这样就能更好地扩展和维护。

OSI 七层模型

即 Open System Interconnection,开放系统互连。

  • OSI 七层网络模型是⼀个逻辑上的定义和规范:把网络从逻辑上分为了7层。
  • OSI 七层模型是⼀种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输。

OSI 七层模型划分为一下七层:

由于 OSI 七层模型过于复杂,实际网络是以 TCP/IP 五层(或四层)模型来组建的。

TCP/IP 五层(或四层)模型

TCP/IP 是一组协议的代名词,实际上包括了许多协议,这些协议组成了 TCP/IP 协议簇。

TCP/IP 通讯协议采用了五层的层级结构,每一层都是通过调用下一层所提供的网络来完成自己的需求。

我们对五层模型的每一层展开介绍:

  1. 应用层:负责应用程序之间的沟通 。它定义了应用程序之间如何交换数据,如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们写代码进行网络编程也是在应用层。应用层的数据单元是 报文消息
  2. 传输层:负责端到端的通信,具体来说是两个主机中的特定应用程序的某个进程之间的对话(数据传输) 。如传输控制协议(TCP),能够确保数据可靠地从源主机发送至目的主机。只考虑起点和终点(即两台主机)的数据传输而不考虑传输的中间过程。传输层的数据单元是 段(segment,TCP 协议)数据报(datagram,UDP 协议)
  3. 网络层:负责将数据包从源主机跨越多网络传输到目标主机,其核心任务是逻辑寻址和路由选择 。如 IP 协议中,通过 IP 地址来标识某台主机,路由器根据数据包的目标 IP 地址,查询自身的路由表,为数据包选择一条最优的路径,将其转发到下一个路由器,直到最终目的地。简单来说,就是负责考虑两台主机数据通信的中间过程。我们常见的路由器(Router)就是工作在网络层。网络层的数据单元是 包(package) 或者 IP 数据报(datagram)
  4. 数据链路层:负责在同一个局域网内,进行节点到节点的可靠帧传输 。如网卡设备的驱动、帧同步(检测新帧的开始信号)、冲突检测(若有冲突就自动重发)、数据差错校验等工作。由以太网、令牌环网、无线 LAN 等标准。交换机(Switch)工作在数据链路层。数据链路层的数据单元是 帧(frame)
  5. 物理层:负责在物理媒介上(光信号/电信号)传输比特流(bit stream) 。定义了所有的物理规格,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤以及现在的 wifi 无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的。物理层的数据单元是 比特(bit)

封装

  1. 应用层将数据从上往下通过协议栈发送到网络上的过程中,每到一层都要加上一个数据首部(header),这就是 封装(Encapsulation)
  2. 首部中包含了以下有关该数据的信息如首部长度、载荷(payload,即上层的数据包)长度以及上层协议等信息。
  3. 数据封装完成后发送到物理媒介(光电信号)上,到达对端主机之后再从下往上逐层去除相应的首部并分析,根据首部中的有关上层协议的信息,,将载荷部分数据交给对应的上层协议处理。

发送方的封装过程(从上到下依次打包)

  1. 应用层 :当用户在浏览器的 URL 栏输入网址并点击回车,浏览器就会生成一个 HTTP 请求报文,然后将报文传给下层传输层
  2. 传输层 :接收到上层的 HTTP 请求报文后,将报文作为载荷数据,加上 TCP 头 (其中包含源端口和目的端口),打包成一个 TCP 段,然后传给下层网络层
  3. 网络层 :接收到上层的 TCP 段后,将其作为载荷数据,加上 IP 头 (其中包含源 IP 地址和目的 IP 地址),打包成一个 IP 数据报,然后传给下层链路层
  4. 数据链路层 :接收到上层的 IP 数据报后,将其作为载荷数据,加上帧头帧尾 ,打包成数据帧
  5. 物理层 :将数据帧转为比特流,通过物理媒介发送出去。

接收方的解封装(从下到上依次拆包)

  1. 物理层 :接收到比特流后,将其重组为 数据帧
  2. 数据链路层 :检查数据帧的相关信息无误后,去除帧头和帧尾,将剩下的 IP 数据报传给上层
  3. 网络层 :接收到 IP 数据报后,检查目的 IP 地址是否正确,无误后去除 IP 头,将剩下的 TCP 段传给上层
  4. 传输层 :接收到 TCP 段后,检查其中的目的端口号决定要将数据交给那个应用程序,然后去除 TCP 头,将剩下的 HTTP 报文交给上层
  5. 应用层:服务器程序接收到 HTTP 请求报文后,处理并生成 HTTP 响应报文,然后将报文从上往下进行封装并返回给发送方。

面试题1:网络 OSI 模型和 TCP/IP 模型分别介绍一下


  1. OSI 模型:为了使得多种设备能够通过网络相互通信,以及为了解决各种不同设备在网络互联中的兼容性问题,国际标准化组织制定了开放式系统互联参考模型(Open System Interconnection Reference Model),即 OSI 网络模型。该模型主要包含七层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。每一层负责的职能不同,应用层负责给应用程序提供统一的接口;表示层负责将数据转换成能够兼容另一个系统的格式;会话层负责建立、管理和终止表示层实体之间的通信会话;传输层负责端到端的数据传输;网络层负责数据的路由、转发和分片;数据链路层负责数据的封帧和差错检测以及 MAC 寻址;物理层负责在物理媒介上传输比特流。由于 OSI 模型太过复杂,提出的也只是概念理论上的分层,并没有提供具体的实现方案。而在实际比较实用的是 TCP/IP 四层模型。
  2. TCP/IP 模型:TCP/IP 协议被组织成四个概念层,其中有三层与 OSI 参考模型对应。TCP/IP 族并不包含数据链路层和物理层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议共同协作。TCP/IP 模型通常分为四层,从上到下依次是应用层、传输层、网络层和网络接口层。其中,应用层支持 HTTP 和 SMTP 等最终用户进程;传输层处理主机到主机的通信(TCP、UDP 协议);网络层负责寻址和路由转发(IP 协议);网络接口层通过物理电线或无线传输媒介移动比特来传输数据。

文章到这里就告一段落啦,若有错误请尽管指出~

相关推荐
Hello_Embed1 小时前
嵌入式上位机开发入门(二十四):Paho MQTT 嵌入式客户端源码分析
网络·单片机·网络协议·tcp/ip·嵌入式
黄焖鸡能干四碗3 小时前
企业元数据梳理和元数据管理方案(PPT方案)
大数据·运维·网络·分布式·spark
克莱因35810 小时前
思科 Cisco 标准ACL
网络·路由
资深数据库专家11 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
阿正的梦工坊11 小时前
拦截网络请求:一种更优雅的数据获取方式
网络·okhttp
聊点儿技术12 小时前
【游戏风控】如何用IP数据接口从“IP即判罚”升级为“IP参与评分”
tcp/ip·游戏·游戏安全·ip数据库·ip地理定位api·ip数据接口·ip风险画像
LCG元12 小时前
STM32实战:基于STM32F103的4G模块(EC20)HTTP通信
stm32·嵌入式硬件·http
IpdataCloud12 小时前
大数据分析:如何高效查询海量IP归属地?
tcp/ip·数据挖掘·数据分析·ip
TechWayfarer13 小时前
IP归属地API 技术解析与应用实践
网络·网络协议·tcp/ip