带外数据
什么是带外数据?带外数据是什么意思?
许多传输层都支持带外数据,有时候也称为快速数据。之所以有带外数据的概念,是因为有时候在一个网络连接的终端想“快速”的告诉网络另一边的终端一些信息。这个“快速”的意思是我们的“提示”信息会在正常的网络数据(有时候称为带内数据In-Band data)之前到达网络另一边的终端.这说明,带外数据拥有比一般数据高的优先级。但是不要以为带外数据是通过两条套接字连接来实现的.事实上,带外数据也是通过以有的连接来传输。
TCP的带外数据
头部标志: URG位,紧急指针。
数据包中:一个紧急指针只指向一个字节的带外数据的后已字节位置。紧急数据时插在正常数据流中进行传输。紧急指针用于指出带外数据字节在正常字节流中的位置。
为何不直接将一个字节的紧急数据放在紧急指针哪里呢?
因为TCP数据包在ip层可能被拆包,成为多个数据段。一个包含紧急数据的数据包被拆成两个数据包,那么这两个包有的tcp头部有相同的紧急指针(和UGR)。如果将紧急数据直接放在紧急指针的内存处,那么将多出一个紧急数据!所以,不该将紧急数据放在TCP