简述http/https、tcp/ip、SSL/TLS介绍

  • HTTP/HTTPSTCPIP之间的区别主要体现在它们的作用层次、功能特点以及在网络通信中的角色。

一. 作用层次:

  1. HTTP/HTTPSHTTPHyper Text Transfer Protocol,超文本传输协议)和HTTPSHTTP Secure,安全超文本传输协议)都是应用层协议。HTTP主要用于在Web浏览器和服务器之间传输超文本数据,如网页内容。HTTPSHTTP的安全版本,通过SSL/TLS加密技术提供安全的通信。
  2. TCPTCPTransmission Control Protocol,传输控制协议)是传输层协议,它负责在网络中的计算机之间提供可靠的、面向连接的、基于字节流的通信服务。
  3. IPIPInternet Protocol,互联网协议)是网络层协议,它负责将数据分组(数据包)从源主机传输到目标主机。IP协议负责路由选择和数据的无连接传输。

二、功能特点:

  1. HTTP/HTTPS
    HTTP协议是无状态的,即服务器不会保存客户端之前的请求信息。
    HTTP协议使用请求-响应模型,客户端向服务器发送请求,服务器处理请求并返回响应。
    HTTPSHTTP的基础上增加了SSL/TLS加密技术,使得数据传输更加安全。
  2. TCP
    TCP协议是面向连接的,需要在通信之前建立连接,并在通信结束后关闭连接。
    TCP协议提供可靠的传输服务,通过确认机制、重传机制等确保数据的正确、完整和顺序传输。
    TCP协议提供流量控制和拥塞控制机制,以避免网络拥塞和数据丢失。
  3. IP:
    IP协议是无连接的,每个数据包都是独立传输的,没有建立持久的连接。
    IP协议提供数据包的路由选择和转发功能,通过IP地址实现数据包的传输。
    IP协议不提供数据的可靠传输服务,只负责将数据包从源主机传输到目标主机,不保证数据的完整性和顺序性。

三、角色和关系:

  1. HTTP/HTTPS协议依赖于TCP协议提供的底层网络传输功能,它们建立在TCP协议之上,利用TCP的可靠传输服务来传输网页内容。
  2. TCP协议又依赖于IP协议来确保数据包能够正确地路由到目标主机。IP协议负责将数据包从源主机传输到目标主机,而TCP协议则负责确保数据包在传输过程中的可靠性和顺序性。
  • HTTP/HTTPS是应用层协议,负责网页内容的传输;TCP是传输层协议,提供可靠的端到端通信服务;IP是网络层协议,负责数据包的路由选择和转发。

四、TCP协议(传输控制协议)

  1. 定义:TCPTransmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF[1](#1)RFC 793定义。
  2. 主要功能:
  • 提供可靠的通信服务TCP旨在适应支持多网络应用的分层协议层次结构,确保数据在不可靠的互联网络上能够可靠地端到端传输。
  • 数据分段与重组TCP将应用层发送的数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制),并在接收端重新组合成原始的数据流。
  • 流量控制TCP负责既要足够快地发送数据报,以便使用网络容量,但又不能引起网络拥塞。
  • 错误检测与重传TCP使用校验和函数来检验数据是否有错误,并在传输过程中使用确认(ACK)机制来确保数据包的按序接收。如果数据包在传输过程中丢失或损坏,TCP会负责重新传输。
  • 连接管理TCP通过三次握手建立连接,并通过四次挥手来关闭连接,确保数据传输的完整性和安全性。
  1. 特点:
  • 面向连接TCP在传输数据之前需要先建立连接。
  • 可靠传输:通过确认机制、重传机制等确保数据的可靠传输。
  • 流量控制:通过滑动窗口机制实现流量控制,防止发送方发送速率过快导致接收方来不及处理。
  • 拥塞控制:通过慢开始、拥塞避免、快重传、快恢复等算法实现拥塞控制,防止网络拥塞。

