Socket与三次握手

作者: WaterYuan | 来源:发表于2019-05-17 15:22 被阅读5次

    Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。


    • TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
    • UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。

    Socket是什么呢?
    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

    Socket抽象层

    connect()之后就向服务器发送了一个连接请求。服务器监听到这个请求之后,就会调用accept()函数取接收请求,纠正下图,即服务端的accept()在客户端connect()之后被调用
    https://www.cnblogs.com/wangcq/p/3520400.html

    服务端的accept()在客户端connect()之后 socket中发送的TCP三次握手.png

    总结:客户端的connect在三次握手的第二个次返回,而服务器端的accept在三次握手的第三次返回。
    https://www.cnblogs.com/wangcq/p/3520400.html

    socket中发送的TCP四次握手.png

    Socket通信原理


    Socket的使用类型主要有两种:

    • 流套接字(streamsocket) :基于 TCP协议,采用 流的方式 提供可靠的字节流服务
    • 数据报套接字(datagramsocket):基于 UDP协议,采用 数据报文 提供数据打包发送的服务

    Socket 与 Http 对比

    • Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题
    • HTTP协议 属于 应用层,解决的是如何包装数据

    由于二者不属于同一层面,所以本来是没有可比性的。但随着发展,默认的Http里封装了下面几层的使用,所以才会出现Socket & HTTP协议的对比:(主要是工作方式的不同):
    Http:采用 请求—响应 方式。
    demo Android:这是一份很详细的Socket使用攻略


    基于android的Socket通信

    github上的一个异步socket库,对一些业务场景做了支持

    相关文章

      网友评论

        本文标题:Socket与三次握手

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