网络分层模型:OSI 与 TCP/IP

目录

1、OSI 模型

2、TCP/IP 模型

3、总结


目前存在的两种网络分层模型:OSI 模型和 TCP/IP 模型。OSI 模型一共分为七层,TCP/IP 模型和 OSI 模型类似,但是只分为四层

1、OSI 模型

OSI(Open Systems Interconncection)开放系统互联,是网络通信的一种通用框架,它分为七层,并且定义了在每一层上数据的处理方法。具体的每一层如下图所示:

层数 层名 备注
7 应用层(Application) 如:DNS 和 HTTP
6 表示层(Presentation) 数据的转换,压缩和加密
5 会话层(Session) 单向、半双工、全双工
4 传输层(Transport) TCP 、UDP
3 网络层(Network) 路由器
2 数据链路层(Data Link) 交换机
1 物理层(Physical) 网卡、集线器(Hub)

第七层 — 应用层(Application):

这里的 "应用" 要和应用程序相区别。 当用户使用浏览器来打开网页时,需要利用 DNS 提供的域名解析服务,来获取网址对应的 IP 地址,然后再通过另外一个协议 HTTP 来下载页面内容。在这个过程中出现的两个协议(DNS 和 HTTP)都是工作在应用层上的协议

第六层 — 表示层(Presentation):

这里的 "表示" 是指数据的表示。该层的主要功能:转换,压缩和加密。工作在表示层的加密协议最常用的是 SSL(Secure Sockets Layer)。加密协议并不一定需要工作在表示层,如IPSec(Internet Protocol Security,因特网协议安全)就工作在第三层网络层中。

第五层 — 会话层(Session)

可以把 "会话" 理解为两个应用程序进程之间的逻辑连接,两个应用程序通过这个逻辑连接在一段时间内交换数据。会话层的作用就是为创建、管理和终止会话提供必要的方法。

会话层还负责管理和确定传输模式。计算机可以由三种模式来传输数据:单向(Simplex)、半双工(Half-Duplex)、全双工(Full-Duplex)。Simplex:数据只可以单向传输。Half-Duplex:允许数据单向传输,但是一个时刻只能有一个方向传输,不能同时双向传输。Full-Duplex:数据可以同时双向传输。

第四层 — 传输层(Transport)

传输层提供数据传输的服务。这里的 "传输" 指的是端对端(End-to-End)或者主机对主机(Host-to-Host)的传输。传输层上最重要的两个协议是 TCP 和 UDP。TCP是面向连接的协议(Connection-Oriented),UDP是无连接的协议(Connection-Less)

(1)TCP(Transmission Control Protocol,传输控制协议):TCP 在传输数据之前必须先建立一个连接。TCP 做了很多工作来提供可靠的数据传输,包括建立、管理和终止连接,确认和重传。同时 TCP 还提供分段和重组,流量控制(Flow Control)等

(2)UDP(User Datagram Protocol,用户数据报协议):UDP 是一种简单的传输层协议,所以它并不能提供可靠的数据传输。简单地说,UDP 只是把应用程序发给它的数据打包成一个 UDP 数据报(UDP Datagram),然后再把这个数据报传给 IP。
TCP 会把应用程序发来的数据根据需要分成若干个大小合适的 TCP 段(TCP Segment),而 UDP 却只是简单地把所有发送来的数据打包成一个 UDP 数据报,所以我们在编写使用 UDP 的程序时,不能一次性向 UDP 写入太多数据,否则可能会导致 IP 分段的后果。

由于可能有很多应用程序同时在使用 TCP/UDP,它们都会把数据交给 TCP/UDP,而 TCP/UDP 也会接收来自 IP 的、包含指向不同应用程序的数据,所以就需要有一种方法来区别(标识)应用程序,这种方法就是通过端口号(Port)来进行多路复用或多路分解。端口号是一个16位的二进制整数,其取值范围是 0~65535。

多路复用(Multiplexing):多路复用是只当应用程序把数据交给TCP或UDP时,TCP会把这些数据分成若干个TCP段,UDP则会产生一个UDP数据报。在这些TCP段和UDP数据报中,会填入应用程序指定的源端口号和目标端口号,源端口号用于标识发送的应用程序(进程),目标端口号用于指明在目标机器上应该接收数据的目标应用程序。

多路分解(Demultiplexing):多路分解是多路复用的逆过程。当在目标机器上的TCP或者UDP接收到TCP段和UDP数据报时,会检查它们的目标端口号,然后根据不同的目标端口号把数据分发给不同的应用程序(进程)。

第三层 — 网络层(Network)

网络层关心的主要是如何把数据从一个设备发送到另一个设备。网络层需要提供三个最基本的功能:地址、路由、分段和重组。同时还需要一些附加的功能,比如错误处理和诊断。

