TCP/IP四层模型,如下图所示。TCP是属于网络分层中的运输层(有的书也翻译为传输层),因为OSI分为7层,感觉太麻烦了,所以分为四层就好了,简略。

TCP连贯

建设起一个TCP连贯须要通过“三次握手”:
第一次连贯:客户端被动向服务端发送syn(syn=x)数据包,本人进入syn_send状态,期待服务端的响应。
第二次握手:服务端承受到了来自客户端的syn数据包,服务端向客户端发送ack(ack=x+1)和本人的syn(syn=y)数据包,本人进入到syn_recv状态。
第三次握手:客户端承受到来自服务端的ack和syn数据包,客户端再向服务端发送ack(ack=y+1)数据包,此包发送结束,客户端和服务器进入ESTABLISHED状态,实现三次握手。

TCP三次握手如图:

握手过程中传送的包里不蕴含数据,三次握手结束后,客户端与服务器才正式开始传送数据。现实状态下,TCP连贯一旦建设,在通信单方中的任何一方被动敞开连贯之前,TCP连贯都将被始终放弃上来。断开连接时服务器和客户端均能够被动发动断开TCP连贯的申请,断开过程须要通过“四次握手”(过程就不细写了,放到下一篇文章再做具体阐明)

HTTP连贯

HTTP连贯最显著的特点是客户端发送的每次申请都须要服务器回送响应,在申请完结后,会被动开释连贯。从建设连贯到敞开连贯的过程称为“一次连贯”。

  1. 在HTTP 1.0中,客户端的每次申请都要求建设一次独自的连贯,在解决完本次申请后,就主动开释连贯。
  2. 在HTTP 1.1中则能够在一次连贯中解决多个申请,并且多个申请能够重叠进行,不须要期待一个申请完结后再发送下一个申请。

因为HTTP在每次申请完结后都会被动开释连贯,因而HTTP连贯是一种“短连贯”,要放弃客户端程序的在线状态,须要一直地向服务器发动连贯申请。通常的做法是即时不须要取得任何数据,客户端也放弃每隔一段固定的工夫向服务器发送一次“放弃连贯”的申请,服务器在收到该申请后对客户端进行回复,表明晓得客户端“在线”。若服务器长时间无奈收到客户端的申请,则认为客户端“下线”,若客户端长时间无奈收到服务器的回复,则认为网络曾经断开。