TCP/IP、Http、Socket的区别

网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层web

 

对应到TCP/IP 属于网络层 ,http则是到应用层。编程

一、TCP/IP链接

 tcp/ip是在这三个中是最底层的链接协议,规定服务器和和客户端通信规则 :须要通过“三次握手”(TCP链接)json

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

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

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

握手过程当中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP链接一旦创建,在通讯双方中的任何一
方主动关闭链接以前,TCP
链接都将被一直保持下去。断开链接时服务器和客户端都可以主动发起断开TCP链接的请求,断开过程须要通过“四次握手”(过程就不细写了,就是服务器和客
户端交互,最终肯定断开).

 

二、http链接

  http: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议  网络协议服务器

 能够理解为http链接是以http为通讯协议的tcp链接,本省仍是一个tcp链接网络

 HTTP链接最显著的特色是客户端发送的每次请求都须要服务器回送响应,在请求结束后,会主动释放链接。从创建链接到关闭链接的过程称为“一次链接”socket

 顺便说说长链接和短链接的问题(webSocket)tcp

 tcp链接自己属性是不分长短的,是根据使用方式来决定的,举个例子:工具

 有一把不会损坏的刀(tcp链接),你砍一我的(请求一次)就扔了(断开链接)就叫一次性砍刀(短链接),砍多我的(请求屡次)扔了就叫屡次性砍刀(长链接),这把刀自己的属性并不包含长短,只是根据使用方法产生了不一样的叫法。性能

 http协议:能够理解为 和 json 同样,json只是传输中的数据的一种格式,将json数据放在http请求或者http响应的body,客户端js 和 服务端 规定了数据格式(json),天然清楚知道双方说的是什么了。spa


三、Socket
 socket 能够理解为编程开发人员(语言级别)可以在本身语言的工具库包中操做网络链接一个调用接口(API),其能够是tcp协议实现,也能够是UDP协议实现。

  什么状况下用socket 和http

       好比:视频,图片,断点续传的状况下要用socket

       http的协议的无状态性实现不了这个功能。

  http适用于常见的web业务系统,作比较复杂业务逻辑数据的传输(权限,以及其余)。至于怎样选择,仍是从实际的业务逻辑,性能,等因素出发。
相关文章
相关标签/搜索