网络层上最重要的协议 IP(Internet Protocol),就是为了这些功能而设计的。目前 IP 一共有两个版本 IPv4 和 IPv6。两者最主要的区别是使用了不同位数的二进制整数作为地址:IPv4 使用 32位 二进制地址,IPv6 使用 128位 二进制地址。IPv4 的地址表示方法一般为用点隔开的4个数字,每个数字的取值范围是0~255,即一个字节的大小,如192.168.1.1。IPv6的表示方法为用冒号隔开的8个字(word,16位二进制),每个字都用十六进制来表示,如 2012:0000:4528:7D76:3C2B:05AD:3F57:1C98。

第二层 — 数据链路层(Data Link)

网络层关心的是如何把数据从一个设备发送到另外一个设备,这另外一个设备有可能在本地网络中或者在一个很远的网络中。数据链路层关心的是如何把数据发送到本地网络中去。我们平时常说的 LAN(Local Area Network,局域网)技术,如以太网(Ethernet)、令牌环网(Token Ring)、光纤分布数据接口(FDD1)和802.11(WiFi)都定义在这一层。

数据链路层又分为两个子层:逻辑链路控制层(Logical Link Control)和介质访问控制层(Media Access Control)。
数据链路层还有一个重要的概念,即 MAC地址,也有人称其为物理地址、硬件地址、以太网地址等。每一个网卡(Network Interface Card)都有一个唯一的 MAC地址,数据链路层通过 MAC地址来确保数据能够正确被发送到目标设备。MAC地址是一个48位二进制整数,通常的表示方法是用-隔开的6个十六进制整数,如14-FE-B5-BO-2B-96。

第一层 — 物理层(Physical)

物理层位于 OSI 的底层,所有其他层的数据最终都必须经由物理层才能发送出去。物理层的功能包括:(1)硬件规范的定义,如电缆、连接器、无线接收器等的工作方式,网卡、集线器(Hub)等网络设备也工作在物理层。(2)编码和信号,物理层把计算机中的二进制0和1转换成可以在物理介质上传输的信号。(3)在把数据转换成信号后(如对于双绞线电缆则是电子脉冲信号),物理层负责信号的实际发送和接收。

2、TCP/IP 模型

TCP/IP 模型分为五层:应用层(Application)、传输层(Host-to-Host Transport)、网络层(Internet)、数据链路层(Data Link)、物理层(Physical)。目前还有的说法是 TCP/IP 模型分为四层,它是将数据链路层和物理层合并成为一层,叫做网络接口层(Network Interface)。

层数 OSI 模型层名 备注 TCP/IP 模型层名
7 应用层(Application) 如:DNS 和 HTTP 应用层(Application)
6 表示层(Presentation) 数据的转换,压缩和加密
5 会话层(Session) 单向、半双工、全双工
4 传输层(Transport) TCP 、UDP 传输层(Transport)
3 网络层(Network) 路由器 网络层(Network)
2 数据链路层(Data Link) 交换机 网络接口层(Network Access)
1 物理层(Physical) 网卡、集线器(Hub)

在 TCP/IP 模型中,两个重要的协议ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址转换协议),在 OSI 模型中一般被认为是在位于第二层数据链路层和第三层网络层之间,而在 TCP/IP 模型中则位于网络接口层。

3、总结

发送方应用程序的数据总是从最上层开始,层层向下,最终经由物理层发送出去;相应的,在接收方的物理层接收到数据后,层层向上,最终经由应用层分发到具体的应用程序进程中。在数据层层向下的过程中,每一层都会对数据进行一些封装处理(如打包或者编码);而在数据层层向上的过程中,每一层都会对数据进行一些逆处理(如解包或者解码)。这些对数据的处理和逆处理的过程就是为了实现该层的服务。

TCP/IP 协议是传输层协议,主要解决数据如何在网络中传输,而 HTTP 是应用层协议,主要解决如何包装数据。关于TCP/IP 和 HTTP 协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP 协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如 HTTP、FTP、TELNET 等,也可以自己定义应用层协议。WEB 使用 HTTP 协议作应用层协议,以封装 HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

术语 TCP/IP 代表传输控制协议/网际协议,指的是一系列协议。"IP" 代表网际协议,TCP 和 UDP 使用该协议从一个网络传送数据包到另一个网络。把 IP 想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP 和 UDP 是高速公路上的“卡车”,它们携带的货物就是像 HTTP,文件传输协议 FTP 这样的协议等。

TCP 和 UDP 是 FTP,HTTP 和 SMTP 之类使用的传输层协议。虽然 TCP 和 UDP 都是用来传输其他协议的,它们却有一个显著的不同:TCP 提供有保证的数据传输,而 UDP 不提供。这意味着 TCP 有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而 UDP 不提供任何这样的保证。

发布了188 篇原创文章 · 获赞 13 · 访问量 7252

猜你喜欢

转载自blog.csdn.net/Marker__/article/details/103642214