Socket到底是什么?

Socket 通信机制详解 阅读详情

学习java网络编程一段时间后,突然被问到socket是什么?回答不上来,感觉很尴尬,于是赶紧是查阅资料。

网络由下往上分为 物理层 、数据链路层 、 网络层 、 传输层 、 会话层 、 表现层 和 应用层。

通过初步了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据。

关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:

  “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。
  应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。
  WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

什么是Socket

那么我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。socket本身并不是协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组调用接口(TCP/IP网络的API函数)

socket在哪里

网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:

  “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。
  这个就像操作系统会提供标准的编程接口,比如win32编程接口一样。
  TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”

HTTP是轿车,提供了封装或者显示数据的具体形式;
Socket是发动机,提供了网络通信的能力。

  实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。

什么是Socket? 一、什么是Socket? 在计算机通信领域,socket 被翻译为“套接字”(套接字=主机+端口号),它是计算机之间进行通信的一种约定或一种方式。通过 socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read关闭close”模式来操作。 我的理解就是Socket就是该模式的一个实现,它只是提供了一个针对TCP或者UDP编程的接口:即so 阅读详情

相关推荐

socket编程知识详解

什么是 socket? socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 socket有哪些类型? socket可以分为两种类型: SOCK_STREAM和SOCK_DGRAM SOCK_STREAM:流格式套接字,也叫面向连接的套接字,是一种可靠的双向通信的通信数据流,使用的是TCP协议 SOCK_DGRAM:数据报格式套接字,也叫无

hugo33的博客 4783

Socket的详细介绍

本文是关于Socket通信的稍微全面一点的介绍。包括了Socket出现的原因,Socket组成及关键点,Socket的关键实现,Socket的底层原理,Socket的优劣,如何调优Socket,Socket适用的场景以及Socket相关的高频面试问题。

XieHYBlog的博客 3万+

C# Socket高并发

C#高性能大容量SOCKET并发(转) C#高性能大容量SOCKET并发(零):代码结构说明 C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍 C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装 C#高性能大容量SOCKET并发(三):接收、发送 C#高性能大容量SOCKET并发(四):缓存设计 C#高性能大容量SOCKET并发...

ishenjiaming的博客 2897

一文带你了解socket网络编程以及详解过程和原理

Socket(套接字)是计算机网络编程中的一种抽象概念,它提供了在网络上进行通信的接口。通过使用 Socket,可以在不同计算机之间建立连接,并进行数据的传输和交换。通过 Socket,客户端可以与服务器建立连接并发送请求,服务器接收请求并返回响应。通过 Socket,可以在多个用户之间实现实时的文字、音频或视频通信。可以使用 Socket 在不同计算机之间传输文件,如上传和下载文件。可通过 Socket 在远程计算机上执行指令或操作。

m0_68987535的博客 2万+

HTTP、TCP/IP、socket及bluetooth-socket的整理

网络OSI七层模型 1物理层(简单理解网线)-- 2数据链路层(简单理解网卡)-- 3网络层(IP协议)-- 4传输层(TCP协议)-- 5会话层-- 6表示层(HTTP)-- 电脑/手机能够使用联网功能是因为底层实现了TCP/IP协议,可以使终端通过网络设备(网卡)建立TCP连接。TCP协议可以对上层(传输层)网络提供接口,使上层网络数据的传输建立在“无差别(不管是有线,无线,局域网,广域网等)”的网络之上。 在建立TCP/IP连接之前,需要进行三次确认后,客户端与服务器才正式开始传送数据。理想状态下

zhaochengsheng的专栏 2948

TP4054充电电路发热严重?手把手教你调整电阻值降低温度(附实测数据)

本文针对TP4054锂电池充电电路发热严重的问题,提供了详细的排错与解决方案。通过分析发热原理,指出核心在于PROG引脚电阻值设定,并手把手指导如何计算和选择正确的电阻以降低充电电流与温度。文末附有不同电阻下的实测温度与性能数据,为电子爱好者和工程师提供了实用的调试参考。

p4q5r6s7t的博客 406

socket

UNIX system V有:消息(message)、共享存储区(shared memory)和信号量(semaphore)等.网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX  BSD的套接字(socket)和UNIX ...

httpdrestart的博客 3万+

手把手教你用PlantVillage数据集搭建农作物病害识别模型(Python实战)

本文详细介绍了如何使用PlantVillage数据集和Python构建农作物病害识别模型。从环境准备、数据获取到模型构建、训练与评估,手把手教你实现一个实用的农业AI应用。特别针对PlantVillage数据集的特点,提供了处理类别不平衡、图像预处理和模型优化的实战技巧,帮助开发者快速掌握农作物病害识别技术。

weixin_29184371的博客 479

Perl Socket 编程

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。本章节我们为大家接收 Perl 语言中如何使用 Socket 服务。

Kandy1iu的博客 2166

【文献阅读:信道估计】Deep Residual Learning Meets OFDM Channel Estimation

基于深度学习的信道估计技术

weixin_43178683的博客 1753

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

本文提供了Ubuntu20.04系统上安装MATLAB R2023b的完整指南,包括系统要求检查、依赖项安装、详细安装步骤及常见问题解决方案。特别针对GTK模块加载失败、OpenGL图形加速问题和中文显示乱码等常见问题提供了有效解决方法,帮助用户顺利完成安装并优化使用体验。

weixin_42619061的博客 483

Windows 环境下的 Socket 编程 1 - 环境搭建和 Socket 相关函数

版本占用 2 字节,高 8 位为副版本,低 8 位为主版本,比如 V1.2 版本,则传递 0x0201。Windows 严格区分文件 I/O 函数和 SOCKET I/O函数,而Linux只有文件 I/O 函数。编译:菜单 Terminal > Run Build Task ,或者快捷键 Ctrl+Shift+B。编译:菜单 Terminal > Run Build Task ,或者快捷键 Ctrl+Shift+B。其次,当程序结束之前,需要调用。版本,并初始化相应版本的库。函数,设置程序中用到的。....

