一、TCP/IP 模型和OSI 模型各层的对照关系
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由 FTP、SMTP、TCP、UDP、IP 等协议构成的协议簇, 只是因为在 TCP/IP 协议中 TCP 协议和 IP 协议最具代表性,所以被称为 TCP/IP 协议。基于 TCP/IP 的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示 TCP/IP 模型与OSI 模型各层的对照关系。
二、封装
当应用程序用 TCP 传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作 一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如下图所示。TCP 传给 IP 的数据单元称作 TCP 报文段或简称为 TCP 段(TCP segment)。IP 传给网络接口层的数据单元称作 IP 数据报(IP datagram)。通过以太网传输的比特 流称作帧(Frame )。
上图清楚地表示了 TCP/IP 协议中每个层的作用,而 TCP/IP 协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程, 数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。
上图以 HTTP 协议为例,具体说明。
三、数据链路层
物理层负责 0、1 比特流与物理设备电压高低、光的闪灭之间的互换。数据链路层负责将 0、1 序列划分为数据帧从一个节点传输到临近的另一个节点, 这些节点是通过 MAC 来唯一标识的(MAC,物理地址,一个主机会有一个 MAC 地址)。
• 封装成帧:把网络层数据报加头和尾,封装成帧,帧头中包括源 MAC 地址和目的 MAC 地址。
• 透明传输:零比特填充、转义字符。
• 可靠传输:在出错率很低的链路上很少用,但是无线链路 WLAN 会保证可靠传输。
• 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。