网络通信
一、网络分层:
1.物理层:提供信息传递的媒介,如同轴电线
2.数据链路层:负责建立、维持和释放数据连接,当接收点检测到所传数据中有错,则会通知发送失败重发一遍(对数据的识别)
3.网络层:当两个计算机之间出现若高数据链的时候,网络层的任务就是在若干的数据链路中间选择合适的链路确保数据的及时传送(选择合适的数据链路,确保数据的及时传送)
4.传输层:为两个终端建立,维护和取消数据连接的功能,负责可靠的传输数据(数据传输)
5.会话层:提供网络访问验证和会话管理,职责为建立和维护应用之间的通信机制(服务器的密码验证)
6.表示层:提供格式化的表示和转换数据的服务(json的功能)
7.应用层:负责确定进程之间的通信性质以满足用户需求以及提供网络与用户应用软件之间的接口服务(服务器与APP)
二、Socket——即套接字
套接字:两个IP地址的端口号组合称为套接字,用于表示客户端请求的服务器和服务
http协议:对应应用层
*tcp协议:对应传输层
*udp协议:对应传输层
ip协议:对应网络层
http协议是基于TCP\/IP连接的
TCP\/IP主要解决数据如何在网络中传输(进行链接)
HTTP协议主要解决如何包装数据(超文本传输协议,发起链接)
HTTP链接的特点是客户端发送的每次请求都需要服务端回送响应,在请求结束后主动释放当前连接
TCP连接 一经连接不会主动释放
TCP连接的三次握手(建立连接)和四次挥手(释放连接)
★三次握手
第一次:建立连接是,客户端A发送SYN包(SYN=j)到服务端B,并进入SYN_SEND状态,等待服务器B确认
第二次:服务器B接收到SYN包,必须确认客户端A的SYN,同时自己也发送一个SYN包,此时服务器进入SYN_RECV状态
第三次:客户端A收到服务端B发送的SYN包,同时向服务端B发送确认包,当此包发送完毕后,客户端与服务端正式建立TCP连接
——TCP建立的连接一般应用于可靠性较高的应用
四次挥手:
第一次:客户端A发送一个FIN,用来关闭客户端到服务端B的数据传送
第二次:服务端B收到一个FIN,服务端B需要返回一个ACK(一个确认包),确认收到客户端A的FIN
第三次:服务端B关闭与客户端A的连接,并发送一个FIN给客户端A
第四次:客户端A收到ACK确认包,本次结束后客户端与服务端断开连接
UDP作为传输协议,不需要建立任何连接直接发送数据(数据可靠性较低的消息,如过去的qq离线消息,可能存在发送未接收到消息),常用于数据可靠性较低的应用