传输层是国际标准化组织提出的开放系统互连(OSI)参考模型中的第四层。该层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。其功能紧密地依赖于网络层的虚拟电路或数据报服务。传输层定义了主机应用程序之间端到端的连通性。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层,因为它是源端到目的端对数据传送进行控制从低到高的最后一层。

传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol)。传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。

     本篇文章主要讲述传输层协议TCP连接的建立(三次握手)和断开(四次挥手),与路由器的数据转发原理(封装过程)。

1、TCP建立连接的过程称为三次握手,我们可以通过下图来了解TCP三次握手的过程:

TCP的三次握手和四次挥手与路由器(三层)转发原理-LMLPHP

从图上我们可以看出,PC1要与PC2建立通讯连接,要经过3个步骤,这个三个步骤我们就称为三次握手。经过这3个握手PC1和PC2才可以真正通讯,传输数据。

首先我们要先了解在TCP报文格式中比较重要的几个标志位,①、ACK:确认位(确认序号位,当该位为1时,用于确认发送方的数据)。②、SYN:建立连接的请求标记(同步序号位,TCP需要建立连接时将该值设为1)。③、FIN:请求断开标记(当TCP断开连接时将该位置为1)。这里我们主要了解这三个标志位。

当PC1想要与PC2建立连接时,从图中可以看到PC1首先发送SYN报文,该位置为1,请求与PC2建立连接,这个时候PC2接收到请求,通过查看SYN报文位置知道PC1想要建立连接,PC2回应PC1请求,并发送建立连接请求(两台PC机建立通讯是双向的,当一台PC请求建立连接时,另一台PC同样会请求建立连接),PC2发送SYN+ACK报文,该位置同样为1,PC1接受到PC2确认回应与请求后确认PC2信息位置,然后回复确认,发送ACK报文,位置为1。经过这3次握手过程,PC1与PC2成功建立连接。

2、TCP断开连接的四次挥手,我们可以通过下图来了解TCP四次挥手的过程:

TCP的三次握手和四次挥手与路由器(三层)转发原理-LMLPHP

上图中我们可以看到PC1和PC2断开连接的过程其实和上面我们讲述的TCP三次握手的过程差不多,不过中间多了一个步骤3,这里也就是我们要理解的TCP半关闭的概念,我们可以通过关闭浏览网站这个过程来理解TCP半关闭的概念,同时来阐述TCP断开连接四次挥手的过程。

在这里我们把PC2看做是一台服务器,当我们在浏览网页时,数据是双向传输的,PC1发起请求,服务器响应请求并发送数据提供PC1浏览查看,当PC1关闭浏览器时,首先发送FIN/ACK报文,位置位为1,确认关闭连接,服务器接收请求,然后发送ACK报文,位置为1,确认请求,这个时候PC1关闭浏览器窗口,但是服务器还没有断开与PC1的连接,还会继续向PC1发送数据,断开的只是PC1单向的连接,这也就是TCP半关闭状态,当PC1断开连接后,服务器重复PC1操作,发送FIN/ACK报文,位置为1,请求确认断开连接,PC1接收到服务器请求,并发送ACK报文,位置为1,确认请求,这个时候服务器与PC1断开连接,经过这四个步骤,PC1与服务器(PC2)断开连接,这就是我们说的TCP断开连接的四次挥手。

3、路由器的数据转发原理(封装过程),通过下图来讲述路由器的数据转发原理:

TCP的三次握手和四次挥手与路由器(三层)转发原理-LMLPHP

路由器转发封装过程我们也称之为路由器的重封装过程,如上图所示,主机A要把数据发送给主机B要经过两个路由的转发来完成,在这个转发过程中是经过三个不同网段的转发最终到达主机B,在同一个段中传输时就是数据链路层(二层)的工作原理,数据链路层是以数据帧的格式通过封装源MAC地址与目标MAC地址发送ARP寻找目标MAC地址进行转发,如上图,主机A发送数据到主机B,要经过三个不同的网段通过两次重封装来完成数据发送。
①、首先主机A通过ARP,找到默认网关路由A的MAC地址,然后封装源IP地址(192.168.1.2/24)与目标IP地址(192.168.2.2/24),源MAC地址(…11-11),目标MAC地址(…22-22),经过E0端口发送到路由A中。
②、路由A接收到数据,通过解析MAC地址,查看主机A发过来的目标IP地址,在路由表中查找目标IP网段,当查找到这个网段后,知道应该从E1接口转发出去,然后路由A重新封装MAC地址,源IP地址与目标IP地址不变,这个时候封装的源MAC地址为…33-33,目标MAC地址为:…44-44,通过E1接口发送给路由B。
③、路由B接受到数据后与路由A同样操做,解封MAC地址,查看目标IP地址,同时在路由表中查找目标IP网段,找到目标IP网段接口E0,然后通过ARP,获得主机B的MAC地址,并封装MAC地址,源MAC地址为…55-55,目标MAC地址为…66-66,源IP地址与目标IP地址不变,通过E0接口转发到主机B,这个时候主机B接受到主机A发过来的数据,通过解析MAC地址,查看源IP与目标IP地址,确定是否是发给自己的数据。

通过上面所述的过程通过三次重新封装MAC地址,源IP地址与目标IP地址不变,完成数据的转发,这就是路由器的重封装过程,也就是路由器的数据转发原理(封装过程)。

05-11 14:47