网络通信(基本概念篇)--- OSI七层协议

                                                哥几个来学网络通信啦~~

                                             

目录

🥝1. IP地址

🍇2. 端口号

🍐3.MAC地址

💐为什么有了MAC地址了还要有IP地址?

🍈4. 认识协议

概念:

协议的作用:

🍉4. 协议分层

OSI七层模型:

🍕1)应用层

🍔2)表示层

🍟3)会话层

🌭4)传输层

🍿5)网络层

🥓6)数据链路层

🧇7)物理层

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

网络分层对应:

🍊5. 封装

🍋6. 分用

🍌7. 客户端/服务器


🥝1. 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。

特殊IP:

        127.*的IP地址用于本机环回测试(loop back),通常是 127.0.0.1,本机回环就是本机到本机的通信,因为在开发测试的时候,系统为了效率,不会走网络的方式传输。

🍇2. 端口号

        IP地址解决了网络通信时数据需要传送到哪台主机中去,但是这些数据是由哪个进程来接收呢?这时候就要使用端口号了。端口号就是用来标识主机中的进程的。

        还是以快递举例,我们不仅需要知道快递要发向哪里(IP地址),还需要知道快递是由哪个人来接收(端口号)。

格式:

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

注意:

        多个进程可以绑定一个端口号,但是多个不同的进程不可以绑定同一个端口号。进程绑定一个端口号后,如果这个线程fork(复制)了一个子进程,那么就可以实现多个进程绑定一个端口号。但是不同的进程绝对不能绑定同一个端口号。

        一个进程可以绑定多个端口号。

🍐3.MAC地址

🍁1.MAC 地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址。也就是在网络中唯一标识一个网卡(即 MAC 地址只作用于网卡),每个网卡都有一个全球唯一的 MAC 地址。

🌷2.一台手机设备拥有多个网卡(wifi模组、5G模组等),所以一台手机设备也拥有多个 MAC 地址,而且每个 MAC 地址在世界上都是独一无二的。路由器没有网卡,但是拥有 MAC地址。

格式:

MAC 地址长 6 个字节共 48 位,通常使用 十六进制 表示。(例如:52:54:00:3b:ca:3f)

前 24 位由 IEEE 管理机构统一分配,后24 位由厂商自由分配,保证网卡地址全球唯一。

MAC地址用来识别数据链路层中相连的节点。

特殊的 MAC地址:

广播数据报:发送一个广播数据报,表示对同网段所有主机发送数据报。广播数据报的MAC地址为: FF:FF:FF:FF:FF:FF 

💐为什么有了MAC地址了还要有IP地址?

        看到 “每个网卡都有一个全球唯一的MAC地址” 这句话的时候,相信大家可能会新生困惑,那就是:既然mac地址能够唯一标识一个网卡,那么还要IP地址有何用?

                                                           

🍕1.MAC地址是全球唯一的,但是如果我们要在网络中找到这个全球唯一的这个地址是非常难的。就比如我们要在全球范围内找到 张三 这个人,如果不把这个范围缩小,那么找起来如同大海捞针;可是如果我们可以将它的范围缩小到 中国-广东省-佛山市-南海区-大沥镇,那么找起来是不是就轻松多了?而 IP地址 起到的就是缩小范围的作用。所以我们需要通过 IP地址 来确定这个人所在的区域,在局域网中,可以使用本地的 MAC 地址来进行通信。

🍔2.到达目标机器的局域网之后,此时需要利用 MAC地址来确定目标机器。因为局域网的 IP 对应的机器是不固定的,所以在局域网中使用 IP 寻址是不严谨的。

🍟3.假定 MAC地址  就是广播地址,那么所有接收过 MAC包 的路由器都会把这个消息进行转发,因此目标机器会受到很多重复的包(因为各个接受过改包的路由器都将其进行转发)。为了防止上述现象的发生,目前路由器可以做到不转发哪些将 MAC 地址 作为广播地址的 IP数据包)

🌭4.如果不使用 IP地址,那么就需要维护一个极其庞大的 MAC地址表,在查找目的主机的时候,就需要向全世界发送数据包,可想而知会造成很大的网络流量。

