首页 > 其他分享 >http、https、tcp三次握手,四次挥手

http、https、tcp三次握手,四次挥手

时间:2023-11-13 15:44:06浏览次数:26  
标签:协议 HTTP tcp 发送 TCP https http 连接

HTTP、HTTPS和TCP介绍

  1. HTTP(超文本传输协议是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。是用于www浏览的一个协议。
  2. HTTPS(超文本传输安全协议) = HTTP + SSL/TSL(安全层),HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
  3. TCP(传输控制协议):是机器之间建立连接用的到的一个协议。

HTTP本身是一个协议,一般是基于TCP连接的。( HTTP/3 基于 UDP 协议)

HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。

http协议和https协议的区别

  传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同

传输信息安全性不同

1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

连接方式不同

1、http协议:http的连接很简单,是无状态的。
2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

端口不同

1、http协议:使用的端口是80。
2、https协议:使用的端口是443.

证书申请方式不同

1、http协议:免费申请。
2、https协议:需要到ca申请证书,一般免费证书很少,需要交费

HTTP(TCP)连接

三次握手

  1. 客户端发送SYN包到服务端,等待服务端确认;
  2. 服务端确认接收SYN包,并发送回来一个SYN+ACK包给客户端;
  3. 客户端确认接收,并向服务端发送确认包ACK,连接建立。

为什么是三次握手?

因为三次握手是保证client和server端均让对方知道自己具备发送和接收能力的最小次数:

  1. client–>server:server确认client具备发送能力
  2. server–>client:client确认服务端具备接收和发送能力
  3. client–>server:server确认client具备接收能力

为什么每次还要发送SYN或者ACK?

这是为了保证每一次的握手都是对上一次握手的应答,每次握手都会带一个标识 SEQ,后续的ACK都会对这个SEQ进行加一来进行确认。也就是保证每次的握手双方都是同一个”人”,而不是中途被替换了。

四次挥手

建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务器均可主动发起挥手动作。

(1) TCP客户端发送一个FIN报文,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个FIN报文,它发回一个ACK报文,确认序号为收到的序号加1。和SYN一样,一个FIN报文将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1.

为什么是四次挥手?

因为TCP是一个全双工协议,必须单独拆除每一条信道。4次挥手的目的是终止数据传输,并回收资源,此时两个端点两个方向的序列号已经没有了任何关系,必须等待两方向都没有数据传输时才能拆除虚链路,不像初始化时那么简单,发现SYN标志就初始化一个序列号并确认SYN的序列号。因此必须单独分别在一个方向上终止该方向的数据传输。

如果是三次挥手,会怎么样?三次的话,被动关闭端在收到FIN消息之后,需要同时回复ACK和Server端的FIN消息。如果Server端在该连接上面并没有Pending的消息要处理,那么是可以的,如果Server端还需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就不能满足条件。

 

标签:协议,HTTP,tcp,发送,TCP,https,http,连接
From: https://www.cnblogs.com/boye169/p/17829310.html

相关文章

  • 服务器Windows Server发布.NET Core项目出现HTTP错误500.19 - Internal Server Error[
    服务器WindowsServer发布.NETCore项目出现HTTP错误500.19-InternalServerError[错误代码:0x8007000d]经检查,发现是因为缺少【ASPNETCoreModuleV2】解决方案:到微软官方下载相应.net版本的HostingBundle  https://dotnet.microsoft.com/en-us/download/dotnet  下......
  • C# 下的HTTP断点续传
    在了解HTTP断点续传的原理之前,让我们先来了解一下HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种。请求协议是由客户机(浏览器)向服务器(WEBSERVER)提交请求时发送报文的协议。回复协议是由服务器(webserver),向客户机(浏览器)回复报文时的协议。请求和回复协议都由......
  • Delphi TNetHTTPClient使用递归方式取所有分页数据
    DelphiTNetHTTPClient使用递归方式取所有分页数据   业务系统提供的一个查询数据接口,可以通过分页方式取得数据,如果一次性取得所有数据,将页大小增大即可,但如果数据太多怕会造成内存溢出。   综合考虑每次只取一个分页,分页数据不要太大,用递归方式来获取是比较合理的解......
  • TCP连接数计算
    最近有一些时间,想着把某些基础的东西整理下,毕竟地基很重要,首先从计算机网络这部分入手。1、网络收发概览现在绝大部分的系统都是基于TCP协议的可靠传输,从数据的发送到接收的整个过程经历了很多环节,每一个环节也都有其各自的使命,通过大家的协同工作,最终将一个复杂的数据传输问题得以......
  • 查询window开启的服务及命令跟踪服务器计算机 TCP/IP 数据包
    一、要求在DOS窗口中使用一条命令查询服务器计算机查询该计算机开启了哪些服务实现过程:1)WIN+R调出命令提示框;2)输入DOS命令:netstart二、在服务器计算机上通过命令跟踪服务器计算机TCP/IP数据包从该计算机到赛场云服务器所通过的路径。实现过程:1)WIN+R调出命令提示框;2)输......
  • C# HTTP 断点续传
    在IIS中,磁盘路径对应的文件是可以直接下载的,而原生的IIS并不需要额外的配置就可以进行断点续传。而在小猪的项目中使用到的文件下载地址不对应磁盘路径的文件地址,而是需要验证用户是否有权限进行下载然后使用使用fileresult提供文件下载。这样整个下载过程都需要自己动手写代码完......
  • TCP客户端&服务端QT开发
    TCP客户端&服务端QT开发TCPClient1.Widget类写UI界面,创建socket对象Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);socket=newQTcpSocket;//创建socket对象}2.取消按键槽函数//直接关闭窗口即......
  • ??TCP协议:三次握手、四次挥手,你真的了解吗?
    什么是TCP网络分层应⽤层应用层是网络协议栈中的最顶层,主要负责应用程序之间的通信。其中一种常见的应用层协议是HTTP协议,它定义了应用程序之间如何传递报文。传输层传输层是为两台主机之间的应用进程提供端到端的逻辑通信的层级。其中一种常见的传输层协议是TCP协议,它负责可......
  • 在PHP中,HTTP_HOST和SERVER_NAME有什么区别?
    内容来自DOChttps://q.houxu6.top/?s=在PHP中,HTTP_HOST和SERVER_NAME有什么区别?以下是$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']在PHP中的区别?何时会考虑使用其中之一以及原因是什么?在PHP中,$_SERVER['HTTP_HOST']是从HTTP请求头获取的值,它是客户端实际用作请求的目......
  • Java中的HttpServletRequest
    Request:请求HttpServletRequest请求是获取请求行、请求头和请求体;可以通过这个方法设置防盗链,获取地址。牢记解决乱码的方式。怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此......