美文网首页
Socket解惑

Socket解惑

作者: _清墨 | 来源:发表于2018-02-01 09:14 被阅读73次

    不少开发人员对Socket的概念不是很熟悉,这篇文章可带你快速了解socket(高手略过)。

    Socket又称"套接字”,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

    建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

    我们做应用程序开发的,使用模式通常为客户端与服务端通信,发出请求获得应答,这也与我们常使用的http类似,但相比之下:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

    对于Socket,实现网络通信还需要这些要素:
    *IP地址: (网络上主机设备的唯一标识)
    *端口号: (定位程序,有效端口:0-65535,其中0-1024由系统使用或者保留端口,开发中建议使用1024以上的端口)
    *传输协议: (常见TCP、UDP)

    TCP和UDP

    TCP(传输控制协议)

    建立连接,形成传输数据的通道
    在连接中进行大数据传输(数据大小不收限制)
    通过三次握手完成连接,是可靠协议,安全送达
    必须建立连接,效率会稍低

    UDP(用户数据报协议)

    将数据及源和目的封装成数据包中,不需要建立连接
    每个数据报的大小限制在64K之内
    因为无需连接,因此是不可靠协议
    不需要建立连接,速度快

    对于使用TCP/IP的Socket,不得不提到它的三次握手:
    1.客户端向服务器发送一个SYN J
    2.服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1
    3.客户端再想服务器发一个确认ACK K+1
    

    完成了三次握手,客户端与服务端就可以传送数据了。


    百度说的可能更好理解.png 整个Socket的通信流程如下: 流程图.png

    相关文章

      网友评论

          本文标题:Socket解惑

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