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

时间:2011-06-21 02:45:34

标签: networking network-programming network-protocols

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

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

4 个答案:

答案 0 :(得分:21)

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

答案 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)。

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

  • 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连接。

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

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

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