文章分享至个人我的技术博客: https://cainluo.github.io/14986613643920.htmlhtml
Socket
翻译过来中文称为套接字
, 这里我找到了一段比较官方的解释Socket
是什么东西:git
Socket
是通讯的基石,是支持TCP/IP
协议的网络通讯的基本操做单元,包含进行网络通讯必须的五种信息:链接使用的协议
,本地主机的IP地址
,本地进程的协议端口
,远地主机的IP地址
,远地进程的协议端口
。github
在实际当中, 确定是不止一个TCP/IP
或者是一个应用程序进程在传输数据, 为了能够区分开来, 系统提供了一套API
, 方便TCP/IP
与应用程序交互, 通常把这个称为Socket API
.服务器
酱紫应用层能够和传输层经过这个Socket API
, 区分来自不一样的应用程序进程或者是网络通讯, 使得数据能够并发传输.微信
Socket
的使用其实也没有咱们想象中那么难, 只是这里须要有一个前提条件, 由于创建Socket
通讯是至少须要一对套接字
, 其中一个是运行在咱们的客户端上, 称为Client Socket
, 还有一个是运行在服务器上, 称为Service Socket
.网络
Socket
之间的链接过程分为三个过程:并发
Socket
同时支持TCP
和UDP
两种传输协议, 啥意思呢?app
当Socket
使用TCP
协议通讯的时候, Socket
就是一个TCP
的链接, 那么若是Socket
使用的是UDP
协议通讯, 那么这时候的Socket
就是UDP
链接.翻译
若是要有图的话, 大概就这样了:3d
既然降到Socket
, 那么就要说说网络里面的协议, 这里就要普及一下网络里面的到底都有啥, 首先咱们要知道, 在网络里面一共有七层协议
.
从上往下分的话:
但咱们一般会把底下三层(网络层
, 数据链路层
, 物理层
)统称为媒体层
, 通常都是专门搞网络的网络工程师大神们研究的对象.
而上面四层(传输层
, 会话层
, 表示层
, 应用层
)被称为主机层
, 也是广大用户所面向和关心的内容.
说到协议, 咱们就不得不提一下HTTP
:
HTTP
协议: 它是对应着应用层
.TCP
协议: 它是对应着传输层
.IP
协议: 则对应着网络层
.而HTTP
协议是基于TCP
链接的, 因此三者根本就没啥可比性.
TCP/IP
协议: 属于传输层协议, 主要解决数据如何在网络中传输.HTTP
协议: 属于应用层, 主要解决如何包装数据.而Socket
是应用层
与TCP/IP
协议族通讯中间的软件抽象层, 是它的一组接口.
既然都提到了TCP/IP
这个协议, 那么就来说讲, TCP/IP
里的五层模型.
这里面的五层模型分别为:
那么咱们平常生活中所接触到的网络器材有哪些? 分别处于哪一个模型?
其中TCP/IP
的应用层
比较特殊, 它是包含了会话层
, 表达层
, 应用层
等功能, 这里要说一点, TCP/IP
协议并不能在传输层老是保证可靠的传输数据包, 但七层模型能够作到.
TCP/IP
还提供了另外一种传输模式, 叫作UDP(用户数据报协议)
, 但这种协议不能保证可靠的数据包传输.
这里再解释一下:
TCP
: 面向链接, 提供可靠的数据传输, 用于传输大量数据, 使用数据流模式, 速度慢, 创建链接时开销较大UDP
: 非面向链接, 传输不可靠, 用于传输少许的数据, 速度快总的来讲TCP
是一个数据流的模式协议, 而UDP
是一种数据报模式的协议.
刚刚说了Socket
是基于TCP/IP
协议上的抽象, 也就是说Socket
只是对TCP/IP
的封装, 自己是没有协议的, 只有经过Socket API
, 咱们才可以使用TCP/IP
协议.
大概的关系图就是酱紫吧:
这篇文章虽然不涉及任何的代码, 但都是一些必备的基础知识, 若是想更详细的了解或者是找更官方的文档, 能够去看看苹果爸爸提供的Networking Overview这篇文章.