http和socket

Posted zxking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http和socket相关的知识,希望对你有一定的参考价值。

 

要弄明白 http socket 首先要熟悉网络七层

技术分享图片

 

HTTP 协议:超文本传输协议,对应于应用层,用于如何封装数据.

TCP/UDP 协议:传输控制协议,对应于传输层,主要解决数据在网络中的传输。

IP 协议:对应于网络层,同样解决数据在网络中的传输

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议

 

 

HTTP 协议

http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。

HTTP连接使用的是"请求-响应"方式,不仅在请求时建立连接,而且客户端向服务器端请求后,服务器才返回数据。

 

Socket 连接

要想明白 Socket,必须要理解 TCP 连接。

TCP 三次握手:

第一次握手:客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中并不传输数据,在握手后服务器与客户端才开始传输数据,理想状态下,TCP 连接一旦建立,在通讯双方中的任何一方主动断开连接之前 TCP 连接会一直保持下去。

创建 Socket 连接的时候,可以指定传输层协议,可以是 TCP 或者 UDP,当用 TCP 连接,该Socket就是个TCP连接,反之。

 

 

Socket适用场景:网络游戏,银行交互,支付。

http适用场景:公司OA服务,互联网服务。

 



以上是关于http和socket的主要内容,如果未能解决你的问题,请参考以下文章

分布式理论,架构设计Socket和IO模型

winsock请求http

asio 简单的http测试例子

Socket Socket.io Websocket HTTP 之间的区别

winsock 实现HTTP GET/POST

android做一个简单上传文件的功能,socket连接问题