likes
comments
collection
share

http和websocket,唠一唠(二)

作者站长头像
站长
· 阅读数 11

这集多少有点难产了...

书接上回,咱们继续

上回书说到,初识http,及http相关的api,这回我们继续唠唠http请求中要经历哪些阶段

来,开整~

http通信工作流

  • 浏览器会先进行url解析,会判断输入的是一个合法的url还是一个待搜索的关键词

  • DNS,由DNS解析到指定的IP地址

  • http生成针对web服务器的http请求报文

  • 将http请求报文,分割成多份报文段,采用三次握手来确保准确送

三次握手

http和websocket,唠一唠(二)

名词解释:

SYN:(连接建立时用于同步序号SYN这个标志位只有在TCP建立连接才会被置为1,握手完成后SYN标志位被置为0)

seq:sequence number序列号(标记数据段的顺序,就是这个报文段中的第一个字节的数据编号)

ACK:acknowledgment Number(确认号,仅当ACK=1,确认号字段才有效。ACK=0,确认号无效)

ack:(期待收到对方下一个报文段的第一个数据字节的序号)

MSL:(最大报文生存时间)

FIN:(用来释放一个连接)

  • 第一次握手

  • 首先由client(客户端)向server(服务端)主动发送一个数据请求包,并将SYN(建立连接时的同步信号)置为1,seq置为0。

  • 第二次握手

  • server(服务端)接收到了来自client(客户端)的请求,通过SYN知道这是个建立连接的请求,然后响应了数据确认包并将SYN和ACK(值为seq + 1)状态都置为1。

  • 第三次握手

  •  server(服务端)收到了来自client(客户端)的响应包后确认ACK是否正确,正确后server向client发送一个数据包,数据中将SYN置为0,ACK置为1,并将ACK设置为y+1,表示收到了来自client的SYN。

 这样,client和server两个断端TCP建立起了三次握手的连接。

四次挥手

  • 第一次挥手

  • client想主动断开连接,则在数据发送完毕后,传递FIN信号给server。FIN和ACK均置为1,序号seq = x,ACK = z。

  • 第二次挥手

  • server收到client的FIN后,则响应ACK,告诉client可以断开。seq = ack,并将ACK = 1。

  • 第三次挥手

  • server主机做好连接关闭前的最后准备工作,再次发送FIN给client主机。此时server主机进入到半关闭的状态。因为client主机可能还有没发送完的数据,所以需要等server发送完数据再此发送一个FIN和ACK进行最后的确认,此时seq和ack是不变的,只是多了一个FIN来确认结束。

此时此刻,三次握手和四次挥手的过程全程结束,整tap的连接也结束了。

http的内容如此,主要是复习下,三次握手和四次挥手。各位有什么问题,或者发现什么问题,欢迎评论区讨论。