🍿5.而且而且我们在网络通信时,往往需要经过很多网络设备,从 X 到 Y 是需要经过很多很多设备的,我们只能一跳一跳的进行网络传输。

一跳一跳的网络传输:

以下为主机B传输数据到主机C经过的网络设备:

 对于以上经过的网络设备:

  • 主机:配有IP地址,但是不进行路由控制的设备;
  • 路由器:即配有IP地址,又能进行路由控制;
  • 节点:主机和路由器的统称;

tips:集线器和二层交换机不会对数据报封装和分用,不算在下一跳设备。

对于网络数据传输,不是想象中那样,数据直接从源主机到达目的主机,而是类似在地图中,从B到C的过程:

唐僧去西天取经,行程为长安、五指山、黑风山、女儿国……大雷音寺。

🚗IP地址描述的是路途总体的起点和终点:

  • 源IP就是整个行程的起点:长安;
  • 目的IP对应为整个行程的终点:大雷音寺。

🚓而行进也必须一个地点一个地点的前进,由MAC地址来描述路途上每一个区间的起点和终点:

  • 从长安到五指山,为一跳的区间,源MAC为长安,目的MAC为五指山;
  • 从五指山到黑风山,为下一跳的区间,源MAC为五指山,目的MAC为黑风山。

🍄总结IP地址和MAC地址

  • IP地址描述的是路途总体的起点和终点;是给人使用的网络逻辑地址。
  • MAC地址描述的是路途上的每一个区间的起点和终点,即每一跳的起点和终点;是给网络硬件设备 使用的网络物理地址。

🍈4. 认识协议

概念:

        协议,就是网络协议。协议是网络通信(网络数据传输)经过所有设备的时候必须共同遵循的一组约定、规则。就像如何建立连接、如何相互识别等等。只有遵循这个约定,计算机才能互相通信交流。协议通常由三要素组成:

1)语法:数据与控制信息的结构或格式。

就像我们打电话时规定使用普通话。

2)语义:需要发出某种控制信息,完成某种动作以及做出某种响应。

语义主要用来说明通信双方应该怎么做,用于协调与差错分析的控制信息。

就像我们打电话时问对方“How are you?”,对方就得回答“I am fine, thank you. And you?”

3)同步(时序):事件时间顺序的详细说明。

同步定义了何时进行通信,先讲什么,后讲什么,说话的速度等。比如采用同步传输还是异步传输。

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

协议的作用:

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

        还有计算机生产厂商多种多样,操作系统多种多样,网络硬件设备也多种多样,想要让这些使用不同操作系统、设备的计算机相互之间流畅地通信,就要用到协议。

还还是以快递举例,IP是收件地址,端口号是收件人,那么协议就是你要选择的快递公司(顺丰还是韵达...)

🍉4. 协议分层

对于网络协议,我们往往需要将它分成几层来定义。

分层的好处就是,只用定义好两层之间的接口规范,让双方遵循这个规范来对接。

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

  • 对于使用方来说,不用关心提供方是怎么实现的,只需要使用接口就行了。
  • 对于提供方来说,使用封装的特性,隐藏了实现的细节,是需要开放接口即可。

 而且如果我们想要对网络协议进行更改的时候,只需要更改某一层的协议进行替换,不用将所有层的协议更改。

只改变语言层:

只改变通信设备层:

 在这个例子中,我们的协议只有两层,但是真正的网络协议要更加复杂。

OSI七层模型:

OSI(Open System Interconnect),即开放式系统互联

🍕1)应用层

应用层是OSI模型中最靠近用户的一层,这一层为用户使用的应用程序提供网络服务。简单来说就是各种应用软件,包括Web应用。是针对应用的协议。

应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。

🍔2)表示层

表示层:

数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。它的行为:数据格式标识、基本压缩和加密功能。

小补充:

表示层管理数据的解密与加密,如系统口令的处理。例如:在 Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。

🍟3)会话层

