简介
OSI七层模型中,传输层(Transport Layer)为应用进程提供端到端的通信服务。传输层的协议主要包括TCP和UDP等协议。
TCP的全称是Transmission Control Protocol,即传输控制协议。TCP是面向连接的、可靠的流协议。TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。此外,还具备流量控制、拥塞控制和提高网络利用率等众多功 能。
UDP的全称是User Datagram Protocol,即用户数据报协议。UDP是一个非常简单的传输层协议,并不提供可靠性。因此,UDP经常应用在以下几个方面:
- 包总量较少的通信(DNS、SNMP)
- 视频、音频等多媒体通信(即时通信)
- 限定于LAN等特定网络中的应用通信
- 广播通信(广播、多播)
数据格式
TCP通信过程中传递的数据单位是报文段,每一个报文段的首部是20字节,如下图所示
Sequence Number(Seq):代表序列号,按顺序给发送数据的每一个字节(8位字节)都标上号码的编号。确认应答处理、重发控制以及重复控制等功能都可以听过序列号实现。
Acknowledgment Number(ACK):负责确认应答,当发送端的数据达到接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。
TCP Flags:标识位,其中S表示SYN,代表同步序号;F表示FIN,代表完成数据发送;R表示RST,代表复位连接;P表示PSH,尽快发送数据,以上的标志用bit的0或1表示。
Window:窗口大小,用于流量控制和拥塞控制。
连接管理
TCP是一个面向连接的协议,因此在正式发送数据之前需要在通信的双方建立一条连接。同样,在完成数据传递后需要双方将通信的连接断开。正常的通信过程至少来回发送7个包才能够完成,这就是所谓的三次握手、四次挥手。
TCP状态图说明
实线:代表客户端的正常状态变迁
虚线:代表服务器的正常状态变迁
应用进程:说明当应用执行某种操作时发生的状态变迁
收:说明当收到TCP报文段时状态变迁
发:说明为了进行某个状态变迁要发送的TCP报文段
流量控制
拥塞控制
参考文献
[https://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82]
[https://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E6%8A%A5%E5%8D%8F%E8%AE%AE]