Socket的基本概念是顾客和服务端。 如果需要在两个APP应用程序之间进行套接字通信,则必须首先在两个APP应用程序之间建立套接字连接,发起呼叫连接请求的一侧为客户端,接收呼叫连接请求的一侧为服务器。 客户端和服务器端是相对的,相同的APP应用既可以是客户端,也可以是服务器端。
我知道网络中的进程通过套接字进行通信,但是什么是套接字呢?
首先,要明确套接字在网络模型中的位置,是APP应用层和传输层之间的桥梁
image回顾网络模型3:OSI七层网络模型3360
1.APP应用层。
2 .表示层。
3 .杩层。
4 .传输层。
5 .网络层。
6 .数据链路层
7 .物理层
TCP/IP层网络模型: APP应用层.传输层.网络层、网络接入层
HTTP协议3360属于APP应用层的面向对象协议(超文本传输协议),大多基于TCP连接方式,其特征是:
1 .客户/服务端模式支持
2 .简单快捷灵活
3 .客户端发送的每个请求都需要服务器回复,请求结束后主动释放连接,俗称“短连接”
TCP协议:传输控制协议提供连接、可靠的字节流服务,并提供超时重发、重复数据的丢弃、检查数据和流控制等功能。 在正式发送和接收数据之前,必须建立可靠的连接,即:次握手。
第一个握手:客户端将syn数据包(syn=j )发送到服务器,进入SYN_SEND状态并等待服务器确认。
第二次握手:服务器接收syn包,并需要确认客户的syn(ack=j1 )。 同时,自己也发送SYN ACK包,即syn包(syn=k )。 此时,服务器进入SYN_RECV状态。
第三次握手:客户端从服务器接收SYN ACK包,并向服务器发送确认包ack。 (ack=k1 )此包发送完成,客户端和服务器处于ESTABLISHED状态,第三次握手完成。
UDP协议:用户数据报协议用于不保证连接、可靠性的数据传输服务,由于没有超时重发等机制,所以传输速度快。
Socket:也称为套接字,APP应用程序通过套接字向网络发送请求或响应。 这是为TCP和UDP编程的接口,用于建立TCP/UDP连接。
套接字连接是一种所谓的长连接,理论上,一旦客户端和服务器建立了连接,HTTP协议“套接字连接”- -TCP连接关系:1.HTTP协议将封装或显示数据的特定格式定义为
2.Sockct连接提供网络通信能力;
3.TCP连接提供网络传输方法;
4 .套接字为纯c语言,跨平台
5.HTTP协议基于套接字,基础使用套接字
6 .创建套接字连接时,可以指定要使用的传输层协议(TCP或UDP )。 如果使用TCP协议进行连接,则此套接字连接为TCP连接。