当提到网络时,信息/数据的传递通常是指在不同设备之间发生。但设备多种多样,要确保发送端的数据,能被不同的接收端接收,先决条件是大家得使用一套规则。因此,为了兼容设备,网络公司/组织协商出了一套通用的网络协议,也就是我们要介绍的TCP/IP协议。
下面的内容,我们通过记录一次数据在不同层级之间传递的方向,来介绍TCP/IP网络模型。
—————————————–
应用层 Application Layer:用户接触到的最上层,我们使用的各种应用程序在该层实现。该层专注于为用户提供应用功能,不关心数据在不同设备间传输的事。为下层提供数据包。
👇
传输层 Transport Layer:准确来讲,是为应用层提供网络支持,并不实际负责数据从一个设备传到另一个设备。传输层有两个传输协议:
- TCP (Transmission Control Protocol): 大部分应用使用的传输层协议,比如HTTP应用层协议。该协议通过多种特性,保证数据包能可靠地传输给对方。
- UDP (User Datagram Protocol):该协议不保证数据包是否抵达接收端,但传输效率高,实时性更好。
从发送端来看,传输层把大的数据包分成小块,这样即使有一个分块丢失,只需重新传输该块,而不用重传整个数据包。TCP中,每个分块叫做一个TCP Segment。
从接受端来看,传输层需要把数据包传给应用,但一台设备可能有很多应用在接收数据,因此需要不同的编号区分应用,这个编号就是端口。端口号会携带在传输层的报文中。比如Web服务器的80端口,SSH的22端口。浏览器的每个标签栏都是一个独立进程,操作系统会为这些进程分配临时端口号。
👇
网络层 Network Layer:实际负责数据从一个设备传输到另一个设备。最常用的协议是IP协议Internet Protocol。IP协议把传输层的报文作为数据部分,再加上IP包头组装成IP报文。如果IP报文大小超过MTU最大传输单元,会在此进行分片。
前面提到,网络层负责数据从一个设备传到另一个设备。对于设备的定位就用到了IP地址,然后搭配子网掩码找到设备对应的网段和具体的主机号。当然,设备与设备之间并不是直接用一条网线连接的,而是通过了很多网关、路由器、交换机众多网络设备连接的,在以上设备形成的多条网络路径中,想要IP协议进行路由,即通过算法决定下一步往哪走。
👇
数据链路层 Data Link Layer:专门用来标识网络中的设备,让网络层路由时,知道哪个IP对应哪个设备,让数据在一个链路中传输。每台设备的网卡都有一个MAC地址,它用来唯一标识设备。路由器计算出了下一个目的地的IP地址,再通过ARP协议找到该目的地的MAC地址,从而得知IP地址对应的设备。
👇
物理层 Physical Layer:负责数据从设备发送到网络时,把数据包转换成电信号,为数据链路层提供二进制传输服务。