TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用和通信传输。总之,根据通信的具体特征,选择合适的传输层协议是非常重要的。
传输层定义
IP首部中有一个协议字段,用来标识网络层(IP)的上一层采用的是哪一种传输层协议,根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是UDP的内容。
通信处理
两种传输层协议TCP和UDP
TCP
是面向连接的、可靠的流协议。所谓流就是指不间断的数据结构,可以类比水流。
TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口等机制实现可靠性传输。
UDP
UDP是不具有可靠性的数据报协议,在这种情况下,虽然可以保证发送消息的大小,却不能保证消息一定到达。
应用场景:
- 包总量较少的通信(DNS、SNMP)等
- 视频、音频等多媒体通信(即使通信)
- 限定于LAN等特定网络中的应用通信
- 广播通信(广播、多播)
套接字(Soket)
在应用程序中利用套接字,可以设置对端的IP地址、端口号、并实现数据的发送与接收
端口号
定义
端口号用来识别同一台计算机中进行通信的不同应用程序,一次,它也被称为程序地址。
根据端口号识别应用
传输层利用端口号识别本机中正在进行通信的应用程序。
端口号如何确定
- 标准既定的端口号
- 时序分配法:例如每需要一个新的端口号就在之前的分配的号码的基础上加1
端口与协议
端口号由其使用的传输层协议决定,因此,不同的传输协议可以使用相同的端口号。
数据到达IP层后,会先检查IP首部中的协议号,再传给相应协议的模块。如果是TCP则传给TCP模块,由传输协议各自独立处理。
连接管理
UDP是一种面向无连接的通信协议,因此不检查对端是否可用痛殴更新,直接将UDP包发送出去。TCP相反。
UDP首部格式
- 源端口号(Source Port):表示发送端口号,字段长16位。
- 目标端口号(Destination Port):表示接收端口号,字段长度16位。
- 包长度(Length):该字段保存了UDP首部的长度跟数据的长度之和。单位字节为8
- 校验和(Checksum):校验和是为了提供可靠的UDP首部和数据而设计的。
TCP首部格式
- 源端口号(Source Port):表示发送端端口号,字段长16位
- 目标端口号(Destination Port):表示接受端口号,字段长度16位。
- 序列号(Sequence Number):是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小
- 确认应答号(Acknowledgement Number):下一次应该收到的数据的序列号。
- 数据偏移(Data Offset):表示TCP所传输的数据部分应该从TCP包的哪个位开始计算。也可看作TCP首部的长度。
- 保留(Reserved):为 以后扩展
- 控制位(Control Flag): 字段长8位,每一位从左至右分别为 CWR、ECE、URG、ACK、PSH、RST、SYN、FIN。
- 窗口大小(Window Size):用于通知从农耕相同TCP首部的确认应答号所指位置开始能够接受的数据大小。TCP不允许发送超过此处所表示大小的数据。
- 校验和(Checksum):如果计算校验和字段在内的所有数据的16位和以后,得出的结果是“16位全部为1”说明所收到的数据时正确的。
- 紧急指针(Urgent Pointer):紧急指针指出了紧急数据的末尾在报文段中的位置。
- 选项(Options):用于提高TCP传输性能。