> For the complete documentation index, see [llms.txt](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wskdsgcf.gitbook.io/mastering-go-zh-cn/12.0/12.2.md).

# 12.2 关于TCP/IP

**TCP/IP**是保障互联网运行的一组基础协议。它的名字来自它最著名的两个协议：**TCP**协议和**IP**协议。

**TCP**协议的全称是**传输控制协议(Transmission Control Protocol)**。TCP软件使用称为TCP报文的数据段，在机器之间传输数据。TCP协议可靠得传输能力是其主要的特点，也就是说在不需要程序员进行额外编码的情况下，该协议可以确保发送的数据包送达接收方。如果数据包发送没有被确认，TCP协议将重新发送该数据包。也就是说，TCP协议可以用于建立连接、传输数据、发送确认和关闭连接。

当两台主机之间建立TCP连接时，这两台机器之间会创建一个与电话呼叫类似的全双工虚拟链路。这两台主机会通过不断地通信，以确保数据发送和接收正确。如果由于某种原因连接中断，两台主机都会向上层应用程序返回错误。

**IP**协议的全称是**Internet协议(Internet Protocol)**。IP协议本质上不是一个可靠的协议。IP协议通过封装通过TCP/IP网络传输的数据，根据IP地址将数据报文从源主机传送到目标主机。IP协议还具备将数据报文有效发送到目的地的寻址方法。尽管路由器作为专用设备执行IP路由转发，但每个TCP/IP设备都或多或少执行一些基本的路由转发。

**UDP**协议的全称是**用户数据报协议(User Datagram Protocol)**，该协议基于IP协议，因此不确保可靠传输。简而言之，UDP协议比TCP协议要简单，因为该协议从设计上就没有考虑可靠性。因此，UDP消息可能会丢失、重传或乱序。此外，UDP数据报文的到达速度可以比接收方的处理能力快。因此当性能比可靠性更重要时，更多使用UDP协议。
