socket通信过程

网络通信(基于TCP/IP实现客户端/服务器的通信) 被连接者需要完成的任务(服务端):1、创建socket内核对象,内核创建完成后会返回它的描述符(该描述只是为了完成连接,三次握手)2、准备本机地址(ip地址+端口号)3、绑定(把本机地址与socket对象进行绑定)4、开启监听,并设置排队的队列长度5、等待连接,连接成功后,内核会再返回一个连接成功的Socket描述符,专门用来通信for(;; 阅读详情

一、网络字节序与主机字节序

1、主机字节序:

就是自己的主机内部,内存中数据的保存顺序,可以分为两种:

小端字节序(little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

大端字节序(big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

2、网络字节序

大端字节序即网络字节序

3、数据传输过程

a的固有数据存储-------标准化--------转化成b的固有格式

II

a的主机字节序----------网络字节序 ---------b的主机字节序

标准化原因:不同的CPU有不同的字节序类型

二、Socket通信 ---unix版

1、Socket通信流程

socket是"打开—读/写—关闭"模式的实现,以使用TCP协议通讯的socket为例,其交互流程大概如下:

服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket

服务器为socket绑定ip地址和端口号

服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开

客户端创建socket

客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket

服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求

客户端连接成功,向服务器发送连接状态信息

服务器accept方法返回,连接成功

客户端向socket写入信息

服务器读取信息

客户端关闭

服务器端关闭

2、三次握手建立连接

图示过程如下:

    • 当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;
    • 服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;
    • 客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立。

3、四次挥手断开连接

图示过程如下:

    • 某个应用进程首先调用close主动关闭连接,这时TCP发送一个FIN M;
    • 另一端接收到FIN M之后,执行被动关闭,对这个FIN进行确认。它的接收也作为文件结束符传递给应用进程,因为FIN的接收意味着应用进程在相应的连接上再也接收不到额外数据;
    • 一段时间之后,接收到文件结束符的应用进程调用close关闭它的socket。这导致它的TCP也发送一个FIN N;

接收到这个FIN的源发送端TCP对它进行确认。

这样每个方向上都有一个FIN和ACK。

4、Socket通信主要函数信息

《---socket()、bind()、listen()、connect()、accept()、read()、write()、close()---》

socket函数 -- int socket(int domain, int type, int protocol)

参数解释:

  • domain用于设置网络通信的域,函数socket()根据这个参数选择通信协议的族。通信协议族在文件sys/socket.h中定义。

可设置值:

名称 

含义 

名称 

含义

PF_UNIX,PF_LOCAL 

本地通信 

PF_X25 

ITU-T X25 / ISO-8208协议

AF_INET,PF_INET 

IPv4 Internet协议 

PF_AX25 

Amateur radio AX.25

PF_INET6 

IPv6 Internet协议 

PF_ATMPVC 

原始ATM PVC访问

PF_IPX 

IPX-Novell协议 

PF_APPLETALK 

Appletalk

PF_NETLINK 

内核用户界面设备 

PF_PACKET 

底层包访问

  • type用于设置套接字通信的类型,主要有SOCKET_STREAM(流式套接字)、SOCK——DGRAM(数据包套接字)等。

可设置值:

名称 

含义

SOCK_STREAM 

Tcp连接,提供序列化的、可靠的、双向连接的字节流。支持带外数据传输

SOCK_DGRAM 

支持UDP连接(无连接状态的消息)

SOCK_SEQPACKET 

序列化包,提供一个序列化的、可靠的、双向的基本连接的数据传输通道,数据长度定常。每次调用读系统调用时数据需要将全部数据读出

SOCK_RAW 

RAW类型,提供原始网络协议访问

SOCK_RDM 

提供可靠的数据报文,不过可能数据会有乱序

SOCK_PACKET 

这是一个专用类型,不能呢过在通用程序中使用

注:并不是所有的协议族都实现了这些协议类型,例如,AF_INET协议族就没有实现SOCK_SEQPACKET协议类型。

 

【通信篇】【Socket通信机制】 Socket通信机制是一种计算机网络通信协议,它是基于TCP/IP协议栈的应用层协议,提供了一组API(应用程序接口),允许不同的进程在不同计算机之间进行通信。socket通信一般涉及客户端和服务端两个socket。服务器端首先初始化Socket,然后与端口绑定,并对该端口进行监听。当客户端连接成功后,客户端会发送数据请求,服务器端接收并处理这些请求,然后将回应数据发送给客户端。客户端读取数据后,连接关闭。socket本身不是协议,是api接口,通过socket,我们可以使用Tcp/ip协议。 阅读详情

相关推荐

Socket 通信机制详解

Socket 通信机制详解

喵酱 1万+

Socket通讯基本流程

Socket编程模型 服务器端: 1)创建Socket对象。设置协议、传输方式等(连接Socket) 2)绑定IP与端口(设置要监听的IP与端口) 。Bind() 3)开启监听。Listen() 4)开始接受客户端连接。Accept)://阻塞线程,同时也需要循环不断接受用户连接。 5)接受了客户端的连接...

