美文网首页
HTTP 的连接和断开

HTTP 的连接和断开

作者: Bel李玉 | 来源:发表于2019-11-27 00:44 被阅读0次

http连接

在开发中我们进行网络请求,我们大部分情况都是使用的是http连接,但http是怎样建立起连接的呢,通过下图我们看下连接的过程! 图1.jpeg
  • 1.客户端向服务器发送一个通信的请求 发出一个seq:j
  • 2.服务器接受这个请求,向服务器发送 ack = j + 1,并同时 服务器向客户端发送一个新的seq:k
  • 3.客户端将服务器发送过来的seq +1 即 k+1 发送到服务器。

这样就完成了http连接的3次握手操作。
我们可以通过wireShark抓包工具来获取http三次握手的整个过程

WireShark抓包验证

首先打开WireShark,选择 Loopback 过滤条件

图2.png
然后分别打开2个终端来,分别输入
nc -l 6060
Snip20191127_8.png
nc 127.0.0.1 6060
Snip20191127_9.png
这样我们就建立了一个http连接,通过WireShark抓包我们可以看到
Snip20191127_10.png
    1. A -> B [SYN] Seq = 87759268
  • 2 B->A [SYN,ACK] ACK = 87759269,Seq = 1242099438

  • 3, A->B [ACK] ACK = 1242099439
    这样即完成连接时的3次握手

http断开

我们看下http断开时的四次挥手的整个过程


图3.jpg

我们关闭其中一个终端即可断开http连接,利用WireShark来抓取整个过程


Snip20191127_12.png
从抓包数据我们可知
  • 1.客户端向服务器发送 [FIN,ACK] Seq = 1242099446,ACK = 87759269
  • 2.服务端将 客户端发送的 Seq + 1 作为ACK 即 ACK =Seq + 1,同时将ACK作为Seq发送到客户端即 [ ACK] Seq = 87759269,ACK = 1242099447发送到客户端
  • 3.服务器接着向客户端发送消息[FIN,ACK] Seq = 87759269,ACK = 1242099447,此次报文内容和第二次的FIN和ACK值相同。
    1. 客户端将服务器端 发来的Seq + 1 作为ACK值,发送给服务器:[ACK] ACK = 87759270
      这样就完成了http连接的断开

为什么要进行3次握手和4次挥手

个人理解,在进行http连接时,客户端首先向服务器端发送连接的通信,然后服务器立即同意了对方通信的要求,因为此时还没有连接,服务器端没有未处理完的事务,可以即刻向对方发出通信的请求,最后等待客户端的同意。在http断开时,客户端向服务器端发出close请求,然后,服务器端同意客户端发出的close请求,因为服务器端可能还没处理完 移动端上次请求的事务,不能立即发出close请求,需要等到处理完成后再向客户端发出close请求。再服务器器处理完之后,向移动端发出close请求,最后移动端同意服务器端发出的close请求。

相关文章

  • HTTP 的连接和断开

    http连接 1.客户端向服务器发送一个通信的请求 发出一个seq:j 2.服务器接受这个请求,向服务器发送 ac...

  • http、socket、webservice、service、t

    http通过socket实现长连接和短连接,http短连接请求是发起请求获得返回数据后断开socket。socke...

  • 关于TCP连接的一些知识点

    连接断开:Http 1.0默认会在请求结束后自动断开TCP连接,Http 1.1之后默认在请求头中添加了keep-...

  • 【网络协议】HTTP 重要知识点(二)

    1. HTTP 连接管理 1.1 短连接和长连接的区别 短连接:每次请求-响应,都需要建立和断开 TCP 连接,而...

  • 《趣谈网络协议》学习笔记 day04

    http1.1 http1.1 是基于tcp实现的应用层协议,所以请求需要建立连接,由于建立连接和断开连接的过程很...

  • Django Session

    Cookie & Session 由于HTTP协议的无状态性,每次连接结束后HTTP连接都会自动断开,因此每一个来...

  • HTTP连接

    HTTP 1.1 中,持久连接是默认的 可以通过发送 Connection: closed 来表示要断开连接 We...

  • socket编程

    http://c.biancheng.net/cpp/socket/三次握手建立连接四次握手断开连接close函数...

  • http keepalive

    在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使...

  • 短链接

    首先区分一下HTTP的长连接和短连接(注意中间的字不一样) 长连接: 数据传输完成了保持TCP连接不断开(不发RS...

网友评论

      本文标题:HTTP 的连接和断开

      本文链接:https://www.haomeiwen.com/subject/cyduwctx.html