【计算机网络】初识网络原理

您所在的位置:网站首页 网络端口接线是电信还是装修公司接 【计算机网络】初识网络原理

【计算机网络】初识网络原理

2023-06-06 18:34| 来源: 网络整理| 查看: 265

目录

前言

一、网络发展

局域网

局域网组建网络的方式

广域网

二、网络通信的基础

IP地址:

端口号:

认识协议:

五元组:

协议分层:

OSI七层模型

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

🔅封装和分用

封装:

分用:

前言

        随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成 业务,就有了网络互连。 网络互连:将多台计算机连接在一起,完成数据共享。 数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。 本篇博客就主要来介绍一下网络通信中的一些常见的概念。

一、网络发展 局域网

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

局域网组建网络的方式

(1)基于网线直连

(2)基于集线器组建

(3)基于交换机组建

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

广域网

        广域网,即 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之间的十进制整数)。如: 100.4.5.6。接着我们再将二进制位转换为十进制位(也称为“点分十进制”),即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:上面的二进制转为十进制就是100.4.5.6。常见的还有192.168.1.1等等,其实都是这样转化而来的。

        一个特殊的IP:本机的IP为127.0.0.1。

        IP解决了网络通信中的定位网络主机的问题,但是我们一台主机上有非常多的应用,我们又该如何来确定具体发给按一个应用程序呢?这时候就需要端口号了。

端口号:

        概念:在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。(进程也就是应用程序)

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

关于端口号的注意事项:

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

        了解:一个进程启动后,系统会随机分配一个端口(启动端口) 程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。 进程绑定一个端口号后,fork一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能绑定同一个端口号。

        思考:有了IP地址和端口号,我们就已经可以确定信息要发送到的具体位置,但是,计算机的传输是以二进制的形式,也就是传输的0/1这样的信号,我们接收到的信息也是0/1这样的信息。这样的信息我们是无法看懂的。所以就需要发送消息和接收消息的双方来规定如何解析这样的信息。这时候计算机中就引入了协议的概念。

认识协议:

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

1. 语法:即数据与控制信息的结构或格式; 类似打电话时,双方要使用同样的语言:普通话 2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应; 语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。 类似打电话时,说话的内容。一方道:你瞅啥?另一方就得有对应的响应:瞅你咋的!

3. 时序,即事件实现顺序的详细说明。 时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。 女生和男生的通话,总是由男生主动发起通话,而总是在男生恋恋不舍的时候,由女生要求结束通话。

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

        协议的作用:计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。

网络协议:(为了协议的统一性) 

        计算机生产厂商有很多; 计算机操作系统,也有很多; 计算机网络硬件设备,还是有很多; 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;

一些知名协议的默认端口:

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议;

        如: 22端口:预留给SSH服务器绑定SSH协议

        21端口:预留给FTP服务器绑定FTP协议

        23端口:预留给Telnet服务器绑定Telnet协议

        80端口:预留给HTTP服务器绑定HTTP协议

        443端口:预留给HTTPS服务器绑定HTTPS协议

       以上只是说明 0 ~ 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用其他 1024 ~ 65535 范围内的端口来绑定知名协议。 意思就是知名协议拥有知名端口号的使用权,但是可以自己选择使用与否。

五元组:

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

这五个元组分别是:

        1. 源IP:标识源主机

        2. 源端口号:标识源主机中该次通信发送数据的进程

        3. 目的IP:标识目的主机

        4. 目的端口号:标识目的主机中该次通信接收数据的进程

        5. 协议号:标识发送进程和接收进程双方约定的数据格式

五元组其实就类似于生活中的发快递:

协议分层:

        什么是分层:下图就是一个分层的例子,以下将协议分了两层,可以理解为一层是语言协议层,一层是通话层。这样子分层就可以方便后续针对某一层协议进行替换。两层协议之间的耦合低,上层不用了解下层的细节,下层也不用了解上层的细节。

        为什么协议需要分层:

        分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。 在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类 (使用方,使用服务): 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

 真实的网络分层:主要有两种分层协议:OSI七层模型和TCP/IP五层(或四层)模型

OSI七层模型

        由于OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。 实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来 实现。

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

        TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

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

