套接字是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了套接字是啥?相关的知识,希望对你有一定的参考价值。

套接字是什么?

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

总之,套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。

扩展资料

Socket最初是加利福尼亚大学Berkeley分校为Unix系统开发的网络通信接口。后来随着TCP/IP网络的发展,Socket成为最为通用的应用程序接口,也是在Internet上进行应用开发最为通用的API。

Windows系统流行起来之后,由Microsoft联合了其他几家公司在Berkeley Sockets的基础之上进行了扩充,共同制定了一套Windows下的网络编程接口,即Windows Sockets规范。

Windows Sockets规范是一套开放的、支持多种协议的Windows下的网络编程接口,包括1.1版和2.0版两个版本。

参考资料来源:百度百科-套接字

参考技术A 套接字是源IP地址和目的IP地址以及源端口号和目的端口号的组合,一般用于标识客户端请求的服务器和服务,是支持TCP/IP的网络通信的基本操作单元。

常用的TCP/IP协议的3种套接字类型如下所示。
流套接字(SOCK_STREAM):
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。
数据包套接字(SOCK_DGRAM):
数据包套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据包套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
原始套接字(SOCK_RAW):
原始套接字(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为RAW SOCKET可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。比如,我们可以通过RAW SOCKET来接收发向本机的ICMP、IGMP协议包,或者接收TCP/IP栈不能够处理的IP包,也可以用来发送一些自定包头或自定协议的IP包。网络监听技术很大程度上依赖于SOCKET_RAW
参考技术B 源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
  套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
  非常非常简单的举例说明下:Socket=Ip
address+
TCP/UDP
+
port。
参考技术C 通俗一点套接字就是口令,每个应用程序都有自己的口令,通信的目的地IP地址,使用的传输层协议(TCP或UDP)和使用的端口号是口令的内容。 参考技术D 简单点跟你说就是把要访问的机器的ip,哪种传输协议(tcp还是udp),以及端口写清楚。一般会问这个问题的人应该是搞不清楚为什么要有这么个东西这个概念。这个东西的重点在于“端口上”,机器要找机器有ip就够了,但是机器上不只一个程序,所以要写清楚端口,才能找到指定的程序!!!

XDP 套接字附加到的事件是啥?

【中文标题】XDP 套接字附加到的事件是啥?【英文标题】:What is the event that XDP socket is attached to?XDP 套接字附加到的事件是什么? 【发布时间】:2021-10-30 20:31:44 【问题描述】:

我正在开发一个向接收处理程序注册的内核模块,如下所示:

rx_handler_result_t rxhPacketIn(struct sk_buff **ppkt)

但是,当我尝试将这个内核模块程序与 XDP 教程 1 中的 XDP 程序一起使用时,内核模块根本没有涉及,即使我尝试只在 XDP 内核程序中传递数据包(@ 987654323@)。所以我的问题是,XDP 内核程序是如何附加到内核上的,它是否比注册为rx_handler 的内核模块具有更高的优先级?

【问题讨论】:

【参考方案1】:

具有本机驱动程序支持的 XDP 挂钩位于 sk_buff 分配之前。因此,它位于接收路径上的内核模块之前。

【讨论】:

你看到我的内核模块被阻止(可能是由 XDP 程序)被激活的任何原因吗?

以上是关于套接字是啥?的主要内容,如果未能解决你的问题,请参考以下文章

套接字是啥?

套接字是啥意思?

AddressFamily.FireFox 在 .NET 套接字中指的是啥?

在linux中连接非阻塞套接字的正确方法是啥

使用套接字进行进程间通信的限制是啥?

XDP 套接字附加到的事件是啥?