胡老汉的博客 1704

海康视觉平台VisionMaster使用学习笔记(1)

双击图像源设置图像源的属性,像素格式分为Mono8和RDB24分别对应导入的图像是彩色还是黑白。打开相机驱动软件MVS,对连接的相机进行属性上的配置,先对相机的IP进行对应的设置。将自动触发的使能打开,保存配置好的相机属性,默认保存到用户集1中。点击MVS软件中的触发按钮,查看相机是否进行正常的触发拍照。打开VM软件添加一个图像源,选择图像源选项拖出图像源。回到VM软件中将选择相机选项选择到配置好参数的相机。取图方式也可以调整为相机取图,将图像源改为相机。双击相机进行连接后对相机的属性进行配置。

A567852的博客 1万+

socket的通讯流程

socket的通讯流程 服务器端(电话的一端,接听电话者): 1、创建socket,表示有了一个电话 2、绑定socket和端口号,相当于,电话对应了一个电话号码 3、监听端口号,相当于,把电话插上电话线,可以随时等待有人拨通电话 4、接收客户端的连接请求,相当于有人打来了电话 5、从socket中读取字符,相当于,接起电话,有语音信息传输过来了 6、关闭socket,相当于通话完成后,挂掉电话 客户端: 1、 创建socket,表示有了一个电话(当然也默认绑定了端口号)

yang_web的博客 3289

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

从‘眼花缭乱’到‘心中有数’:rs-fMRI统计分析全流程避坑指南(附DPABI操作截图)

本文详细解析了rs-fMRI统计分析的全流程,从质量控制到统计模型选择,再到多重比较校正和结果解读。特别针对DPABI软件操作中的常见陷阱提供实用指南,帮助研究者避免FDR和GRF校正等关键环节的错误,实现从数据混乱到清晰分析的转变。

weixin_33686714的博客 400

Socket编程通信过程

传统的进程间通信需要通过内核提供的IPC机制进行,但限于本机通信,跨机通信需要用到网络通信(本质上还是借助内核),这就需要内核提供的socket API库。进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。每个进程各有不同的用户地址空间,一个进程的全局变量是不能被别的进程看见的,所以进程间通信都要经过内核,在内核中开辟一个缓存区,这个缓存区是所有与缓存区相关的进程都能访问的。内核提供的这种机制就叫做进程间通信。

weixin_45925188的博客 198

【UE5_蓝图】实时音频采集与动态WAV文件保存实战指南

本文详细介绍了在UE5中使用蓝图实现实时音频采集与动态WAV文件保存的完整流程。从插件配置、录音框架搭建到动态文件名生成和音频参数优化,提供了实用技巧和常见问题解决方案,特别适合需要快速实现音频采集功能的开发者。

weixin_29009669的博客 412

Android Socket通信过程

Socket通信是网络编程的重要方法,在Java标准接口中,提供了两个类ServerSocket和Socket,分别用来表示服务器端和客户端。服务器端ServerSocket监听端口,客户端socket向服务器(ip,端口)发起连接申请,服务器接受申请,就生成一个socket与客户端连接,这一对连接的socket发送、接收数据,直到关闭socket,连接断开。 服务器端的ServerSocket...

qq_41381649的博客 1144

从零实现机械臂抓取仿真:用MoveIt+Gazebo完成物体pick&place全流程

本文详细介绍了如何使用ROS的MoveIt框架与Gazebo仿真环境,从零构建机械臂抓取仿真系统。涵盖环境搭建、MoveIt配置、Gazebo集成、抓取动作实现等全流程,帮助开发者掌握机械臂控制的核心技术,实现高效的pick&place任务。

weixin_29250403的博客 478

滑块逆向及流程分析

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

pyzzd的博客 8009

socket 的通信过程

