计算机之间为了能够相互通信,建立全球计算机网络,国际标准化组织(ISO)在1978年提出了著名的OSI/RM模型(Open System Interconnection/Reference Model,开放系统互联参考模型)

OSI模型将计算机网络体系结构的通信协议划分为七层,自下而上依次为:

  1. 物理层(Physics Layer)
  2. 数据链路层(Data Link Layer)
  3. 网络层(Network Layer)
  4. 传输层(Transport Layer)
  5. 会话层(Session Layer)
  6. 表示层(Presentation Layer)
  7. 应用层(Application Layer)

 

一、OSI 网络模型

TCP/IP协议遵守一个四层的模型概念:应用层、传输层、网络层、网络接口层

七层协议,从上到下逐层介绍:

1、应用层

应用层是计算机用户的操作界面,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作,例如:HTTP网页服务、TELNET连接、SMTP邮件服务等,前端同学对应用层肯定是最熟悉的。

2、表示层

表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。例如:文本、音频、图片、视频、数据加密等

3、会话层

会话层的作用是建立和管理应用程序之间的通信,发送正确封装过后的信息,不用每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以建立管理了一个自动收发包,自动寻址的功能。例如:长链接 keepalive、短连接等

4、传输层

传输层的主要功能是监控数据传输服务的质量,保证报文的正确传输。当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。例如:TCP、UDP、SPX等

5、网络层

计算机网络中如果有多台计算机,怎么找到目标服务器,如果中间有多个节点,怎么选择路径?这就是路由要做的事。

该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。例如:IP、ICMP、RIP等

6、数据链路层

在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。例如:ARP、RARP、PPP、PPTP、L2TP等

7、物理层

解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。例如:ISO2110、IEEE802、无线wifi协议、中继器、集线器等

注意:第7层物理层协议的下面才是承担传输的媒介,包含网线、光纤等设备。

 

示例:用图片展示上网过程

 

二、OSI 网络协议

第1层,物理层

主要是底层的ISO2110、IEEE802、无线wifi协议、中继器、集线器等,不做介绍

 

第2层,数据链路层的协议

PPP(点对点协议)

点对点协议,主要是用于通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

 

LCP(配置协商)

链路控制协议,是PPP协议的一个子集,在PPP通信中,发送端和接收端通过发送LCP包来确定那些在数据传输中的必要信息

 

PPPOE(拨号点对点协议)

基于以太网的点对点协议,包含发现( Discovery) 和会话( Session) 两个阶段,用于电话线拨号

发现阶段是无状态的,目的是获得PPPoE 终端(在局端的ADSL设备上)的以太网MAC 地址,并建立一个惟一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。

 

PAP、CHAP(用户验证)

这俩是用户验证协议,对用户的账号密码进行校验。

密码验证协议(PAP):2次握手建立身份认证,密码是明文发送的。

挑战握手协议(CHAP):3次握手验证,密码是加密的

 

NCP(配置协商)

网络控制协议,当用户通过用户验证,双方就要用进行网络层上某些配置的协商,比如网络层采取什么协议,用户的IP地址是什么。

 

HDLC

高级链路数据控制。是一种面向比特的链路层协议,是PPP的前身。

IEEE 802标准把数据链路层分为两个子层:MAC、LLC。

 

MAC

介质访问控制子层,该层与硬件相关,提供硬件和LLC层的接口,所以说MAC是数据链路层的地址标识。

一台电脑要上网,必须保证在这个网络上,这台电脑的mac地址是唯一的。因为网络上的数据是根据mac地址来传输的,同一个网络上的两台电脑有一样的mac地址,发给这个mac地址的数据就不知道应该传给哪台电脑了。

 

LLC 逻辑链路控制

该层与硬件无关,实现流量控制等功能

 

CSMA/CD协议

载波监听多路访问/冲突检测,是一种争用型的介质访问控制协议,整个协议中最关键的是载波监听、冲突检测两部分。冲突检测原理:计算最小帧长、二进制指数后退算法(这俩是重点)。此外,IEEE802体系需要了解。

 

第3层、网络层协议

IP    因特网协议。

IGMP  组播协议。

RIP 路由信息协议,端口号:520。属于内部路由协议。

