Socket与三次握手
2019-05-17 本文已影响5人
WaterYuan
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
总结:客户端的connect在三次握手的第二个次返回,而服务器端的accept在三次握手的第三次返回。
https://www.cnblogs.com/wangcq/p/3520400.html
Socket的使用类型主要有两种:
- 流套接字(streamsocket) :基于 TCP协议,采用 流的方式 提供可靠的字节流服务
- 数据报套接字(datagramsocket):基于 UDP协议,采用 数据报文 提供数据打包发送的服务
Socket 与 Http 对比
- Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题
- HTTP协议 属于 应用层,解决的是如何包装数据
由于二者不属于同一层面,所以本来是没有可比性的。但随着发展,默认的Http里封装了下面几层的使用,所以才会出现Socket & HTTP协议的对比:(主要是工作方式的不同):
Http:采用 请求—响应 方式。
demo Android:这是一份很详细的Socket使用攻略