HTTP、TCP、SOCKET三者之间区别和原理

7层网络模型

网络在世界范围内实现互联的标准框架
7层为理想模型,一般实际运用没有7层
详细内容

HTTP属于7层应用层

BSD socket属于5层会话层

TCP/IP属于4成传输层

TCP/IP协议

三次握手

HTTP、TCP、SOCKET三者之间区别和原理_第1张图片

笔者解析:

  1. 第一次握手:实现第一步需要客户端主动打开,服务器在监听,然后发送SYN=1 seq=x等待服务器确认
  2. 第二次握手:服务器监听到,返回确认信息:SYN=1 ask=x+1,以及发送seq=y和ACK=1等待客户端确认。
  3. 第三次握手:客户端返回确认信息:ACK=1 ask=y+1 seq=x+1。至此客户端与服务器连接上,可以进行数据传输。

四次挥手

HTTP、TCP、SOCKET三者之间区别和原理_第2张图片

笔者解析

  1. 第一次挥手:发送需确认的请求:FIN=1 seq=u
  2. 第二次挥手:发送接收到服务器请求的信息:ACK=1 seq=v 需确认的请求ack=u+1,然后等待服务器处理完信息,再进行第三次挥手确认才能完成服务器的确认。
  3. 第三次挥手:处理完信息,发送确认接收到请求FIN=1 ack=u+1,以及需要确认的请求ACK=1 和seq=w
  4. 第四次挥手:发送确认接收到请求的信息ACK=1和ask=w+1以及seq=u+1。至此服务器与客户端断开。

总结

客户端发送的需要确认的信息(请求)标志位:SYN和FIN
服务器发送的需要确认的信息(请求)标志位:ACK
两者在请求和确认时有标志数据seq和ask,两者通用:seq为请求携带的标志数据,ask为确认的标志数据,ask=上一个seq+1。

常见问题

如果建立了连接,但客户端出现故障:
服务器每收到一次客户端的请求后都会重新复位保活计时器,时间通常为两个小时,若两个小时还没收到客户端的任何信息、数据,服务器会发送一个探报文段,以后每隔75秒发一次,连发10个探测器报文仍没反应,服务器就认定客户端出了故障,接着就关闭连接。

SCOKET原理概念

socket是通信的基石,是支持TCP/IP协议的网络通讯的基本操作单元,工程师要进行TCP/IP连接通信时通过socket进行操作。
socket相当于TCP/IP或UDP的封装、调用接口

应用层HTTP协议:

Wab联网的基础,也是设计联网常用的协议之一。

SOCKET和TCP/IP让工程师实现网络客户端和服务器的数据传输,但未约定协议,所以不能对数据进行翻译解码,数据不能转换为信息,在经过应用层HTTP后才能完成通讯。

HTTP连接最显著的特点是:客户端每次请求都需要服务器回送响应,在请求结束后,会主动释放连接,从建立连接到释放连接的过程称为“一次连接”,由于HTTP的“一次连接”特性,所以HTTP属于一种“短连接”,要保持客户端程序在线状态,需要不断向服务器发送连接请求,通常做法是即使不需要获取任何数据,客户端也保持一段时间向服务器发送一次“保持连接”的请求,服务器在接收到该请求后对客户端进行返回,表明知道客户端“在线”。若服务器长时间无法收到客户端请求,则认为客户端“下线”,若客户端长时间无法接收到服务器回复,则认为网络断开。

你可能感兴趣的:(linux学习,http,tcp/ip,网络协议)