socket套接字

先来一个类比:

             两个人打电话

      ①任何用户在通话之前,首先要占有一部电话机,相当于申请一个 Socket 号;同时要知

道对方的电话号码,相当于对方有一个 Socket。

       ②然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)  。

       ③对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求), 拿起电话话筒,双方就可以正式通话,相当于连接成功。

       ④双方通话的过程,是向电话机发出信号和从电话机接受信号的过程,相当于向 Socket 发送数据和从 Socket 接受数据。

       ⑤通话结束后,一方挂起电话机,相当于关闭 Socket,撤消连接。


专业一点:

         socket   ——  电话机

              |

              |

      通信连接的端点

在Unix/Linux中,一切皆文件。那对于这两个操作系统而言,“端点”就是一个特殊的文件,也就是说Socket实际上就是文件

既然Socket是文件,那就可以用 open ——write/read——close 的操作文件流程。


socket与TCP\UDP

   socket 类比为电话座机,所以他是一个东西,它运用了TCP\UDP协议。


 对于一个Socket而言,它至少需要3个参数来指定:

  1)通信的目的地址;

  2)使用的传输层协议(如TCP、UDP);

  3)使用的端口号。


所以根据使用的协议不同,socket有以下分类:

        1)SOCK_STREAM:流式套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字。

  2)SOCK_DGRAM:数据报套接字,提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。UDP协议支持该套接字。

  3)SOCK_RAW:原始套接字。允许对低于传输层的协议或物理网络直接访问,例如可以接收和发送ICMP报文。常用于检测新的协议。

具体为啥TCP是流式,UDP是数据报式,参见上一篇文章。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值