这几天由于实验室断网,所以一直不能发随笔,但是好习惯还是要坚持。
今天讲一下一个重要的层——传输层。传输层的协议主要分为TCP协议和UDP协议。前者称为传输控制协议,后者为数据包传输协议。今天主要讲一下传输层的概述,之后会对TCP协议和UDP协议进行详细介绍。
我们知道,数据包如果在IP层传输,其传输的可靠性不能保证,这就会造成重要数据的丢弃。这显然是不被允许的。因此只能依靠传输层的TCP协议来保证数据传输的可靠性,这也正是TCP的一个主要特征,即能够保证数据完整到达接收方。为什么这么说呢?因为TCP能够提供差错校验和连接传输、数据包重传机制。也正因为这个特点,其传输的速率相比UDP来说会慢很多,因为UDP也不保证数据完整到达,但是能够提高传输的速率。这样大家就会想,肯定是数据包无差错传输好,那还要什么UDP啊?其实有时候数据包传输的实时性比准确性更重要。例如你打电话,就算有几个字听不清,但大致内容是知道的,如果给你重复传输这些声音,反倒是会听的稀里糊涂,此外我们常用的qq聊天,也是基于UDP传输。
UDP协议有两个特征,1是它不保证数据能完整到达,数据包很有可能在传输过程中丢失;2是它不保证数据会按顺序到达,可能先传的包后到达。
那么再上层的应用层协议中,哪些是基于TCP,哪些是基于UDP呢?简要概括下,基于TCP的包括FTP协议,HTTP协议,e-mail协议等,基于UDP的包括tftp协议等。
TCP和UDP报文都是嵌入IP报文中传输的,TCP报文首部为20字节,UDP稍微简单,为8字节,具体格式如下:
IP首部 | TCP首部 | TCP数据 |
IP首部 | UDP首部 | UDP数据 |