iOS Socket编程(三)Socket与HTTP的区别

iOS Socket编程(一)基本概念
iOS Socket编程(二)TCP三次握手,四次挥手
iOS Socket编程(三)Socket与HTTP的区别
iOS Socket编程(四) Socket具体使用

HTTP连接

HTTP是一个超文本传输协议, 全名叫做Hyper Text Transfer Protocol, 是Web互联网的基础, 也是我们手机联网常用的协议之一, 顺便说说, HTTP协议是建立在TCP协议之上的一种应用.
用过HTTP请求的都知道, HTTP最显著的一个特点就是客户端每次发送的网络请求都需要服务端的响应, 在请求结束后, 会主动的关闭连接.

由于建立连接到关闭连接是一次性连接, 所以HTTP/HTTPS会被称为短连接, 如果要保持长期在线的话, 需要不停的像服务器发送请求, 如果服务器长时间没有接收到客户端的请求, 就会认为客户端下线了, 反过来, 如果客户端长时间没有接收到服务器的响应, 则认为网络断开.

在HTTP 1.0中, 客户端的每次请求都要求建立一次单独的连接, 在处理完本次请求后, 就自动释放连接. 而HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行, 不需要等待一个请求结束后再发送下一个请求, 现在最新的HTTP 2.0是兼容HTTP 1.1的, 虽然说是新版, 但我个人感觉好像是优化版本, 只是提高了Web的性能.

HTTPS连接

HTTPS全名叫做Hyper Text Transfer Protocol over Secure Socket Layer, 是HTTP的安全版本, 主要是在HTTP加了一层SSL, 所以加密的时候就要用到SSL加密.

HTTPS存在于HTTP与TCP之间, HTTP是以明文发送的, 不提供任何方式的数据加密, 所以非常容易受到攻击, 因为HTTP协议不方便用来传输敏感信息, 但HTTPS比较麻烦, 因为需要去申请一个CA证书.

HTTP和HTTPS的区别:

  • HTTP是超文本传输协议, 信息是明文传输, HTTPS则是具有安全性的SSL加密传输协议.

  • HTTP和HTTPS使用的是完全不同的连接方式, 用的端口也不一样, 前者是80, 后者是443.

  • HTTP的连接很简单, 是无状态的, HTTPS协议是由HTTP + SSL协议构建的可进行加密传输、身份认证的网络协议.

Socket与HTTP的区别

虽然说Socket和HTTP都是基于TCP, 但通常情况下Socket连接就是TCP连接, 一旦建立了Socket连接, 双方就可以相互发送数据, 直到双方连接断开为止.

但在实际应用中,客户端到服务器之间的通信防火墙默认会关闭长时间处于非活跃状态的连接, 从而而导致Socket连接断连,因此需要通过轮询告诉网络,该Socket连接处于活跃状态。

而HTTP刚刚也说了, 它的连接方式是请求 -> 响应, 不仅要在请求的时候需要先建立好连接, 而且需要客户端向服务器发送请求后, 服务器才能回复数据.

你可能感兴趣的:(iOS Socket编程(三)Socket与HTTP的区别)