网络编程之TCP/IP协议族-概述

TCP/IP协议族是我们平时接触最多的协议,从分层模型上,它由四个层次组成,从上到下依次是应用层、传输层、网络层、链路层。各层协议构成协议栈(Protocol Stack),形象地反映了一个网络中数据传输的过程:由上层协议到底层协议,再由底层协议到上层协议。

数据由上到下,会经过层层封装。下图(来自网络)是一个典型过程。
Image Title

应用层:发送一份数据时,为了使对方收到这份数据后,知道这份数据的大小、类型或用途等,通常会添加包头。如果数据很大,为了防止下层协议对数据分片,有时也会人为地对数据进行分包,而包头也会包含分包信息。

传输层:主要指TCP协议和UDP协议。应用层的数据到达该层,根据协议的不同,会添加不同的首部,通常包含源端口号、目的端口号及校验信息等。端口号用来识别应用程序,以确定数据是哪两个进程间的会话。

网络层:主要指IP协议,有IPv4和IPv6两个版本,本系列只讨论IPv4。IP首部包含源IP地址,目的IP地址、数据长度及协议类型等。IP地址用来表明数据是哪两个主机间的会话,IP地址与传输层的端口构成一个四元组,可以唯一标识一个会话。协议类型来确定传输层所采用协议。

链路层:该层会对收到的网络层数据添加一个以太网帧首部,通常包含源MAC地址、目的MAC地址及协议类型等,和一个以太网帧尾部,为采用CRC的帧校验序列。不同于上层的IP地址,MAC地址在传输过程中不断改变,源MAC始终是上一个主机/路由器的地址,目的MAC是下一个主机/路由器的地址。

接下来的系列文章将对各层协议做更多解析。