网络原理~初识

今天开始介绍的是网络,这是最核心最重要的板块之一~

目录

网络互连

[局域网 LAN](#局域网 LAN)

广域网WAN

网络通信基础

IP地址

端口号

协议

发送方的工作

应用层

传输层

网络层

数据链路层

物理层

接收方的工作


网络互连

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

网络互联就是将多台计算机连接在一起,完成数据共享。

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

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

但是我们需要组建网络需要网络设备,在这里我们简单的介绍集线器交换机路由器

局域网 LAN

局域网,即 Local Area Network,简称LAN。 Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下, 是无法通信的。

广域网WAN

广域网,即 Wide Area Network,简称WAN。 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

需要注意的是,广域网和局域网只是一个相对的概念,我们有一个比较小的广域网,也可以看做是一个较大的局域网。

网络通信基础

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。 那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

IP地址

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。

就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

**格式 :**IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节),如: 01100100.00000100.00000101.00000110。通常用"点分十进制"的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。例如最熟悉的:192.168.1.1

特殊IP :127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开 发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

端口号

端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。

类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

**格式 :**端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制 0/1数据来传输,如何告诉对方发送的数据是什么样的呢? 网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串"你好!":如何标识发送的数据是文本类型,及文本的编码格式呢? 基于网络数据传输,需要使用协议来规定双方的数据格式。

协议

协议是网络通信中最核心的概念。

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从 的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互 通信交流。

通常由三要素组成:

  1. 语法:即数据与控制信息的结构或格式;

  2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;

  3. 时序,即事件实现顺序的详细说明。

协议(protocol)最终体现为在网络上传输的数据包的格式。

为什么需要协议?

计算机之间的传输媒介是光信号和电信号。

通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。 计算机生产厂商有很多; 计算机操作系统,也有很多; 计算机网络硬件设备,还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共 同的标准,大家都来遵守,这就是网络协议。

网络通信,是一个比较复杂的事情,需求场景复杂了,实现功能也会比较复杂。如果这个协议太复杂了,那么学习成本、使用成本、理解成本、维护成本都会非常高。因此实际采取的做法是:

**针对这个复杂的大协议,拆分成若干个相对简单的小协议。**随着把协议拆分成一些小的协议,每个协议负责一部分功能,此时就发现,某些协议之间,起到的功能和作用是类似的~针对这些小的协议,再进行(分类、分层)。

当前互联网世界,协议分成有两种风格:

OSI七层网络模型(教科书上教的)

TCP\IP五层网络模型(实际上的情况)(不算物理层就是四层)

越往下,越接近硬件设备。越往上,越接近用户。

直接和咱们打交道的,其实只是应用层,下面四层都是现成的,只需要知道如何工作的就行了~

应用层是应用程序实现的,下面两层是通过硬件和驱动设备来实现的。

下面我们就来详细的说说每个层之间会干一些什么事情:

首先我们假设一个应用场景:

用户在输入框中输入hello这个字符串,用qq这个应用程序就会把这个字符串构造成一个应用层数据报

发送方的工作

应用层

应用层数据具体的数据格式我们是不知道的,每个应用程序都不一样。我们这里假设一个应用层协议的格式:

应用层数据报本质上就是一个遵守了约定格式的字符串,程序调用操作系统的API,把这个应用层数据交给传输层。

传输层

到传输层就代表着从应用层面进入到操作系统内核了。

在传输层中,就要把上述应用层数据,构造成传输层的数据报。

传输层使用到的协议最知名的就是UDP 和**TCP。**比如此处使用UDP,那么就需要构造出UDP数据报,比如在应用层数据的基础上加上一个UDP报头。

此处就像字符串拼接一样,把这个报头和后面的数据拼接到一起。所谓的报头其实就是一个标签,通过标签表示出当前要把这个消息怎样进行传输。

网络层

最知名的协议:**IP协议。**IP协议要基于上述数据,打包成一个IP数据报。

也相当于是一个字符串,包含了另外一组信息:源IP和目的IP。

之后网络数据报准备好,进一步的交给数据链路层。

数据链路层

最知名的协议:**"以太网"。**基于上述数据,还要打包成为一个"以太网数据帧"。

接下来这个数据继续往下传输,交给物理层。

物理层

把上述的二进制数据转换成电信号\光信号,然后发送出去。

上述过程,从应用层到物理层,层层加码,这个过程称为"封装"。

接收方的工作

上述,从下到上,层层解析,这个过程称为"分用"。

其中,发送方使用的QQ协议、UDP、IP、以太网,必须接收方也使用对应相同的协议。

整个的网络协议中,协议分成了很多层。上层协议要调用下层协议,下层协议要给上层协议提供支持。这几层协议之间是有明确的层级关系的,只有相邻的两层才能交互。(不能跨层交互)。

所以通过上述这些约束,让通信过程变得简单、清晰起来。

相关推荐
醉颜凉5 分钟前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
阿维的博客日记10 分钟前
java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
java·jvm
qiyi.sky10 分钟前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
lapiii35814 分钟前
图论-代码随想录刷题记录[JAVA]
java·数据结构·算法·图论
RainbowSea17 分钟前
4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
java·spring·spring cloud
程序员小明z17 分钟前
基于Java的药店管理系统
java·开发语言·spring boot·毕业设计·毕设
叫我龙翔30 分钟前
【计网】实现reactor反应堆模型 --- 多线程方案优化 ,OTOL方案
linux·运维·网络
爱敲代码的小冰36 分钟前
spring boot 请求
java·spring boot·后端
Lyqfor1 小时前
云原生学习
java·分布式·学习·阿里云·云原生
?crying1 小时前
蓝队基础4 -- 安全运营与监控
网络·安全·web安全