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_socket和http://en.wikipedia.org/wiki/Winsock
Kei*_*van 10
套接字是OSI 模型中的第 5 层协议(会话),不依赖于底层,这意味着它可以基于 TCP、UDP、MPTCP...(第 4 层 -传输层协议)。套接字连接用于在节点之间持续交换数据(它在它们之间创建会话),而 TCP 连接则在节点之间可靠地传输数据段。
套接字被定义为通常用于两个进程之间通信的应用程序编程接口(API),但不仅限于此。它们涉及应用程序将链接的库函数、系统调用以及操作系统内核的实现部分。最常见的套接字 API 类型是 Berkely 套接字和 Winsock (Windows)。
根据其提供的访问类型,套接字的其他分类是:
在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