JAVA TCP/IP Socket详解

Socket与三次握手

2019-05-17  本文已影响5人  WaterYuan

Socket是在应用层和传输层之间的一个抽象层,它把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的使用类型主要有两种:

Socket 与 Http 对比

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


基于android的Socket通信

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

上一篇下一篇

猜你喜欢

热点阅读