这两个概念是否指的是同一个东西?他们有区别吗?
在我看来,它们是不同的,套接字连接基于tcp连接。套接字包含IP地址和端口,它只能连接到另一个套接字,但同一台机器中的IP地址和端口可以通过TCP连接与许多其他IP地址和端口连接。这是对的吗?
答案 0 :(得分:21)
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
答案 1 :(得分:2)
套接字连接意味着两个对等体相互连接,协议可以是TCP或UDP。所以连接不指定连接类型。它是连接的通用术语。
当您说TCP连接时,它意味着使用TCP协议连接两个节点。
答案 2 :(得分:0)
套接字是Session中的第5层协议(OSI Model),并且不依赖于基础层,这意味着它可以通过TCP,UDP,MPTCP等使用(第4层-{{3 }})。套接字连接用于在节点之间继续交换数据(在它们之间创建会话),但是TCP连接可在节点之间可靠地传输数据段。
答案 3 :(得分:0)
套接字被定义为通常在两个进程之间进行通信的应用程序编程接口(API),但不仅限于此。它们涉及应用程序将链接的库函数,系统调用以及操作系统内核的实现部分。套接字API的最常见类型是Berkely套接字和Winsock(Windows)。
套接字提供的访问类型的其他分类是:
在Linux,Unix和Windows中,有TCP,UDP和Unix域套接字。上面提到的其他类型的套接字是在Linux中实现的,我不知道它们是否在Windows中存在。
TCP连接是TCP概念。它连接两个端点,通常是两个进程(或一个进程本身),并由(IPAddress1,Port1,IPAddress2,Port2)定义。在TCP三向握手之后建立TCP连接。
在TCP中,套接字由两个进程之间的TCP连接的元素(IPAddress1,Port1,IPAddress2,Port2)定义。 但是,也可以有一个监听套接字。这是一个套接字,它允许进程侦听通过网络与其他进程建立的连接。