目录
一、IP地址
二、端口号
三、协议
四、五元组
五、协议分层
1. OSI 模型
2. TCP/CP五层(或四层)模型
3. 网络设备所在分层
六、封装和分用
封装(Encapsulation)
分用(Multiplexing)
一、IP地址
IP地址是 Internet Protocol Address(互联网协议地址)的缩写:
- 它是用于在网络上唯一标识和定位设备的数字标签。在 Internet 上,每个连接到 Internet 的设备(如计算机、路由器、服务器等)都被分配一个唯一的 IP 地址,简单来说,IP地址用于定位主机的网络地址。
IP地址的主要作用:
- 用于在 Internet 上的数据通信中确定发送和接收数据的设备。当你在浏览网页、发送电子邮件、下载文件或进行其他网络活动时,你的设备和其他设备之间的通信都需要使用 IP 地址来定位和识别彼此。就像发送快递一样,需要同时知道发件人的地址和收件人的地址。
IPv4 和 IPv6 是当前两种主要的 IP 地址版本:
- IPv4 地址由 32 位二进制数表示,通常以点分十进制表示,如 192.0.2.1。(目前最广泛使用的IP地址,IPv4 地址空间的最大限制是约 43 亿个唯一地址,这在互联网的早期足够大。然而,随着互联网的发展和普及,IPv4 地址资源逐渐枯竭)
- IPv6 地址由 128 位二进制数表示,通常以冒号分隔的十六进制数表示,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。(IPv6的出现,就是为了解决IPv4地址接近枯竭的问题,IPv6可以为地球上每一粒沙子设置IP地址)
除了用于设备之间的通信外,IP 地址还可以用于确定网络中的位置、限制或允许对特定网站或服务的访问,以及诊断网络问题等方面。
二、端口号
端口号是计算机网络中用于标识特定服务或应用程序的编号。在TCP/IP协议中,端口号是一个16位的数字,范围从0到65535。简单说,端口号用于定位主机中的进程。
有了 IP 可以确定主机,但是一个主机上可能有很多程序在使用网络,主机收到网络数据就需要区分出是交给哪个程序使用数据。
类似发送快递时,不光需要收获地址(IP地址),还需要指定收件人(端口号)。
对于一次网络通信的过程中,涉及到的 IP 和 端口,其实各有两个:
- 收件人地址 => 目的IP
- 收件人电话 => 目的端口
- 发件人地址 => 源IP
- 发件人电话 => 源端口
三、协议
协议,网络协议的简称。是计算机网络中用于在不同设备之间传输数据和进行通信的规则和约定。它们定义了数据在网络中的传输格式、传输方式、错误检测和纠正方法等。
为什么要有协议?
- 进行通信的两个计算机,可能来自不同的生产厂商;可能使用的是不同的操作系统;可能两台计算机的网络硬件设备也是来自不同厂商。而为了确保任意的两个计算机之间都能进行网络通信,就要求这些计算机需要遵守相同的网络协议。
四、五元组
在 TCP/IP 协议中,可以用五元组来标识一个网络通信:
- 源IP:标识源主机
- 源端口号:标识源主机中该次通信发送数据的进程
- 目的IP:标识目的主机
- 目的端口号:标识目的主机中该次通信接受数据的进程
- 协议号:标识发送进行和接受进程双方约定的数据格式
可以在cmd中,输入 netstat -ano 查看网络数据传输中的五元组信息:
五、协议分层
网络通信过程中,需要涉及到的细节,其实是非常非常多的。如果一个协议来完成网络通信,就需要约定好很多很多内容,其中非常多的细节,导致这个协议非常复杂。
因此,对于网络协议来说,往往分成几个层次进行定义。
协议分层类似于打电话时,定义不同层次的协议:
在这个例子中,协议只有两层(语言协议和电话机协议),实际上的网络通信更复杂,需要分更多层次。
把功能定位相似的协议放到同一层中,只有相邻的层次之间可以进行沟通,不能跨层次沟通。这样做是为了让一个复杂的协议变成多个简单的协议,且附带了一些好处:
- 上层协议之间使用下层协议即可,不需要了解下层协议的细节.(只要都说汉语,就能打电话,不用了解电话的工作原理)
- 对某一层的协议进行替换之后,对其他层没有影响.(都说汉语改成都说英语,同样能够打电话)
两个主要的协议分层模型是 OSI 模型和 TCP/IP 模型。
1. OSI 模型
OSI 模型:该模型是由国际标准化组织(ISO)制定的参考模型,将网络通信划分为七个不同的层次,从底层物理连接到顶层应用程序。每个层次负责不同的功能,且在通信过程中逐层传递数据
OSI 模型的七个层次分别是(最低层到最高层):
- 物理层(Physical Layer):负责定义物理介质上的数据传输方式,如电压、频率等。
- 数据链路层(Data Link Layer):负责在相邻节点之间传输数据,包括数据帧的组装和解析。
- 网络层(Network Layer):负责在不同网络间进行数据路由和转发,实现数据的传输。
- 传输层(Transport Layer):负责两个节点的之间数据传输,提供可靠的数据传输服务,如 TCP 和 UDP。
- 会话层(Session Layer):负责建立、管理和终止会话连接。
- 表示层(Presentation Layer):负责数据的格式转换和编码,确保不同系统间数据的兼容性。
- 应用层(Application Layer):提供用户与网络服务之间的接口,包括各种应用程序和协议,如 HTTP、FTP、SMTP 等。
OSI 七层模型即复杂又不使用,所以 OSI 七层模型没有落地、实现。
实际组件网络时,只是以 OSI 七层模型设计中的部分分层,即以下 TCP/IP 五层(或四层)模型来实现的。
2. TCP/CP五层(或四层)模型
TCP/IP 模型:该模型是实际应用中最常用的网络协议模型,将网络通信划分为五/四个层次,是互联网的基础。各层次具体内容与前面类似,这里假设在网上购买了一件物品,来阐述五个层次做的事情(商家发货需要关注:收件人地址,收件人电话,发件人地址,发件人电话;包裹运输的起点和终点)。
TCP/IP 模型的五个层次是(最高层到最低层):
- 应用层:程序拿到数据之后,要用来干啥,解决什么问题。(商家接到订单,将包裹交给快递公司)
- 传输层:负责关注网络数据包起点和终点。(发货地址和收件地址)
- 网络层:负责关注起点和终点之间,要走哪条路。(快递公司进行路线规划,比如上海 => 南京 => 石家庄 => 北京)
- 数据链路层:负责两个相邻节点之间的传输。(比如上海到南京,铁路运输;南京到石家庄,飞机空运;石家庄到北京,货车运输)
- 物理层:通信过程中的基础设施。(公路,铁路,航线等)
而如果算四层模型,则不算物理层,因为物理层是纯硬件,考虑的比较少。
3. 网络设备所在分层
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP五层模型的下四层.
- 对于一台路由器,它实现了从网络层到物理层(工作在网络层),也就是TCP/IP五层模型的下三层.
- 对于一台交换机,它实现了从数据链路层到物理层(工作在数据链路层),也就是TCP/IP五层模型的下两层.
- 对于集线器,它只实现了物理层.
这里所说的是传统意义上的交换机(二层交换机)和路由器(三层路由器)。随着网络设备技术的发展,也出现了很多三层或四层交换机,四层路由器。
六、封装和分用
封装(Encapsulation)和分用(Multiplexing)是网络通信中两个重要的概念,是网络传输数据的过程中,最核心的流程。
封装(Encapsulation)
封装是指将数据从一个协议的格式转换为另一个协议的格式的过程。在网络通信中,数据在传输过程中需要经过多个层次的协议处理,每一层都会在数据上添加一些特定的信息(称为协议头部),以便在接收端能够正确地解析和处理数据。封装就是在每一层添加相应的协议头部,形成一个数据包(Packet),使得数据能够在网络中传输。
- 不同的协议层对数据包有不同的称谓,在传输层中较做段(segment),在网络层中叫做数据报(datagram),在链路层叫做帧(frame)。
下图为数据封装的过程:
分用(Multiplexing)
分用是指在通信链路上同时传输多个信号或数据流的技术。通常情况下,通信链路的带宽是有限的,为了更有效地利用带宽资源,可以采用分用技术将多个信号或数据流合并到同一条链路上进行传输,然后在接收端再将其分离出来。常见的分用技术包括时分复用(TDM)、频分复用(FDM)和码分复用(CDM)等。
下图是数据分用的过程:
封装和分用之间是相辅相成的概念:
- 封装提供了实现分用的手段,通过隐藏对象的内部细节和提供简单的公共接口,实现了对对象的抽象,从而简化了对象的使用。
- 分用则强调隐藏对象的复杂性,使得用户只需关注对象的功能而不必了解其具体实现方式,从而简化了对象的理解和使用。