Socket详解

作者: 独念白 | 来源:发表于2018-01-03 11:54 被阅读20次

说白了,Socket就是服务器跟客户端通讯用的。

网络间如何进行通信?

首先,在网络中,如何判断,“李白”是“李白”而不是“杜甫”呢?

在我们本机中,我们可以通过PID来标识一个唯一进程。

但是在网络中呢?网络并不能通过PID来判断。那网络通过什么呢?通过网络层的“IP”我们可以判断一个唯一的主机,然后通过传输层的“协议+端口号”我们可以判断此主机中的一个应用程序(进程)。

就目前而言,几乎所有的应用程序都是采用socket,而现在又是网络时代,网络中进程通信是无处不在,这就是我为什么说“一切皆socket”。

什么是Socket?

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read-->关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

Socket流程

第一阶段,连接阶段(三次握手)

connect在第二个握手阶段返回,accept在第三个阶段返回

第二阶段,读写阶段

万事具备只欠东风,至此服务器与客户已经建立好连接了。可以调用网络I/O进行读写操作了,即实现了网咯中不同进程之间的通信!网络I/O操作有下面几组:

read()/write()

recv()/send()

readv()/writev()

recvmsg()/sendmsg()

recvfrom()/sendto()

我推荐使用recvmsg()/sendmsg()函数,这两个函数是最通用的I/O函数,实际上可以把上面的其它函数都替换成这两个函数

第三阶段,关闭阶段(四次挥手)

相关文章

  • Socket详解(四)

    Socket详解(一)Socket详解(二)Socket详解(三) 前三篇文章已经分别介绍了传输层、网络层、网络接...

  • Socket详解(三)

    Socket详解(一) Socket详解(二) 前两篇文章已经分明介绍传输层与网络层;本篇文章介绍链路层。 介绍链...

  • Python高阶(四) - Socket编程

    [TOC] Python Socket 编程详解 Python 提供了两个基本的 socket 模块: Socke...

  • socket详解

    socket详解:https://blog.csdn.net/hdfqq188816190/article/det...

  • iOS知识点收集

    一、socket详解 http://www.coderyi.com/archives/429 二、autolayo...

  • Socket详解

    在客户端/服务器通信模式中,Socket是双方通信通道的抽象封装,用户可通过配置Socket的参数并构建Socke...

  • Socket详解

    说白了,Socket就是服务器跟客户端通讯用的。 网络间如何进行通信? 首先,在网络中,如何判断,“李白”是“李白...

  • Socket详解

    1、Socket(套接字)概念 网络上两个程序通过一个双向的通信连接实现数据的交换,这个连接的一段称为一个sock...

  • Socket详解

    前面两篇分析了TCP和UDP协议,本篇来分析一下Socket,有了前面的基础,对理解Socket有很大的帮助,同时...

  • socket详解

    什么是Socket? 什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一...

网友评论

    本文标题:Socket详解

    本文链接:https://www.haomeiwen.com/subject/pnlhnxtx.html