【发布时间】:2011-09-19 04:10:44
【问题描述】:
这两个概念是指同一个东西吗?它们有区别吗?
在我看来,它们是不同的,socket连接是基于tcp连接的。一个套接字包含一个IP地址和端口,它只能连接到另一个套接字,但同一台机器上的一个IP地址和端口可以通过TCP连接与许多其他IP地址和端口连接。是这样吗?
【问题讨论】:
标签: networking network-programming network-protocols
这两个概念是指同一个东西吗?它们有区别吗?
在我看来,它们是不同的,socket连接是基于tcp连接的。一个套接字包含一个IP地址和端口,它只能连接到另一个套接字,但同一台机器上的一个IP地址和端口可以通过TCP连接与许多其他IP地址和端口连接。是这样吗?
【问题讨论】:
标签: networking network-programming network-protocols
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
【讨论】:
Socket连接是指两个peer相互连接,协议可以是TCP或UDP。所以连接不指定连接类型,是连接的总称。
当你说 TCP 连接时,它意味着两个节点使用 TCP 协议连接。
【讨论】:
Socket 是OSI Model 中的第 5 层协议 (Session),并且不依赖于底层,这意味着它可以通过 TCP、UDP、MPTCP,...(第 4 层 - Transport layer protocols)。套接字连接用于节点之间的持续数据交换(它在它们之间创建会话),但 TCP 连接使节点之间的数据段可靠传输。
【讨论】:
套接字被定义为通常用于两个进程之间通信的应用程序编程接口(API),但不仅限于此。它们涉及您的应用程序将链接的库函数、系统调用和操作系统内核的实现部分。最常见的套接字 API 类型是 Berkely 套接字和 Winsock (Windows)。
套接字提供的访问类型的其他分类是:
在 Linux、Unix 和 Windows 中,有 TCP、UDP 和 Unix 域套接字。上面提到的其他类型的socket都是在Linux中实现的,不知道在Windows中是否存在。
TCP 连接是一个 TCP 概念。它连接两个端点,通常是两个进程(或一个进程到自身),它由 (IPAddress1, Port1, IPAddress2, Port2) 定义。 TCP 3 次握手后建立 TCP 连接。
在 TCP 中,套接字由两个进程(IPAddress1、Port1、IPAddress2、Port2)之间的 TCP 连接元素定义。 但是,也可以有一个监听套接字。这是一个套接字,它允许进程通过网络侦听从其他进程建立的连接。
【讨论】: