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. 可理解为:是服务器端有需要才进行通信
  • 相关阅读:
    jquery中Ajax提交配合PHP使用的注意事项-编码
    js根据子目录数目显示父级目录
    smarty中函数的使用以及二维数组的使用
    在浏览器中对访问的网页中的cookie添加和修改
    Windows映射网络驱动器提示错误
    Linux防火墙/iptables使用
    VMWare启动虚拟机失败,提示锁定文件失败解决方法
    虚拟机中Linux设置当前ip
    基于搜索内容自己写一个分页功能
    Newtonsoft.Json
  • 原文地址:https://www.cnblogs.com/21-Gram/p/12719865.html
Copyright © 2011-2022 走看看