OSPF 开放最短路径优先协议。端口号:89。属于内部路由协议。

BGP 边界网关协议。端口号:179。属于外部路由协议。

EIGRP 增强内部网关路由协议。端口号:88。 属于内部路由协议。

 

ICMP  因特网控制信息协议

作用:用于在IP主机、路由器之间传递控制消息。

控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。不同的ICMP类型代表不同意义得记住。ICMP 会和 PING 、Traceroute命令结合。

 

ARP   地址解析协议

作用:通过 IP地址(逻辑地址)寻找MAC地址(物理地址),也就是将 32位IP地址 解析成 48位以太网 的操作。

 

RARP  反地址解析协议。

作用:也就是将 48位以太网 解析成 32位IP地址。

路由协议分为静态路由协议、动态路由协议。动态路由协议分为内部路由协议、外部路由协议。

 

第4层、传输层

TCP/UDP(或TCP/IP)保留的传输层端口号范围是 165535。公认端口:11023 。动态端口:1024~65535

TCP  传输控制协议。用于精准的数据传输。(有连接)   端口号:80

UDP  用户数据报协议。(无连接)  用于音视频信号传输。

 

第5层、会话层

RPC  远程过程调用协议,没有默认端口,它是动态获取端口的,采用C/S模式。

基于Socket,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

 

第6层、表示层

主要处理两个通信系统中交换信息的表示方式,为上层用户解决用户信息的语法问题,包括数据格式交换、数据加密与解密、数据压缩与终端类型的交换,例如 SSH加密、图片压缩、文本压缩等。

 

第7层、应用层

FTP  文件传输协议,端口号 21

端口20:数据连接 ; 端口21:控制连接

文件通过服务器进行上下行的传送,使用C/S工作方式,使用20号端口做数据连接,21号端口做控制连接。FTP有两种模式:主动模式和被动模式,被动模式下数据连接端口由服务器指定或随机。

FTP 在客户端和服务器之间传输文件,通常被认为是一种“不安全”的文件传输协议。

这是因为 FTP 以明文形式发送数据并提供不需要密码的匿名选项。但是,FTP 是一种受信任且仍被广泛使用的文件传输协议。

 

SSH (Secure Shell)远程登录协议,是Telnet的加密加强版,端口号 22

SSH协议是一种网络通信协议,用于在远程计算机上执行操作,但它也可用于传输数据。通过默认 SSH 端口号 22(可修改SSH的22端口号)运行命令时,客户端和服务器之间就会建立连接。SSH 是作为未加密 Telnet 协议的安全替代品而开发的,它利用加密技术来确保进出远程服务器的所有通信都是加密的。

Telnet 远程登录协议,端口号:23

利用TCP连接使用户可以登录到远程主机上并进行操作,支持网络虚拟终端(NVT) ,NVT使具有异构性的主机可以进行Telnet连接,Telnet采用C/S(客户端/服务端)工作方式。由于该协议是未加密的,它通常只能在局域网内安全使用,因为交换的数据是明文形式的。

 

Portmapper  端口映射器,端口号 111 (TCP、UDP)

Portmapper服务需在客户端和服务器端运行 NFS,在 TCP 和 UDP 协议的端口 111 上运行。

Portmap 使远程程序的动态绑定成为可能。

 

NetBIOS 网络基本输入/输出系统,端口号:137(TCP、UDP)

NetBIOS(网络基本输入/输出系统)主要目的是允许不同计算机上的应用程序进行通信并建立会话以访问文件和打印机等共享资源,以及通过局域网 (LAN) 相互定位

 

SMTP 简单邮件传输协议,端口号:25

负责将邮件上传到服务器,只支持 ASCII码文本。端口 25 是最初的标准电子邮件 SMTP(简单邮件传输协议)端口,也是自 1982 年首次亮相以来最古老的端口。即使在 4 年之后,端口 25 上的 SMTP 仍然是通过互联网在邮件服务器之间发送电子邮件的基本标准。

 

S/MIME  多用途国际邮件扩充协议。

负责将多媒体邮件安全上传到服务器,支持文本、图片、音频、视频等。

 

POP3  邮局协议第3版,端口号:110

