协议和socket的关系

协议和socket的关系

定义

  • 协议:是一套明确的规则和标准,规定了网络中的设备如何交换信息。HTTP、WebSocket、SMTP、FTP等

  • Socket(套接字):是应用层与传输层之间的一个抽象层,它是一组应用程序编程接口socket里面的api(方法)都是通过句柄fd操作系统内核里的sock

    • image-20251107114535450
    • 系统内核的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的位置

image-20251107110900654

image-20251107112817675

posted @ 2025-11-13 10:26  deyang  阅读(9)  评论(0)    收藏  举报