Socket底层原理

Socket两个基本概念:客户方和服务方。当两个应用之间需要采用SOCKET通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立SOCKET连接,发起呼叫连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。

我们已经知道网络中的进程是通过 socket 来通信的,那什么是 socket 呢?

首先明确Socket在网络模型中哪里:是应用层与传输层之间的桥梁

image回顾一下网络模型:OSI七层网络模型:

1.应用层.

2.表示层.

3.会话层.

4.传输层.

5.网络层.

6.数据链路层.

7.物理层

TCP/IP四层网络模型:应用层.传输层.网络层,网络接入层

HTTP协议:属于应用层面向对象的协议(超文本传输协议),常基于TCP连接方式,特点是:

1.支持客户/服务端模式

2.简单快捷灵活

3.客户端发送的每次请求都需要服务器回送响应,请求结束后主动释放连接,俗称”短连接”

TCP协议:传输控制协议,提供面向连接.可靠的字节流服务,提供超时重发,丢弃重复数据,检验数据,流量控制等功能。在正式收发数据前,必须建立可靠的连接,也即:三次握手.

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN (ack=j+1),同时自已也发送一个SYN 包(syn=k),即SYN+ ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

UDP协议:用户数据报协议,面向非连接,不保证可靠性的数据传输服务,没有超时重发等机制,故而传输速度很快.特点:它不与对方建立连接,而是直接就把数据包发送过去,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

Socket:又称”套接字”,应用程序通过”套接字”向网络发送请求或应答,它是一个针对TCP和UDP编程的接口,借助它建立TCP/UDP连接。

socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉HTTP协议一Socket连接- -TCP连接关系:1.HTTP协议提供了封装或者显示数据的具体形式;

2.Sockct连接提供了网络通信的能力;

3.TCP连接提供如何在网络中传输;

4.socket是纯C语言的,跨平台;

5.HTTP协议是基于socket的,底层使用的就是socket;

6.创建Socket连接时,可以指定使用的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

你可能感兴趣的:(Socket底层原理)