目录
- 协议和socket的关系
- 定义
- 核心比喻:协议与Socket的关系就像“语言”与“电话”
- 总结与关系
- Socket的位置
协议和socket的关系
定义
-
协议:是一套明确的规则和标准,规定了网络中的设备如何交换信息。HTTP、WebSocket、SMTP、FTP等
-
Socket(套接字):是应用层与传输层之间的一个抽象层,它是一组应用程序编程接口。socket里面的api(方法)都是通过句柄fd操作系统内核里的sock
-
-
系统内核的sock只有一种,但是到了socket这里他有tcp和udp,以及一般不会使用的原始socket。
// 内核中的Socket类型定义 #define SOCK_STREAM 1 // 面向连接的TCP Socket 对应java就是: #define SOCK_DGRAM 2 // 无连接的UDP Socket #define SOCK_RAW 3 // 原始Socket,完全由自己定义其包的解析,原始Socket:留给网络专家和系统开发者# TCP Socket 对应java就是: # ServerSocket serverSocket = new ServerSocket(80); // TCP Socket 服务端 # Socket socket = new Socket(server, 21); // TCP Socket 客户端# UDP Socket 对应java就是: # DatagramSocket socket = new DatagramSocket(); // UDP Socket
-
核心比喻:协议与Socket的关系就像“语言”与“电话”
- 协议:好比是人类交流的语言和规则。
- 比如英语、中文。双方必须使用同一种语言(协议)才能听懂对方在说什么。
- 协议还规定了交流的规则,比如:谁先开口?如何问候?如何结束对话?这就像HTTP协议规定了“客户端先发送请求,服务器再返回响应”一样。
- 例子:HTTP、FTP、TCP、IP、SMTP等。
- Socket:好比是用于通话的电话机和电话线。
- 电话机(Socket)提供了拨号、说话、听声音的功能(编程接口)。
- 电话线(底层网络)负责传输声音信号(数据)。
- 你拿起电话(创建Socket),拨一个号码(绑定IP地址和端口),对方接听(连接建立),然后你们就可以用约定好的语言(协议)开始通话了。
关系总结:
Socket是实现网络协议、进行网络通信的一种底层技术手段和编程接口。协议是通信的语义和规则,而Socket是承载这些规则、使通信得以发生的物理和逻辑工具。
总结与关系
| 特性 | 协议 | Socket |
|---|---|---|
| 角色 | 通信的规则和标准 | 通信的工具和接口 |
| 层次 | 存在于网络各层(应用层、传输层等) | 位于应用层和传输层之间的抽象层 |
| 表现形式 | 文档、标准(如RFC) | 操作系统提供的API函数(如socket, bind, connect) |
| 依赖性 | 协议可以不依赖于特定的Socket实现 | Socket的实现必须遵循某种协议(如TCP或UDP) |
| 类比 | 语言和语法(如英语) | 电话机 |
Socket的位置