会话层用于建立、管理、终止会话。控制应用程序之间的会话能力,如不同软件数据分发给不同软件。

例如:当通过拨号向你的 ISP (因特网服务提供商)请求连接到因特网时,ISP 服务器上的会话层向你与你的 PC 客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。

🌭4)传输层

传输层用于定义端到端传输数据的协议端口号,以及流控和差错校验,负责可靠传输。包含了TCP,UDP等协议。

🍿5)网络层

网络层主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。IP地址就是在网络层被定义的。

 
网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。

🥓6)数据链路层

数据链路层有 物理地址寻址、数据的成帧、流量控制、数据的检错、重发等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,能发现错误但无法纠正。数据链路层在不可靠的物理介质上提供可靠的传输。

小补充:

为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

🧇7)物理层

实际最终信号的传输是通过物理层实现的。主要功能就是利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

通过物理介质传输比特流。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。

一张好图:

说明:

  • 在四层,既传输层数据被称作(Segments);
  • 三层网络层数据被称做(Packages);
  • 二层数据链路层时数据被称为(Frames);
  • 一层物理层时数据被称为比特流(Bits)。

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

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

其实TCP/IP 五层(或四层)模型就是OSI 七层模型的简略版,它省去了表示层和会话层。

 TCP/IP五层协议和OSI的七层协议对应关系如下:

最右边是协议运行所在的设备。 

网络分层对应:

网络数据传输时,经过不同的网络节点(主机、路由器)时,网络分层需要对应。

以下为同一个网段内的两台主机进行文件传输:

以下为跨网段的主机的文件传输:

数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

 注释:

以太网:就是指总线型网络,网络中大家共用一条信息通道,大家要传输数据就要等,只有网络空闲时才可以发送信息。太网发送消息的原则是只允许一个主机在任何一个时刻在局域网中发消息。否则就会发生碰撞,如果发生了碰撞就把消息作废然后重发。

令牌环网:简单点理解就是,大家要想发信息就必须取得一个叫令牌的东西,令牌总线把总线形或树形网络中的各个工作站按一定顺序(如按接口地址大小)排列形成一个逻辑环,只有令牌持有者才能控制总线,才有发送信息的权力。

🍊5. 封装

        应用层数据通过协议栈发到网络上,往下走经过每层协议都需要加一个数据首部(header),这个过程称为封装(Encapsulation)。

        这个过程类似于校领导要开一个会议,要求全年级同学在晚上 8:00 到场😃;你滴级长为了保险起见,要求 7:40 到场😗;你滴班主任为了保险起见,要求 7:20 到场🤨;你滴班长为了保险起见,要求 7:00 到场😭(高中时代这种情况应该不少见~~)。这种层层加码的行为就与我们的封装有相似之处。

 首部的信息中包含了类似于首部有多长、载荷(payload)有多长、上层协议是什么等信息~~

🍋6. 分用

        数据封装成帧之后,发到传输介质上,到达目标主机之后再层层剥离到相应的首部,根据首部中存储的上层协议字段再将数据交给对应的上层协议处理。

下图为数据分用过程:

有点类似于快递公司分包裹的行为,先把同一个市的分出来,再把同一个区的分出来,再把同一个镇的分出来,最后再把快递分到目的地址。

每次的传输都会涉及到 封装与分用 :

tips:

  • 中间的 交换机,只需要封装分用到 数据链路层(只需要改 源mac地址 和 目的mac地址)
  • 中间的 路由器,则需要封装分用到 网络层(需要改 源mac地址 和 目的mac地址,同时还需要根据 目的IP 进行下一阶段的路径规划)

🍌7. 客户端/服务器

服务器就是提供服务的一方进程。

客户端就是获取服务的一方进程。

常见的 客户端/服务器 模型:

🍕1.客户端先发请求到服务器

🍔2.服务器根据请求,执行相应的业务处理

🍟3.服务端返回响应:发送业务处理结果

🌭4.客户端根据响应数据,展示处理结果(展示获取到的资源,或提示保存资源的处理结果)

                                好啦,以上就是一些网络通信的基础知识啦~~

                                                        

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值