zoukankan      html  css  js  c++  java
  • Socket通信原理

    Socket定义

    • 即套接字,是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)
     
     
    1. Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
    2. 对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信
    • 成对出现,一对套接字:
    Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}
    
    • 一个 Socket 实例 唯一代表一个主机上的一个应用程序的通信链路

    建立Socket连接过程

     
     

    原理

    Socket的使用类型主要有两种:

    • 流套接字(streamsocket) :基于 TCP协议,采用 流的方式 提供可靠的字节流服务
    • 数据报套接字(datagramsocket):基于 UDP协议,采用 数据报文 提供数据打包发送的服务

    具体原理图如下:

     
     

    Socket 与 Http 对比

    • Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题
    • HTTP协议 属于 应用层,解决的是如何包装数据

    由于二者不属于同一层面,所以本来是没有可比性的。但随着发展,默认的Http里封装了下面几层的使用,所以才会出现Socket & HTTP协议的对比:(主要是工作方式的不同):

    • Http:采用 请求—响应 方式。
    1. 即建立网络连接后,当 客户端 向 服务器 发送请求后,服务器端才能向客户端返回数据。
    2. 可理解为:是客户端有需要才进行通信
    • Socket:采用 服务器主动发送数据 的方式
      1. 即建立网络连接后,服务器可主动发送消息给客户端,而不需要由客户端向服务器发送请求
      2. 可理解为:是服务器端有需要才进行通信
  • 相关阅读:
    Spring+Mybatis+Maven+MySql搭建实例
    Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
    SQL GROUP BY 语句
    SQL SUM() 函数
    SQL MIN() 函数
    SQL MAX() 函数
    SQL LAST() 函数
    SQL FIRST() 函数
    SQL COUNT() 函数
    SQL AVG() 函数
  • 原文地址:https://www.cnblogs.com/21-Gram/p/12719865.html
Copyright © 2011-2022 走看看