套接字(socket)基本知识与工作原理

一、Socket相关概念

Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)

SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。两个基本概念:客户方和服务方。当两个应用之间需要采用SOCKET通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立SOCKET连接,发起呼叫连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。在客户方呼叫连接请求之前,它必须知道服务方在哪里。所以需要知道服务方所在机器的IP地址或机器名称,如果客户方和服务方事前有一个约定就好了,这个约定就是PORT(端口号)。也就是说,客户方可以通过服务方所在机器的IP地址或机器名称和端口号唯一的确定方式来呼叫服务方。在客户方呼叫之前,服务方必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,服务方可以根据情况建立或拒绝连接。连接方式有两种,同步方式(Blocking)和(noBlocking).客户方发送的消息可以是文本,也可以是二进制信息流。当客户方的消息到达服务方端口时,会自动触发一个事件(event),服务方只要接管该事件,就可以接受来自客户方的消息了。

二、Socket有两种类型:

  • 流式Socket(STREAM):是一种面向连接的Socekt,针对面向连接的TCP服务应用,安全,但是效率低;
  • 数据报式Socket(DATAGAM):是一种无连接的Socket,对应于无连接的UDP服务应用。不安(丢失,顺序混乱,在接受端要分析重排及要求重发),但效率高。

三、Socket一般应用模式(服务端和客户端)

服务端的Socket(至少需要两个):

  • 一个负责接受客户端连接请求(但不负责与客户端通信)
  • 每成功接收到一个客户端的连接便在服务端产生一个对应的Socket
    • 再接受到客户端连接时创建。
    • 为每个连接成功的客户端请求在服务端都创建一个对应的Socket(负责和客户端通信)。

客户端的Socket

  • 客户端Socket

    • 必须指定要连接的服务端地址和端口。
    • 通过创建一个Socket对象来初始化一个到服务端的TCP连接。

Socket通信基本流程图

Socket的通信过程

服务端:

  • 申请一个Socket
  • 绑定到一个IP地址和一个端口
  • 开启侦听,等待接受连接

客户端:

  • 申请一个Socket
  • 连接服务器(指明IP地址和端口号)

服务器端接到连接请求后,产生一个新的Socket(端口大于1024)与客户端建立连接并进行通讯,原侦听Socket继续侦听。

套接字(socket)基本知识与工作原理相关推荐

  1. 套接字socket 的地址族和类型、工作原理、创建过程

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  2. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  3. Java 套接字(Socket)

    网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...

  4. 了解套接字Socket

     了解套接字Socket   套接字是通过操作系统(OS)完成网络通信的一种标准方法.可以将套接字看作是与连接相连的一个终端,就像是操作员配电盘上的一个插座一样.但是这些套接字只是程序员的抽象称呼 ...

  5. Linux下套接字详解(二)----套接字Socket

    在前面我们讲了TCP/IP.TCP和UDP的一些基本知识,但是协议只有一套,而我们系统多个TCP连接或多个应用程序进程必须通过同一个 TCP协议端口传输数据.为了区别不同的应用程序进程和连接,许多计算 ...

  6. 5.1 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)

    文章目录 1.传输层提供的服务及功能概述 2.传输层的寻址与端口 (1)端口的作用 (2)端口号的分类 (3)套接字 3.无连接UDP和面向连接TCP服务 1.传输层提供的服务及功能概述 传输层的功能 ...

  7. Java 套接字Socket

    套接字 一.概述 本质上是一套基于网络传输数据的流 实际上是一套用于网络通信的API IP地址 IPv4是指由4组数组成的IP地址 , 每组数的范围在0~255 .一共有2的32次方个地址(43亿多) ...

  8. Java套接字Socket编程--TCP参数

    在Java的Socket中,主要包含了以下可设置的TCP参数. 属性 说明 默认值 SO_TIMEOUT 对ServerSocket来说表示等待连接的最长空等待时间; 对Socket来说表示读数据最长 ...

  9. 网上最全的套接字socket

    套接字socket使用 1.1创建socket sk = socket(int family, int type, int protocol); family:协议簇,PF_INET.PF_INET6 ...

最新文章

  1. 监控摄像头使用率不足六成 还需提高维护力
  2. arm9 6410   tslib触屏小程序
  3. 数据结构与算法笔记(十五)—— 散列(哈希表)
  4. 推荐 7 个 Github 上近 200k Star 的计算机学习资源,练好前端内功的秘籍!
  5. IDEA配置SVN并实现代码版本控制
  6. Java124 0,AcWing 124. 数的进制转换java
  7. 论文公式编号右对齐_论文不会写?最详细的论文排版技巧
  8. matplotlib3d柱状图_Matplotlib——画图(散点图、柱状图、等高线图、3D图)
  9. nginx 监听非标准端口80,重定向端口丢失问题解决
  10. 一个定时器的普通实现,多进程实现和多线程实现的对比
  11. 毕设项目 - 基于SSM的药品管理系统(含源码+论文)
  12. 使用Atmel Studio7和USBasp烧写器烧写AVR单片机
  13. Delphi6.0的那些
  14. 15款超好用的短链接在线生成器(新浪t.cn、腾讯url.cn)
  15. ‘MSOCache’是什么文件?
  16. css bottom属性 使元素位置相对固定
  17. 电视盒子显示ntp服务器异常,云计算-更换VRM主节点所在服务器主板后,出现VRM与NTP服务器状态异常的处理方法...
  18. WIN10下如何解决PL2303驱动不可用的问题或者com口显示黄色感叹号usb-to-serial
  19. windows配置好用的RSS
  20. 【四】狂神Java笔记-面向对象

热门文章

  1. STL源码剖析 set
  2. clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘
  3. 离合器半联动点的判断和技巧 为您支招
  4. vector 、map 、iterator 之学习笔记
  5. Linux find命令、Linux rmdir命令、Linux ls命令
  6. oracle thin和oci 区别
  7. 前端布局神器display:flex
  8. python 笔记(三) 断言(assert)
  9. iOS - Core Animation 核心动画
  10. Javascript 构造函数模式、原型模式