负责将邮件从服务器下载到客户端,邮件被下载后服务器就删除此邮件。

提供了SSL加密的POP3协议被称为POP3S。

 

IMAP4   交互式数据消息访问协议第4版,端口号:143

基本功能和POP3 一样,提供摘要浏览,读取后仍在服务器保留邮件,并不会删除。

 

SMTP 简单邮件传输协议,端口号:587

默认的邮件提交端口,当用户提交要通过适当的邮件服务器路由的电子邮件时,这将提供最佳结果。将端口 587 与 TLS 加密结合使用,可确保安全发送电子邮件并遵循 IETF 的要求。

IMAPS 基于 SSL 的 IMAP,默认端口为 993

IMAP 数据流量通过安全套接字传输到安全端口,加密后有助于确保在 Internet 上的安全和隐私。

 

PGP、PEM

邮件加密协议。

 

HTTP  超文本传输协议,默认端口号:80

在WWW万维网上提供各种信息而专门设计得一种协议,优点在于一次连接只处理一个请求做一次应答,统一占用TCP协议的80端口,通过统一资源定位符(URL)对信息进行寻址定位。

HTTP代理服务器:端口号8080.

 

HTTPS  HTTP的加密升级版,端口号:443

HTTPS 是安全的超文本传输协议,这是一个每天有全球数十亿人使用的端口,超过 95% 的安全网站通过端口 443 使用 HTTPS 进行安全数据传输。

 

SNMP 管理端的默认端口,端口号:162

主要用来接收Agent的消息如TRAP告警消息。端口号:161,代理端(agent)的默认端口,接收管理端下发的消息如SET/GET指令等。简单网络管理协议。

主要用在局域网中对设备进行管理,应用最为广泛的是对路由器交换机等网络设备的管理,当然不仅限于网络设备。SNMP分为管理端和代理端(agent)。

 

使用UDP的协议如下:

DNS  域名系统,端口号:53

DNS(域名系统)将域名转换为 IP 地址。借助 DNS 服务器,人们可以在浏览器中输入正常的域名(例如:blog.mimvp.com),而无需记住每个网站的 IP 地址。DNS 被设计为同时使用 UDP 和 TCP 端口 53,其中 UDP 是默认值,当它无法在 UDP 上通信时,会退到使用 TCP,TCP比UDP更安全但更耗时。

 

DHCP 动态主机配置协议,端口号:67 、 68

为 TCP/IP 网络上动态配置的主机提供网络地址,它使用 UDP 端口 67 和 68。服务器应使用端口 67,客户端应使用端口 68

 

NFS 网络文件系统,共享文件,端口号:2049

TFTP 简单文件传输协议,端口号:69

用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

 

网络中有两种使用端口号的主要传输协议:TCP 和 UDP

TCP 传输控制协议,是一个面向连接的协议。在交换数据之前,通信设备应先建立连接,传输完数据后再将其关闭。TCP 是使用最广泛的网络协议,非常可靠,可用于从浏览网页到发送电子邮件和文件传输的所有事情。

UDP 用户数据报协议,是一种无连接协议。这是由于缺少与创建、维护和终止连接相关的开销。对于广播和组播网络传输,UDP 是一个不错的选择,例如:视频会议、大规模高清图像传输。

 

 

参考推荐:

Linux 服务端口、配置文件路径

常见网络端口以及协议类型

HTTP 协议的历史进化演变

IPv4 与 IPv6 的比较

IP地址段与子网掩码

TCP/IP 协议详解

TCP/IP 数据报格式

TCP/IP协议头部结构体

TCP三次握手/四次挥手

CentOS 7.9 / 7.2 / 6.5 系统安装指引

Linux 修改SSH 默认端口 22,防止被破解密码

网关、默认网关、自动网关、路由、网关与路由器的关系

Linux 修改默认端口、增加普通用户、使用密钥等安全登录SSH

CentOS 配置Apache、apr、apr-util、apr-iconv、sqlite3

CentOS 安装OpenSSL 支持 QUIC for http/3

Linux 安装 wget、curl

Mac OS 80 端口占用问题的解决方法

Linux 防火墙 iptables 和 firewalld