12.3.4socket 的通信过程  请先看图12.9所示的socket 通信过程                图12.9 socket 的通信过程 1.建立套接字 Linux在利用socket()系统调用建立新的套接字时,需要传递套接字的地址族标识符、套接字类型以及协议,其函数定义于net/socket.c中:    asmlinkagelong sys_socket(

u011279649的专栏 942

RK3588 部署 YOLOv5s 实战:多线程加速从 16FPS 飙升到 120FPS(含性能优化)

因为RK3588包含了3个NPU核心,支持3个核心同时工作、双核合作、以及单核工作。我们可以使用线程池来加速。线程池是一种长街的并发编程模型,它用于管理和复用线程,以提高多线程程序的性能和效率。线程池通常包含以下主要组件:1、任务队列:任务队列用于存储待执行的任务。这些任务可以是函数、方法或其他需要多线程环境中执行的操作。2、线程池管理:线程池管理器负责创建、销毁和管理线程。它会监视任务队列中的任务,根据需要创建线程,执行任务,并在任务完成后将线程放回池中以供重用。

FJN110的博客 100

Socket通信过程

Socket通信过程

高淳小弟的博客 870

【推荐100个unity插件之8】实现多人在线联机游戏——Mirror插件的使用介绍(附项目源码)

基于Mirror的Unity多人游戏开发指南 本文介绍了使用Mirror插件开发Unity多人游戏的基本流程。Mirror是Unity的高级网络API,替代了已废弃的UNet系统。文章详细讲解了如何导入Mirror插件,创建NetworkManager网络管理器,处理常见错误,以及创建玩家角色和出生点。 主要内容包括: 创建场景NetworkManager并配置必要组件 为玩家添加NetworkIdentity和NetworkTransform组件 设置玩家初始生成位置和生成方式 常见错误及解决方法 通过M

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

基于Socket的TCP/UDP通信过程

什么是Socket Socket是网络驱动层提供给应用程序编程的接口和一种机制。 Socket在应用程序中创建,通过一种绑定机制与驱动程序建立联系,告诉自己所对应的IP地址和端口号。 什么是TCP协议 基于Socket的TCP通信过程 服务器端首先创建一个ServerSocket并且宣布开放的端口号,然后调用accept方法等待客户端的连接,客户机创建一个Socket表示连接的地址和端口号向服务...

狸匪的博客 751

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用Socket写redis的通信过程

【代码】使用Socket写redis的通信过程。

ye_you 256

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【网络编程】socket套接字|sockaddr|sockaddr_in|通信过程

介绍了socket套接字完整流程,sockaddr结构体详解

m0_67367079的博客 1612

TCP Socket通信详细过程

  下面这篇文章是参考"骏马金龙"博客中    不可不知的socket和TCP连接过程https://www.cnblogs.com/f-ck-need-u/p/7623252.html  这篇博文对我的启发很大,但文中比较核心一些东西说明的不是非常详细,导致整片文章对于初学者还是 难度太大,这篇文章引用了部分该文中的内容,主要是为了能够让整篇文章能连贯,一便让更多想要深入计算机 原理的人,有更...

weixin_30629653的博客 2342

socket连接和通信过程解析

网络通信的标准流程是,服务端新建一个socket,然后在该socket中绑定一个地址,再设置该socket为监听socket,然后阻塞在accept等待连接。客户端新建一个socket,然后connect到一个服务端的地址。下面分析一下这个过程。看多个客户端或者多个连接是如何在一个监听的socket中完成通信的。 服务器收到一个syn包的时候,在tcp_rcv中进行处理。该函数收到根据tcp数据包...

标子 的专栏 924

TCP/IP的TCP socket通信过程

传统的TCP/IP通信过程依赖于socket,位于应用层和传输层之间,使得应用程序可以进行通信。相当于港口城市的码头,使得城市之间可以进行货物流通。服务器和客户端各有不同的通信流程。一、服务器    1、建立连接阶段调用socket(),分配文件描述符,即监听套接字调用bind(),将套接字与本地IP地址和端口绑定调用listen(),监听特定端口,socket()创建的套接字是主动的,调用lis...

upupday19的博客 1万+

网络编程-socket通信过程

网络编程-socket通信过程通信流程服务器端客户端通信流程图套接字函数创建 socket()绑定/命名 bind()监听 listen()接受连接 accept()发起连接 connect()关闭连接 close() 通信流程 TCP/socket通信流程分为客户端和服务器,下面分别介绍 服务器端 服务器端是被动接受连接的角色,主要有以下步骤 创建一个用于监听的套接字 socket() -监听:监听有客户端的连接 -套接字:相当于文件描述符,该套接字只用来监听 将监听文件描述符和本地的IP和端口绑定(

MinutkiBegut的博客 920
上一篇: Spring Security(原理解析:简单入门)
下一篇: java的Socket编程
-OMO-
博客等级 码龄8年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值