【问题标题】:Any difference between socket connection and tcp connection?socket连接和tcp连接有什么区别吗?
【发布时间】:2011-09-19 04:10:44
【问题描述】:

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

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

【问题讨论】:

    标签: networking network-programming network-protocols


    【解决方案1】:

    TCP/IP 是用于通信的协议栈,套接字是(双向)通信中的端点。套接字不一定是基于 TCP 的,但它经常是这样的。术语套接字也经常用来指操作系统提供的 API,它允许您通过 TCP/IP 堆栈建立连接,例如,Winsock API 提供了一个 API,用于在 Windows 上通过 TCP/IP 堆栈进行连接.

    一个套接字被唯一地映射到一个应用程序,因为端口是由操作系统为您管理的。

    延伸阅读:http://en.wikipedia.org/wiki/Internet_socket 和 http://en.wikipedia.org/wiki/Winsock

    【讨论】:

      【解决方案2】:

      Socket连接是指两个peer相互连接,协议可以是TCP或UDP。所以连接不指定连接类型,是连接的总称。

      当你说 TCP 连接时,它意味着两个节点使用 TCP 协议连接。

      【讨论】:

      • 感谢您的澄清。那么基于TCP的socket连接呢?基于TCP的socket连接和TCP连接有什么区别?
      【解决方案3】:

      Socket 是OSI Model 中的第 5 层协议 (Session),并且不依赖于底层,这意味着它可以通过 TCP、UDP、MPTCP,...(第 4 层 - Transport layer protocols)。套接字连接用于节点之间的持续数据交换(它在它们之间创建会话),但 TCP 连接使节点之间的数据段可靠传输。

      【讨论】:

        【解决方案4】:

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

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

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

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

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

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

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

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

        【讨论】:

        • 可能作为插件:Internet 套接字(TCP.UDP 等)由主机地址和 16 位端口号 (0-65535) Unix 域套接字或进程间(在同一节点)通信套接字由文件名标识。
        猜你喜欢
        • 2014-07-06
        • 2023-03-29
        • 2020-06-15
        • 1970-01-01
        • 2011-02-12
        • 1970-01-01
        • 2017-01-03
        • 2017-02-26
        • 2010-11-09
        相关资源
        最近更新 更多