套接字连接和tcp连接有什么区别吗?

Tho*_*son 10 networking network-programming network-protocols

这两个概念是指同一个东西吗?他们有区别吗?

在我看来,它们是不同的,并且套接字连接基于tcp连接.套接字包含IP地址和端口,它只能连接到另一个套接字,但同一台机器中的IP地址和端口可以通过TCP连接与许多其他IP地址和端口连接.这是正确的吗?

Mat*_*sch 24

TCP/IP是用于通信的协议栈,socket是(双向)通信中的端点.套接字不需要基于TCP,但通常情况就是如此.术语套接字通常也用于指操作系统提供的API,允许您通过TCP/IP堆栈建立连接,例如,Winsock API为Windows上的TCP/IP堆栈上的连接提供API .

套接字唯一映射到应用程序,因为操作系统会为您管理端口.

进一步阅读:http://en.wikipedia.org/wiki/Internet_sockethttp://en.wikipedia.org/wiki/Winsock


Kei*_*van 10

套接字是OSI 模型中的第 5 层协议(会话),不依赖于底层,这意味着它可以基于 TCP、UDP、MPTCP...(第 4 层 -传输层协议)。套接字连接用于在节点之间持续交换数据(它在它们之间创建会话),而 TCP 连接则在节点之间可靠地传输数据段。


rod*_*olk 6

套接字被定义为通常用于两个进程之间通信的应用程序编程接口(API),但不仅限于此。它们涉及应用程序将链接的库函数、系统调用以及操作系统内核的实现部分。最常见的套接字 API 类型是 Berkely 套接字和 Winsock (Windows)。

根据其提供的访问类型,套接字的其他分类是:

  • TCP套接字:建立TCP连接
  • UDP套接字:用于UDP通信
  • 数据包套接字:用于直接访问第 2 层
  • Unix 域套接字:用于通过同一节点内的文件进行 IPC
  • 用于直接访问IP层的原始套接字
  • 路由套接字
  • SCTP 套接字
  • 其他类型插座

在Linux、Unix和Windows中,有TCP、UDP和Unix域套接字。上面提到的其他类型的套接字都是在Linux中实现的,我不知道它们是否存在于Windows中。

TCP连接是TCP的概念。它连接两个端点,通常是两个进程(或一个进程与其自身),由(IPAddress1、Port1、IPAddress2、Port2)定义。TCP 连接在 TCP 3 次握手后建立。

在 TCP 中,套接字由两个进程之间的 TCP 连接元素(IPAddress1、Port1、IPAddress2、Port2)定义。然而,也可以有一个监听套接字。这是一个套接字,允许进程监听其他进程通过网络建立的连接。

https://en.wikipedia.org/wiki/Berkeley_sockets

https://en.wikipedia.org/wiki/Winsock