套接字(socket)的简述

首先提一下OSI七层模型中的传输层,它提供了两种数据传输服务分别是 面向连接的可靠服务、面向无连接的不可靠服务。

类型遵循协议特点使用场景
面向连接的可靠服务TCP对传输质量要求较高、需要可靠的传输发送微信QQ消息、发送文件、账号登陆等等
面向无连接的不可靠服务UDP对实时性要求较高,或者说网络情况不佳的时候,对数据的准确性没有严格要求网络电话会议、网络视频

根据不同的使用场景,它们在数据传输的过程中都起到了关键性的作用。


什么是套接字?

说白了它就是网络间进行通信的方式的名称,行内人一般都称之为套接字通信。比如说HTTP协议,需要具体的编程去实现,或者现在我们做前后端分离项目的时候需要遵循RESTful协议,那么实现此协议的方法就是RESTful API。那么传输层的两种传输服务分别遵循了TCP、UDP协议,实现这两种协议的方法就是套接字
这种通信方式在Linux、Unix操作系统下有着很完美的支持,当然Windows也同样支持这种通信方式。Unix系统最初是依靠网络起家的,Linux操作系统在很多地方仿照了Unix系统也可以说在Unix的基础上发展而来的,所以它在网络上也是非常得强大。

套接字的诞生

上世纪六七十年代,美国有一个学校叫做BSD(加州大学伯克利分校)。早期的Unix诞生依赖也经历了一些风波,后来分成了两个版本,第一个版本是systemV,还有一个版本是加州伯克利分校开发出来的BST版本。所以说加州伯克利分校在Unix、Linux操作系统历史上有着很大的贡献,其次随着网络的流行,它们还研究出了一种非常方便的网络之间进行通信的方式,即套接字。通过这种方式实现事先规定的通信协议。

套接字在Linux操作系统下的演变

套接字后来在Linux操作系统下演变成了一种文件类型,名字叫做socket。比如说现在两个Linux操作系统A和B需要进行网络通信,A向B发了一条消息,此时这个消息实际上是写到了Linux操作系统下的socket文件当中,然后再从操作系统再去文件中读取发送的消息,实现了网络通信。(这个文件是一个临时的虚拟文件,用LS指令捕捉不到这个文件)

套接字目前逐渐演化为世界上最为通用化的网络通信方式,无论你使用的哪种编程语言或者什么样的操作系统,在网络通信的实现方式上都是用套接字来实现的。


套接字的分类

  • 流式套接字:表示使用TCP协议提供面向连接的传输服务
  • 数据包套接字:表示使用UDP协议提供的面向无连接的传输服务
  • 原始套接字 :一般用作底层协议测试(一般接触不到)

流式套接字在传输过程中是以字节流的形式就行数据传输,而数据包套接字是以消息结构体的方式(将消息打包,封装成了一个结构)来进行数据传输,总的来说不同的套接字不仅使用了不同的传输协议,而且它们传输数据的类型也不一样。

最后,如果通过编程的形式实现这几种套接字通信,就不贴代码了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值