朱工的专栏 5943

如何用Python+Librosa实现轴承异响检测?5步搞定工业设备故障预警

本文详细介绍了如何利用Python和Librosa库,通过5个步骤构建工业轴承异响检测与故障预警系统。从音频采集、预处理、频谱特征提取,到构建机器学习模型并进行实时监测,提供了完整的代码级解决方案。该方法能有效识别轴承早期故障特征,实现低成本、高效的设备预测性维护。

rnn9storyteller的博客 632

windows 下C语言socket编程

之前一直在Linux系统开发C语言的socket,由于项目的需要 需要在windows下开发,第一次在windows下开 发,顺便记录下来。 首先socket的通信流程: Server程序: 1 .创建socket:socket(); 2. 绑定socket的IP+端口号:bind(); 3.监听端口号:listen(); 4.接收客户端的连接请求:accept(); 5.读写客...

fly_sky_share的博客 6381

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1995

大厂校招:星宸科技嵌入式面试及参考答案(5万字长文)

当一个新的硬件设备被插入系统时,内核会发送一个设备事件通知 udev,udev 会根据设备的属性和规则,为该设备创建一个合适的设备文件。通过去除不必要的驱动程序、禁用不需要的功能、选择合适的内核配置选项、优化内核编译选项和定制内核模块等方法,可以减小内核的大小和复杂性,提高系统的性能和稳定性。上半部通常是在中断关闭的情况下执行的,以确保中断处理的原子性。处理碎片化内存是内存管理中的一个重要问题,可以采用内存压缩、内存池管理、伙伴系统、首次适应算法和最佳适应算法等方法来减少内存碎片的产生,提高内存的利用率。

大模型大数据攻城狮的专栏 2927

什么是SOCKET编程?在PHP中如何实现SOCKET通信?

SOCKET编程是一种网络编程方式,它允许程序通过网络(如Internet)或本地机器(如Unix域套接字)进行通信。SOCKET可以看作是网络通信的一个端点,通过它,程序可以发送和接收数据。SOCKET编程提供了低级的网络通信接口,使得程序员可以直接控制网络数据流。SOCKET编程是一种基础但强大的网络编程技术,它允许程序通过网络进行直接通信。在PHP中,可以使用内置的socket_*函数来实现SOCKET编程,创建服务器端和客户端进行通信。

长风破浪会有时的博客 1631

AWS SQS跨账户访问失败排查指南

在使用AWS SQS(Simple Queue Service)时,跨账户访问是常见的业务场景。例如,账户A的应用程序向队列发送消息,账户B的消费者从队列拉取消息。尽管AWS官方文档明确支持此类配置,但在实际应用中,由于权限模型的复杂性,开发者和运维人员常会遇到“策略已配置但无法接收消息”的问题。通过本文的逐步排查指南,您不仅可以解决当前问题,还能深入理解AWS跨账户访问的权限模型。接收方账户的用户或角色必须同时附加IAM策略,显式授权操作目标队列。尽管策略看似允许接收方操作,实际测试中却返回空消息或。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 458

Socket描述符选项[SOL_SOCKET]

Socket描述符选项[SOL_SOCKET]  #include      int setsockopt( int socket, int level, int option_name,                         const void *option_value, size_t option_len); 

linuxerhqt的专栏 3万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++ socket编程基础二(三种Socket:TCP,UDP,原始Socket)

一、基于TCP(面向连接)的的Socket   1、服务器端   创建套接字 SOCKET socket( int af, //参数af指定通信发生的区域:AF_UNIX、AF_INET、AF_NS等,而DOS、 WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族与协议族相同。 int type, //参数type 描述要建立的套接字的类型。这里分三种:TCP

蚂蚁的坚持 6143

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

网络协议之:socket协议详解之Socket和Stream Socket

文章目录简介Socket是什么Stream Socket使用socat创建一个TCP服务器使用ss检查TCP连接使用nc连接socket总结 简介 不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。 Socket是什么 socket的中文翻译是套接字,个人觉的这个翻译真的是太差劲了,套接字听起来毫无意

程序那些事 9029

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

socket介绍

Socket: socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务 1、网络中进程之间如何通信? TCP/IP协议族来处理,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“

许嵩不爱吃土豆的博客 2890

Socket原理和Socket函数

Socket的概念 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。如下图: 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen)...

梓栋DREM 3340

Socket

 1         前言 在一些常用的编程技术中,Socket网络编程可以说是最简单的一种。而且Socket编程需要的基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是大部分都是基于Socket开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极大程度的简化开发,而事实上如果你没有一点Socket基础,要理解和应用这些技术还是很困难的,而且会让

生活要精彩 1129

关于socket的各种错误码

1、INVALID_SOCKET : 表示该 socket fd 无效。如 accept(2) 或 socket(2) 等在创建socketfd时: int m_socket = socket(AF_INET, SOCK_STREAM, 0); if (m_socket == INVALID_SOCKET){ printf("socket failed, err_code=%d\n", _G...

u014694510的博客 2万+

【底层机制】【Socket】本地Socket VS 普通 Socket?Zygote为什么使用本地Socket?

本地Socket是为同一台机器上的进程间通信量身定制的解决方案,而普通Socket是为跨网络通信设计的。在Android系统内部通信这种特定场景下,本地Socket在性能、安全和简洁性方面都具有绝对优势

沐怡旸的专栏 1116
上一篇: 判断一个数是2的整数次幂
下一篇: Java IO 深入理解
minGW_Lee
博客等级 码龄11年 19粉丝 69原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值