[计算机网络] Socket

[计算机网络] Socket

一、定义

  • socket即套接字,是应用层与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族的编程接口(API)
    在这里插入图片描述
  1. Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
  2. 即:通过Socket,我们才能通过TCP/IP协议进行网络通信的开发
  3. 对用户来说,只需调用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:采用请求—响应方式,客户端有需要才进行通信。
    • Socket:采用服务器主动发送数据的方式,服务器端有需要才进行通信
    • 建立网络连接后,Socket服务器可主动发送消息给客户端,而不需要由客户端向服务器发送请求。

参考链接:
Android:这是一份很详细的Socket使用攻略

发布了82 篇原创文章 · 获赞 7 · 访问量 4980

猜你喜欢

转载自blog.csdn.net/magic_jiayu/article/details/104385210
今日推荐