TCP 和 UDP 基本原理
TCP/IP 协议族的传输层协议主要包括 TCP(Transfer Control Protocol,传输控制协议)
和 UDP(User Datagram Protocol,用户数据报协议)。TCP 是面向连接的可靠的传输层协议。
它支持在并不可靠的网络上实现面向连接的可靠的数据传输。UDP 是无连接的传输协议,主要
用于支持在较可靠的链路上的数据传输,或用于对延迟较敏感的应用。
一、TCP/IP传输层的作用
1、传输层的作用
提供面向连接或无连接的服务
维护连接状态
对应用层数据进行分段和封装
实现多路复用
可靠地传输数据
执行流量控制
二、 TCP协议基本原理
1、TCP 协议的特点
RFC 793 定义的 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接
的、端到端的可靠传输协议。TCP 的主要特点包括:
三次握手(Three-Way Handshake)建立连接:确保连接建立的可靠性。
端口号:通过端口号标识上层协议和服务,实现了网络通道的多路复用。
序列号:发送的所有数据都拥有唯一的序列号,这样不但唯一标识了每一个段
(segment),而且明确了每个段在整个数据流中的位置,接收方可以利用这些信息实
现确认、丢失检测、乱序重排等功能。
2、TCP 封装

讯享网
源端口(Source Port):16 位的源端口字段包含初始化通信的端口号。源端口和源 IP
地址的作用是标识报文的返回地址。
序列号(Sequence Number):该字段用来标识 TCP 源端设备向目的端设备发送的字
节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序
间的单向流动,则 TCP 用序列号对每个字节进行计数。序列号是一个 32 位的数。
确认号(Acknowledgement Number):TCP 使用 32 位的确认号字段标识期望收到的
下一个段的第一个字节,并声明此前的所有数据都已经正确无误地收到,因此,确认
序号应该是上次已成功收到的数据字节序列号加 1。收到确认号的源计算机会知道特
定的段已经被收到。确认号的字段只在 ACK 标志被设置时才有效。
保留(Reserved):6 位置 0 的字段。为将来定义新的用途保留。
控制位(Control Bits):共 6 位,每 1 位标志可以打开一个控制功能,这六个标志从
左至右是
URG(Urgent Pointer field significant,紧急指针字段标志)
ACK(Acknowledgment field significant,确认字段标志)
PSH(Push Function,推功能)
RST(Reset the connection,重置连接)
SYN(Synchronize sequence numbers,同步序列号)
FIN(No more data from sender,数据传送完毕)

校验和(Checksum):TCP 头包括 16 位的校验和字段用于错误检查。源主机基于部
分 IP 头信息、TCP 头和数据内容计算一个校验和,目的主机也要进行相同的计算,
如果收到的内容没有错误过,两个计算结果应该完全一样,从而证明数据的有效性。
选项(Options):至少 1 字节的可变长字段,标识哪个选项(如果有的话)有效。如
果没有选项,这个字节等于 0,说明选项字段的结束。这个字节等于 1 表示无需再有
操作;等于 2 表示下四个字节包括源机器的最大段长度(Maximum Segment Size,
MSS)。MSS 是数据字段中可包含的最大数据量,源和目的机器要对此达成一致。当
一个 TCP 连接建立时,连接的双方都要通告各自的 MSS,协商可以传输的最大段长
度。常见的 MSS 有 1024 字节,以太网可达 1460 字节。
数据(Data):从技术上讲,它并不是 TCP 头的一部分,但应该了解到,数据字段位
于紧急指针和/或选项字段之后,填充字段之前。字段的大小是最大的 MSS,MSS 可
以在源和目的机器之间协商。数据段可能比 MSS 小,但却不能比 MSS 大。
3、TCP/UDP 端口号
协议号 6 标识 TCP,用协议号 17 标识 UDP
4、TCP 连接的建立
TCP 是一个面向连接的可靠的传输控制协议,在每次数据传输之前首先需要建立连接,连
接建立成功后才开始传输数据,数据传输结束后还要断开连接

TCP 的三次握手建立连接的过程如下:
- 由发起方 HostA 向被叫方 HostB 发出连接请求。将段的序列号标为 x,SYN 置位。
由于是双方发的第一个包,ACK 无效。 - HostB 收到连接请求后,读出序列号为 x,发送序列号为 y 的包,同时将 ACK 置为有
效,将确认号置为 x+1,同时将 SYN 置位。 - HostA 收到 HostB 的连接确认后,对该确认再次作确认。HostA 收到确认号为 x+1、
序列号为 y 的包后,发送序列号为 x+1、确认号为 y+1 的段进行确认 - HostB 收到确认报文后,连接建立。
这样,一个双向的 TCP 连接就建立好了,双方可以开始传输数据。
5、TCP 连接的拆除

上图所示是一个常规的 TCP 连接终止过程。当数据传输结束后,需要断开连接,其过程描
如下:
- HostA 要求终止连接,发送序列号为 u的段,FIN 置为有效,同时确认此前刚收到的
段。 - HostB 收到 HostA 发送的段后,发送 ACK 段,确认号为 u+1,同时关闭连接。
- HostB 发送序列号为 w 的段,FIN 置为有效,通知连接关闭。
- HostA 收到 HostB 发送的段后,发送 ACK 段,确认号为 u+1,同时关闭连接。
TCP 连接至此终止。可见这是一个四次握手过程
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/49411.html