五、IP协议(互联网协议)

  1. 定义:IPInternet Protocol)是互联网协议,是一种网络层协议。它负责将数据包从源主机传输到目标主机,是整个互联网通信的基础。
  2. 主要功能:
  • 地址标识IP协议使用IP地址来唯一标识源主机和目标主机。IP地址是一个由32位二进制数字组成的唯一标识符(IPv4),或者由128位二进制数字组成(IPv6)。
  • 数据路由IP协议定义了数据包在网络中的路由方式。数据包从源主机发送出去后,会经过一系列的路由器,每个路由器根据数据包中的目标地址决定下一跳路由器,并将数据包转发给下一跳。
  • 分片与重组 :当数据包的大小超过网络的MTU[2](#2)时,IP协议负责将数据包分成多个较小的片段进行传输。当这些片段到达目标主机时,IP协议再根据片段中的信息将它们重新组合成原始的数据包。
  1. 特点:
  • 无连接IP协议是一种无连接协议,每个数据包都是独立发送的,没有建立持久的连接。
  • 灵活性与扩展性 :由于IP协议是无连接的,因此具有很好的灵活性和扩展性。但是这也带来了一些问题,如数据包的丢失和乱序问题。为了解决这些问题,传输层协议如TCPUDP被引入到IP协议之上。

六、SSL/TLS

  1. SSL/TLS(安全套接层/传输层安全)是一种用于网络通信的安全协议,它主要提供身份认证、数据机密性和完整性的保护。

  2. 定义与历史
    SSLSecure Sockets Layer)最初由Netscape公司在1994年提出,并经历了多个版本的更新,最终在1996年发布了SSL 3.0

    随后,互联网工程任务组(IETF)在SSL 3.0的基础上设计了TLSTransport Layer Security)协议,并在1999年发布了正式的行业标准RFC 2246

    SSL的所有版本现在都已被弃用,但人们仍然习惯使用SSL这个名称,实际上通常指的是TLS。

  3. 协议组成

  • 握手协议(Handshake Protocol :这是客户端和服务器建立SSL连接时首先执行的协议。它用于协商加密算法、MAC算法以及会话密钥,同时验证服务器的身份(可选双向身份验证)。
  • 记录协议(Record Protocol :该协议负责将应用层的数据分割成合适大小的块,并使用协商好的对称密钥进行加密,保证数据的机密性。此外,它还可以对数据进行压缩和添加基于密钥的消息认证码(MAC),以确保数据的完整性。
  • 警报协议(Alert Protocol) :用于处理在SSL/TLS通信中出现的问题。
  1. 工作原理
  • 建立连接:客户端与服务器开始一个新的安全会话时,首先执行握手过程。
  • 身份验证:握手过程中,服务器会发送其数字证书给客户端,客户端验证服务器的身份(可选双向身份验证)。
  • 密钥交换 :通过非对称加密算法(如RSADH/ECDH)协商出一个会话密钥,这个密钥仅在本次会话中有效,用于后续的对称加密通信。
  • 安全参数协商:客户端和服务器协商加密套件(包括加密算法、哈希函数、以及密钥长度等),确定具体的安全参数。
  • 数据传输:一旦握手完成,客户端和服务器就可以通过已协商的安全参数和密钥进行安全的数据传输。
  1. 应用场景
  • 网页浏览 :当访问以https://开头的网站时,就使用了SSL/TLS协议。
  • 电子邮件 :如GmailOutlook等电子邮件服务使用SSL/TLS来加密邮件的传输。
  • 在线支付 :如PayPalStripe等在线支付系统使用SSL/TLS来保护用户的信用卡信息和其他敏感财务数据。
  • VPN连接 :虚拟专用网络(VPN)通常使用SSL/TLS来加密客户端与服务器之间的通信。
  • API调用 :许多API使用SSL/TLS来保护客户端与服务器之间的通信。
  • 数据库连接:一些数据库系统,如MySQL和PostgreSQL,支持使用SSL/TLS来加密客户端与服务器之间的通信。
  1. 安全性
    SSL/TLS使用对称密钥和非对称密钥的组合来加密数据,并使用数字证书来验证通信双方的身份。此外,它还使用消息认证码(MAC)来保护通信数据的完整性。然而,尽管SSL/TLS具有较高的安全性,但仍需要注意版本、加密强度和证书信任链等安全问题。

  1. The Internet Engineering Task Force: 国际互联网工程任务组 ↩︎

  2. Maximum Transmission Unit: 最大传输单元 ↩︎

相关推荐
Pedantic1 小时前
SwiftUI 手势层级(Gesture Hierarchy)详解
前端
飘尘1 小时前
前端转型全栈(Java后端)的快速上手指引
前端·后端·全栈
一颗烂土豆2 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
浏览器工程师3 小时前
AI Agent 接浏览器任务,先别让它一路点到底
前端·后端
雨季mo浅忆3 小时前
VSCode自动格式化三要素
前端
爱勇宝3 小时前
深扒 Anthropic 1680 位工程师简历:应届生几乎没机会,AI 公司最缺的不是博士
前端·后端·程序员
kyriewen4 小时前
同事每天催我 Code Review,我写了个脚本让 AI 替我 review PR——现在他反过来催 AI 了
前端·javascript·ai编程
user20585561518136 小时前
Windows 项目安装时报 `node-sass` 错误,如何快速处理
前端
LiaCode6 小时前
Redis 在生产项目的使用
前端·后端