Socket | 豆包MarsCode AI刷题

深入理解 Socket 的基本工作原理

在当今复杂多变的网络通信世界中,Socket 扮演着极为重要的角色。它是一套用于实现不同主机间通信的应用程序编程接口(API),并且工作在我们所熟知的 TCP/IP 协议栈之上。

Socket 在协议栈中的位置及应用场景

TCP/IP 协议栈通常分为四层,分别是应用层、传输层、网络层和链路层。Socket 就像是一座桥梁,将位于应用层的各种应用程序与底层的网络通信连接起来

对于初学者来说,可以简单理解为:

  • 应用程序(如浏览器、手机APP等)需要通过网络进行通信
  • 而计算机底层的网络通信是由 TCP/IP 协议来规范的
  • Socket 就是将上层应用与下层网络协议连接起来的接口,让应用程序能够方便地使用网络通信功能

对于有一定经验的开发者来说,可以进一步理解:

  • Socket 位于 TCP/IP 协议栈的应用层,为上层应用程序提供了一组标准的API
  • 通过Socket,上层应用可以忽略底层网络协议的细节,专注于自身的业务逻辑
  • 常见的网络应用,如SSH、FTP、HTTP等,其底层通信都是建立在Socket之上的

通过 Socket 建立通信的关键要素🧐

要通过Socket与不同主机成功建立通信,我们需要指定两个关键要素:主机的IP地址端口号

IP地址的作用是在网络环境中唯一标识一台设备,就好比现实生活中的家庭住址。通过IP地址,我们就能找到目标设备的网络位置。

端口号则起到了区分主机上不同应用程序的作用。🤔想象一下,如果一台主机上同时运行着多个网络应用,那么操作系统怎么知道接收到的数据包应该送到哪个应用程序呢?这时候就需要依靠端口号来区分。😁

通过指定IP地址和端口号,Socket就能为不同主机、不同应用程序之间建立起一条点对点的虚拟通信通道。这就好比将一条数据线准确地连接到不同应用各自对应的插槽上,这也是"Socket"(套接字)这个名字的由来。😲

Socket 的两种常见类型:TCP 和 UDP🤓

在实际应用中,经常用到的Socket有两种类型,分别是TCPUDP。它们在功能和使用场景上都有各自的特点。

TCP (传输控制协议)

TCP是我们重点探讨的内容,它有两大显著特点:

  1. 高可靠性:TCP协议内置了自动检测和重传丢失数据包的机制。这意味着,只要通过TCP发送数据,接收方一定能收到完整的数据,数据传输的可靠性得到了有力保障。
  2. 有序性:TCP协议能够保证发送和接收到的数据顺序完全一致。它是基于"数据流"的协议,将数据视为连续的字节流进行传输。

在TCP通信中,收发数据的双方需要扮演不同的角色:服务器被动等待客户端的连接请求,而客户端主动发起连接。

UDP (用户数据报协议)

与TCP不同,UDP是一种面向数据报文的协议。它没有TCP那样的可靠性机制,不会自动检测和重传丢失的数据包。

但正因如此,UDP具有一些TCP所不具备的优势:

  1. 更低的延迟:由于不需要额外的可靠性检查,UDP的传输速度更快,延迟更低。
  2. 更低的系统开销:UDP协议栈相比TCP更简单,占用系统资源更少。

因此,UDP更适用于对实时性要求较高的场景,比如视频会议、在线游戏等。即使偶尔丢失一些数据包,只要不影响整体的交互体验,也是可以接受的。

作者:自律即自由TianXing
链接:juejin.cn/post/743636…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。