对于TCP/IP 五层的介绍(从上至下):         应用层:关注的是传输过来的数据,要干什么用。

        传输层:负责两台主机之间的传输,只关注传输的起点和终点,不考虑中间如何传输。就好比我们网购东西,淘宝客服只关注发货地和收货地,不关注快递公司如何运输的。

        网络层:负责地址管理和路由选择。关注的是中间的运输路径的规划。这就好比快递公司拿到一个包裹后,要规划包裹要从哪里发到哪里。

        数据链路层:负责设备之间的数据帧的传送和识别。关注的是两个节点之间如何传输,比如快递公司运送包裹,从泉州到西安要用火车运输还是汽车运输。

        物理层:负责光/电信号的传递方式。。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同 轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

对于程序猿来说:一般情况下我们是不考虑物理层的,所以也称为TCP/IP四层模型。

🔅封装和分用

接下来我们以UDP协议来重点介绍一下数据传输过程中的封装和分用:

封装:

封装就是发送方要发送数据,要把数据从上到下,依次交给对应层次的协议,进行封装。

分用就是接收方接收数据,要把数据从上到下依次交给对应层次的协议,进行解析。

接下来我们以qq发送消息为例,具体介绍一下封装和分用的过程:(这里的封装只是举个例子,qq具体并不是真的这样封装的,可能是采用了更加复杂的封装)。

封装的过程本质就是字符串的拼接,为了区分各个字段,会引入一些分隔符。

        第一步:假设我在qq的编辑框输入:hello world!经过应用层封装之后大概是这样:

        第二步:传输层拿到应用层传过来的数据报:应用层要调用传输层提供的api来处理上述数据报,传输层典型的协议有UDP和TCP协议;我们这里使用UDP协议为例:

         在传输层会给应用层传来的数据报加上一层标签,这就类似于快递,商家在发货前会先给商品套上一层包装,但是快递小哥拿到以后还会再套上一层包装,这主要是为了在外包装上贴上一些姓名联系方式收获地址等等一些必要的标签。

        第三步:网络层在拿到传输层传过来的数据之后,就将整个UDP数据报作为载荷,在这个载荷的基础上再套上一层IP协议报头:

        这里的源IP和目的IP就是传输的起始位置和终点位置(也就是确定主机的位置)

        第四步:数据链路层拿到网络层传过来的数据报,这里最常见的协议就是以太网

        这里的MAC地址也叫物理地址,功能和IP地址类似,也是确定传输的起点和终点,不一样的地方在于IP是网络层的路径规划,MAC地址用来描述数据链路层,用于确定即将传输的两个相邻的节点。源MAC地址和目的MAC地址在网络中的传输起到了非常重要的作用,它们帮助网络设备确定数据帧应该从哪个端口转发,并确保数据帧被正确地传输到目的设备。

        举个例子:我们网上购物时,我们下单之后,商家就会通知快递小哥来取件,这时候,商家需要提供发货地址和收货地址,快递小哥拿到包裹之后,就需要根据收货地址来确定下一步要发往哪个地方进行中转。上述例子中,商家提供的就相当于源IP和目的IP,而在运输过程中,快递要经过多次的中转最后才能到达我们手中,在这个过程中,每次中转的起始地址和最终地址就可以认为是源mac和目的mac。 

        第五步:最后数据链路层就会把上述的以太网数据帧交给物理层,物理层再把上述的二进制数据以光信号或者电信号的形式进行传输了。

        封装的大致过程就如上面所描述的那样,接下来就来介绍一下分用的过程:

分用:

        分用的过程和封装的过程恰好相反,我们忽略具体转发的过程只考虑另外一台主机上接收到信息之后的过程:

        第一步:物理层收到高低电平信号,对信号进行解析,转化成二进制序列;

        第二步:物理层交给数据链路层,数据链路层收到一个以太网数据帧(此处从以太网线收到的数据,就是交给以太网协议来处理了),数据链路层就会将这个以太网数据帧去掉帧头和帧尾,取出中间的载荷,接着交给网络层;

        第三步:网络层收到数据链路层的数据后,接下来就由IP协议进行解析数据报,去掉IP系恶意报头,再交给上一层传输层;

        第四步:传输层拿到数据之后,以UDP协议来处理数据报,目的还是取出载荷,再将载荷传递给应用层(这里会借用端口号来区分具体的应用程序,以此来确定要传递给应用层具体哪一个应用程序)。

        第五步:应用程序接收到数据之后,再按照分隔符来解析数据,按照qq号来区分接收方,最后将消息显示到显示器上。

        总结:虽然上述过程看起来十分繁琐、复杂,但是对于计算机来说,计算机的处理速度非常的快,因此我们接收和发送消息的时候并不会感到有太大的延迟。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3