入门介绍
TCP基础知识
TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。有三次握手可以保证数据传输的可靠性。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
TCP是由TCP头部和TCP数据两个部分组成。头部是由上图标识的一些字段组成,对上图字段的分析如下:
- Source port(源端口):源主机应用程序所使用的端口号;
- Destination port(目的端口):目的主机使用的端口号;
- Sequence Number(序列号):用于标识从发送端发出的不同的TCP数据段的序号。数据段在传输过程中他们的顺序会发生变化,因此接收端需要根据序列号来对数据进行重组。
- Acknowledge Number(确认序列号):用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号+1。
- Header length(头部长度):标识头部占32bit字的数目,他能表达的TCP头部最大长度为60字节。
- Window(窗口大小):表示接收端期望通过单次确认而收到的数据大小。该机制通常用于流量的控制。
- Checksum(校验和):校验整个TCP字段,包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。
接下来来看TCP与UDP的区别:
TCP | UDP |
---|---|
面向连接(即需要建立连接) | 面向无连接 |
面向字节流(发送数据时会将数据分解为多个小的数据报文进行发送) | 基于数据报(发送数据时会直接打上UDP头部将整个报文发送出去) |
有三次握手可以保证数据传输的可靠性 | 传输数据可能存在丢包 |
保证数据顺序 | 无法保证数据顺序 |
只支持点对点通讯 | 支持一对一、一对多、多对多通讯 |
有拥塞机制 | 无拥塞机制 |
头部20-60个字节 | 头部8个字节 |
要求实时性低,准确度高 | 要求实时性高,准确度低 |
:::info