套接字类型

简介: 套接字类型

套接字(Socket)是计算机网络编程中的一个重要概念,它定义了不同类型的接口以适应不同的网络通信需求。以下是三种主要的套接字类型:

  1. 流式套接字(Stream Socket/ SOCK_STREAM)

    • 流式套接字基于TCP(传输控制协议)提供可靠的、面向连接的服务。
    • 数据传输有序且无差错,确保数据到达的顺序与发送时一致,并且有重传机制来处理丢包问题。
    • 这种套接字类型支持全双工通信,即同时支持双向的数据传输,并且内置了流量控制和拥塞控制机制。
  2. 数据报套接字(Datagram Socket/ SOCK_DGRAM)

    • 数据报套接字基于UDP(用户数据报协议)提供不可靠的、无连接服务。
    • 每个数据报文都是独立传输和处理的,不保证顺序到达,可能丢失或重复,且无重传机制。
    • 数据报套接字适合实时性要求较高但容忍一定数据丢失的场景,例如VoIP或在线游戏等。
  3. 原始套接字(Raw Socket/ SOCK_RAW)

    • 原始套接字允许直接访问底层网络协议,甚至包括IP层及其以下的协议数据单元(如IP包头)。
    • 使用原始套接字可以直接构造和发送任意格式的数据包,或者接收网络层的数据包。
    • 常用于网络诊断、抓包工具(如ping命令使用ICMP协议)、以及实现特定网络协议栈未提供的高级功能。

此外,在特定环境下还有其他类型的套接字,例如Unix域套接字(Unix Domain Socket/ UDS),它不是用于网络通信,而是在同一台主机上的进程间通信;以及其他特定于平台或系统的套接字类型,比如X.25套接字等。

目录
相关文章
|
6月前
套接字(socket)的端点表示
套接字(socket)的端点表示
72 8
|
6月前
|
算法 Unix
socket套接字选项getsockopt&setsockopt
setsockopt()函数用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。在Unix网络编程中通常用到getsockopt和setsockopt两个函数来获取和设置套接口的选项。getsockopt()函数用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optval。
97 0
|
存储 网络协议 Unix
网络基础:socket套接字
网络基础:socket套接字
95 0
|
6月前
|
网络协议 Python
创建套接字
创建套接字
35 6
|
6月前
|
缓存 网络协议 API
套接字
Socket的连接 更准确来说是,流式Socket连接的相关内容 基本概述: TCP通信需要先建立虚拟链路(通信双方的一个连接,connection),TCP/IP通讯下,Socket采用四元组(源IP、源端口、目的IP、目的端口)标识(identity)
|
网络协议 小程序 Java
网络编程之 Socket 套接字(使用数据报套接字和流套接字分别实现一个小程序(附源码))
1. 什么是网络编程 2. 网络编程中的基本概念 1)发送端和接收端 2)请求和响应 3)客户端和服务端 4)常见的客户端服务端模型 3. Socket 套接字 1)Socket 的分类 2)Java 数据报套接字通信模型 3)Java 流套接字通信模型 4. UDP 数据报套接字编程 1)DatagramSocket API 2)DatagramPacket API 3)示例 5. TCP 流套接字编程 1)ServerSocket API 2)Socket API 3)示例 a. 短连接版本 b. 长连接并发版本
275 0
|
存储 网络协议 Unix
socket | 网络套接字、网络字节序、sockaddr结构
socket | 网络套接字、网络字节序、sockaddr结构
119 0
|
网络协议 开发者 Python
套接字的使用
套接字的使用
116 0
Socket传输结构体数据注意事项
【1 背景】 在Socket通信中,要传输结构化的数据或者要进行协议数据传输的时候,发送端必须要构造结构体进行数据传输。 接收端也必须通过同样的结构体进行解析。 但Socket传输结构体数据时候,稍有不慎就会出现:1)解析数据出错;2)接收数据不完整;3)解析为乱码等的Bug。
284 0
Socket传输结构体数据注意事项