0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Socket套接字的原理说明

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-18 19:16 次阅读

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。

生成套接字主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

Socket以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。

pYYBAGKts-eAKn0ZAAD_l5ZPZxg590.png

Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。

要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

连 接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客 户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

socket通信流程:

1、服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket
2、服务器为socket绑定ip地址和端口号
3、服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开
4、客户端创建socket
5、客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket
6、服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求
7、客户端连接成功,向服务器发送连接状态信息
8、服务器accept方法返回,连接成功
9、客户端向socket写入信息
10、服务器读取信息
11、客户端关闭
12、服务器端关闭

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1350

    浏览量

    78986
  • 套接字
    +关注

    关注

    0

    文章

    5

    浏览量

    1862
收藏 人收藏

    评论

    相关推荐

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之socket CAN

    。如何使用socket CAN就像TCP/IP协议一样,在使用CAN网络之前你首先需要打开一个套接。CAN的套接使用到了一个新的协议族,
    发表于 11-15 09:25

    飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之socket CAN编程步骤

    创建socket使用CAN通信协议簇,需要在创建socket时将PF_CAN作为第一个参数;同时选定原始套接协议(SOCK_RAW)。绑定can设备这里是将创建好的
    发表于 11-15 09:23

    飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之socket CAN

    。如何使用socket CAN就像TCP/IP协议一样,在使用CAN网络之前你首先需要打开一个套接。CAN的套接使用到了一个新的协议族,
    发表于 11-14 08:51

    socket 和 WebSocket 的区别

    在现代网络通信中,Socket和WebSocket是两种常见的通信协议。它们在实现网络通信、数据传输等方面发挥着重要作用。然而,它们之间存在一些关键的区别。 1. Socket套接
    的头像 发表于 11-12 14:33 231次阅读

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之socket编程

    套接描述符。参数name指出说明对方套接地址结构的指针。对方套接
    发表于 11-12 10:59

    飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之socket编程

    套接描述符。参数name指出说明对方套接地址结构的指针。对方套接
    发表于 11-11 14:14

    socket与WebSocket的区别与联系

    在现代网络通信中,Socket和WebSocket是两种常见的通信协议。它们在网络编程中扮演着重要的角色,但它们之间存在一些关键的区别和联系。 1. 定义和基本概念 Socket套接
    的头像 发表于 11-04 09:19 263次阅读

    TM4C129x基于套接的TI-RTOS NDK以太网应用

    电子发烧友网站提供《TM4C129x基于套接的TI-RTOS NDK以太网应用.pdf》资料免费下载
    发表于 09-23 11:15 0次下载
    TM4C129x基于<b class='flag-5'>套接</b><b class='flag-5'>字</b>的TI-RTOS NDK以太网应用

    套接socket包含哪些参数

    套接Socket)是计算机网络中最基本的通信抽象,它定义了两个进程间通信的端点。在TCP/IP协议栈中,套接是实现网络通信的核心组件。
    的头像 发表于 08-16 11:02 344次阅读

    socket的基本概念和原理

    的通信。它是一个抽象的概念,用于表示网络中的一个通信实体。在计算机网络中,Socket允许应用程序通过网络发送和接收数据。Socket的概念最早由UNIX操作系统引入,后来被广泛应用于各种操作系统和编程语言中。 2. Socket
    的头像 发表于 08-16 10:51 910次阅读

    socket包含哪些基本信息?

    在计算机网络中,套接Socket)是一种通信端点的抽象表示,用于在网络中进行数据传输。套接是网络编程的基础,它提供了一种简单、灵活的方
    的头像 发表于 08-16 10:43 250次阅读

    请问UDP套接是否支持使用AT命令的组播?

    UDP 套接是否支持使用 AT 命令的组播?
    发表于 07-16 06:02

    请问怎们设置socket套接的rec函数的阻塞时间?

    请问怎们设置socket套接的rec函数的阻塞时间?
    发表于 06-24 06:14

    鸿蒙原生应用开发-网络管理Socket连接(一)

    一、简介 Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。 二、基本概念 Socket套接,就是对网
    发表于 04-01 14:20

    常见的socket三种类型

    常见的socket三种类型  Socket是计算机网络中常用的通信机制,在网络编程中起到了非常重要的作用。Socket可以分为三种类型:流套接
    的头像 发表于 12-08 11:18 2350次阅读