socket简介

简单理解Socket

socket是网络编程的一个概念,使用户更方便的使用底层的协议。

img

socket 其实就是一个五元组,可以标识一条可用的连接。

源IP, 源端口, 目的IP, 目的端口, 类型(TCP or UDP) 

比如[110.122.144.166:45678, tcp, 110.88.92.104:80] 
源IP为你的出口IP地址 110.122.144.166,源端口为随机端口45678
目的IP为百度的某一个负载均衡服务器IP 110.88.92.104,端口为HTTP标准的80端口。

使用socket进行通信的流程

img

  • 双方创建socket(每个 socket 被创建后,都会分配两个缓冲区,即输入缓冲区和输出缓冲区),其中服务端的socket需要绑定一个端口,一个进程最多可以创建1024个socket绑定这同一个端口(linux系统默认限制一个用户进程最多只能同时维持1024个文件描述符)。
  • 在这两个socket之间建立连接
  • 对socket使用send函数和recv函数来传输数据(send函数先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器,recv函数则是TCP协议先接受数据到缓冲区,然后再从缓冲区读取数据)

TCP套接字的I/O缓冲区示意图

  • 关闭连接
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unix Domain socket的优势主要体现在以下几个方面: 1. 性能优势:与TCP套接字相比,Unix Domain socket在同一台主机上的进程间通信更快速和高效。因为Unix Domain socket不依赖于网络协议栈,数据不需要通过网络传输,而是直接在内核中进行进程间通信,减少了网络协议栈的开销和数据拷贝的次数,从而提高了性能。\[2\] 2. API相似性:Unix Domain socket的API与TCP套接字非常相似,因此对于已经使用TCP套接字编写的代码,只需将地址从本地更改为Unix Domain socket的地址,就可以继续工作。这意味着可以很容易地编写同时支持Unix Domain socket和TCP套接字的代码,实现在单个主机上的进程间通信和远程IPC。\[1\] 3. 稳定性和可靠性:Unix Domain socket在同一主机上的进程间通信,不受网络的影响,因此更加稳定可靠。同时,Unix Domain socket使用文件作为通信的方式,具有较好的稳定性和可靠性。\[3\] 综上所述,Unix Domain socket具有性能优势、API相似性以及稳定性和可靠性等优点,适用于同一主机上的进程间通信。 #### 引用[.reference_title] - *1* *2* *3* [Unix Domain Socket简介](https://blog.csdn.net/kworkers/article/details/130118981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值