前言
本文主要介绍传输层的两个知名协议——UDP&TCP(想了解其他层协议请移步Java EE(12)——初始网络)
一.传输层的作用
传输层主要实现端对端的数据传输,在传输层的数据报中会包含源端口/目的端口的信息。端口的作用就是标识主机中的唯一进程,帮助数据被对应端口的进程接收
二.UDP协议
1.UDP协议的特点
特点 | 解释 |
---|---|
无连接 | 通信双方不需要建立连接也能进行通信 |
不可靠传输 | 无法判断传输的数据是否被对端接收 |
面向数据报 | 数据传输以数据报为单位 |
全双工 | 通信双方都能同时收发数据 |
2.UDP数据报结构
UDP数据报 = UDP报头 + UDP载荷
UDP报头由源/目的端口号,UDP长度,UDP校验和组成。每个部分都是16位比特位,所以UDP报头一共占8字节
-
源端口号:发送方进程绑定的端口号
-
目的端口号:接收方进程绑定的端口号
-
UDP长度:一个UDP数据报所能携带的数据(加上报头)最大是2^16字节,即64KB
-
校验和:用于校验数据传输过程中是否发生了改变
三.TCP协议
1.TCP协议的特点
特点 | 解释 |
---|---|
有连接 | 通信双方需要建立连接才能进行通信 |
可靠传输 | 能够通过相关机制检测信息是否传输到对端(如确认应答机制,后面再说) |
面向字节流 | 数据传输以字节为单位 |
全双工 | 通信双方都能同时收发数据 |
2.TCP数据报结构
这里的端口号,校验和跟UDP中的功能一样,不再赘述
-
首部长度:表示TCP头部长度。以**4字节**为一个单位,用4个二进制比特位表示,表示的范围是((0~15) * 4)字节。因为TCP头部前20字节是固定的,所以TCP头部的长度范围是20 ~ 60字节
-
保留:为未来新增功能预留空间(4个比特位)
-
选项:扩展TCP功能,最大长度是40字节
-
填充:保证TCP头部的长度是4的整数倍
-
标志位:URG,ACK,PSH,RST,SYN,FIN(后面再详细介绍)
其他部分等后面我介绍TCP十大特性的时候再详细讲解
小结
这里介绍TCP数据报结构主要是为了后面介绍TCP协议的特性做铺垫,下篇博客开始讲解TCP是如何保证可靠传输(如确认应答)以及如何建立连接(握手)等