• 理解HTTP、HTTPS、TCP、UDP与OSI七层模型:网络访问的基础


            在现代互联网中,HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是数据传输的核心协议,而TCP(传输控制协议)和UDP(用户数据报协议)则是实现这些协议的传输层协议。此外,OSI七层模型为网络通信提供了结构化的框架。

            今天我们将详细探讨这四个协议的特性、它们之间的关系,以及整个网络访问的原理,并介绍OSI七层模型。

    HTTP与HTTPS概述

    1. HTTP(超文本传输协议)

    • 定义:HTTP是一种无状态的应用层协议,主要用于在Web浏览器和服务器之间传输数据。
    • 特点
      • 明文传输:数据以未加密的形式传输,容易被第三方截获。
      • 无连接性:每个请求都是独立的,服务器不保留连接状态。
      • 请求-响应模型:客户端发起请求,服务器返回响应。

    2. HTTPS(安全超文本传输协议)

    • 定义:HTTPS是在HTTP上增加了SSL/TLS加密层,以提供更高的安全性。
    • 特点
      • 加密传输:通过SSL/TLS对数据进行加密,确保数据在传输过程中不被窃取或篡改。
      • 身份认证:使用数字证书验证服务器身份,防止中间人攻击。
      • 连接性:虽然建立连接时需要进行握手,但一旦建立,可以保持连接以减少延迟。

    TCP与UDP概述

    3. TCP(传输控制协议)

    • 定义:TCP是一种面向连接的协议,用于设备在互联网上进行可靠的数据通信。
    • 特点
      • 连接性:在发送数据之前,TCP使用三次握手建立连接。
      • 可靠性:通过确认应答、重传机制和序列号保证数据准确到达。
      • 有序性:确保数据包按发送顺序到达接收端。
      • 流量控制与拥塞控制:通过滑动窗口机制控制数据流量,并动态调整发送速率。

    4. UDP(用户数据报协议)

    • 定义:UDP是一种无连接的协议,适用于快速、简单的数据传输。
    • 特点
      • 无连接性:发送数据前不需要建立连接,减少延迟。
      • 不可靠性:不保证数据包的到达、顺序或完整性,丢包后不会重传。
      • 轻量级:头部开销小,仅为8字节,相比TCP的20字节更为高效。

    OSI七层模型

            OSI(开放系统互连)参考模型是一个标准化的网络通信框架,将网络通信过程分为七个层次。每一层都有其特定功能,并为上下层提供服务。以下是OSI七层模型的详细介绍:

     各层功能详解

    1. 应用层(Layer 7)
      • 提供用户直接交互的服务,如网页浏览(HTTP)、文件传输(FTP)等。
    2. 表示层(Layer 6)
      • 数据格式转换和加密解密,确保不同系统间的数据兼容性。
    3. 会话层(Layer 5)
      • 建立和管理会话连接,使得两台计算机能够进行有效沟通。
    4. 传输层(Layer 4)
      • 提供端到端的数据传送服务,使用TCP或UDP来保证数据完整性或快速传送。
    5. 网络层(Layer 3)
      • 管理数据包在网络中的路由和转发,确保信息从源头到达目的地。
    6. 数据链路层(Layer 2)
      • 在物理链路上提供可靠的数据帧传输,并处理错误检测与纠正。
    7. 物理层(Layer 1)
      • 实现比特流在物理媒介上的实际传送,包括电信号、光信号等。

    URL中的HTTP/HTTPS

    URL(统一资源定位符)是指向互联网资源的地址,其基本结构如下:

    scheme://username:password@hostname:port/path?query#fragment
    • scheme:指明使用的协议,如httphttps
    • hostname:服务器地址或域名。
    • port:指定端口号,HTTP默认使用80端口,HTTPS默认使用443端口。

            在URL中,http://https://指示了数据传输的方式。使用HTTPS时,数据会经过加密处理,从而提供更高的安全性。

    网络访问原理

    整个网络访问过程可以分为以下几个步骤:

    1. DNS解析

    当用户在浏览器中输入URL时,浏览器首先通过DNS(域名系统)查询相应的IP地址。这一步骤将用户友好的域名转换为计算机可识别的IP地址。

    2. 建立TCP连接

    使用TCP协议建立与目标服务器的连接。TCP连接通常使用80端口(HTTP)或443端口(HTTPS)。在此阶段,客户端和服务器之间进行三次握手,以确保可靠连接。

    3. 发送HTTP/HTTPS请求

    客户端向服务器发送HTTP或HTTPS请求包。对于HTTPS请求,还需进行SSL/TLS握手以建立安全连接。这个过程包括证书交换和会话密钥生成,以确保后续通信的安全性。

    4. 服务器处理请求

    服务器接收到请求后,处理并返回响应包。响应包包含状态行、头部信息和主体内容。对于HTTPS,响应内容也会经过加密。

    5. 关闭连接

    根据Connection头部字段的设置,决定是否关闭TCP连接。如果设置为Keep-Alive,则连接会保持一段时间以便处理后续请求;否则,连接将在完成后关闭。

    三次握手与四次挥手

    三次握手

    三次握手是建立TCP连接的过程,它确保客户端和服务器之间能够成功通信。具体步骤如下:

    1. 第一次握手
      • 客户端发送一个SYN(同步)报文段给服务器,请求建立连接。此报文中包含客户端的初始序列号(ISN),并将SYN标志位设置为1。
      • 状态转换:客户端从CLOSED状态变为SYN-SENT状态。
    2. 第二次握手
      • 服务器收到SYN报文后,回复一个SYN-ACK(同步-确认)报文段,表示同意建立连接。此报文中包含服务器的初始序列号,并将SYN和ACK标志位都设置为1,同时ACK字段设置为客户端ISN加1。
      • 状态转换:服务器从LISTEN状态变为SYN-RCVD状态。
    3. 第三次握手
      • 客户端收到SYN-ACK报文后,发送一个ACK(确认)报文段给服务器,表示连接已建立。此报文中ACK字段设置为服务器ISN加1。
      • 状态转换:客户端和服务器都进入ESTABLISHED状态,连接成功建立。

    这个过程确保双方都能确认彼此的存在,并且可以安全地开始数据传输。三次握手的设计目的是为了防止无效的连接请求和重传数据包引起的错误。

    四次挥手

    四次挥手是断开TCP连接的过程,它确保双方都能安全地关闭连接。具体步骤如下:

    1. 第一次挥手
      • 客户端发送一个FIN(结束)报文段给服务器,请求关闭连接。此时客户端进入FIN_WAIT_1状态,表示它不再发送数据,但仍然可以接收数据。
    2. 第二次挥手
      • 服务器收到FIN报文后,回复一个ACK报文段,确认收到关闭请求。此时服务器进入CLOSE_WAIT状态,表示它准备关闭连接,但仍然可以发送数据。
    3. 第三次挥手
      • 服务器完成所有数据传输后,发送一个FIN报文段给客户端,请求关闭连接。此时服务器进入LAST_ACK状态。
    4. 第四次挥手
      • 客户端收到FIN报文后,回复一个ACK报文段,确认关闭请求。此时客户端进入TIME_WAIT状态,以确保服务器收到ACK后再进入CLOSED状态。客户端在TIME_WAIT状态下会等待一段时间(通常是2MSL,即最大分段生命周期),以确保任何延迟到达的数据包不会影响后续连接。

    四次挥手的设计是为了保证全双工通信的可靠性,即每个方向都需要单独关闭,以确保所有未完成的数据都能被正确处理。

    这样听起来可能很抽象,为了更容易理解,我们可以用一个通俗的例子来解释这两个概念。

    三次握手:建立连接

    想象一下,你和朋友通过电话进行沟通。三次握手的过程就像你们确认彼此可以开始对话的步骤:

    1. 第一次握手
      • 你拨打了朋友的电话,发出“喂,你能听到我吗?”(发送SYN请求)。
      • 这时你处于“等待确认”的状态。
    2. 第二次握手
      • 你的朋友接到电话,回复说:“我听到你了,你也能听到我吗?”(发送SYN-ACK确认)。
      • 现在你们双方都确认了对方的存在。
    3. 第三次握手
      • 你回答:“我能听到你,我们开始聊天吧!”(发送ACK确认)。
      • 经过这三次确认,连接成功建立,你们可以开始交流。

    这种方式确保了双方都能够正常通信,避免了因网络延迟或失效请求导致的误解。

    四次挥手:断开连接

    当你和朋友结束通话时,四次挥手的过程就像是你们确认结束对话的步骤:

    1. 第一次挥手
      • 你说:“我要挂电话了。”(发送FIN请求)。
      • 这时你进入“等待对方确认”的状态。
    2. 第二次挥手
      • 你的朋友回复:“好的,我知道了。”(发送ACK确认)。
      • 你的朋友现在知道你要结束通话,但他可能还有话要说。
    3. 第三次挥手
      • 当你的朋友说完最后的话后,他也说:“我也要挂电话了。”(发送FIN请求)。
      • 这时他进入“等待你的确认”的状态。
    4. 第四次挥手
      • 你回复:“好的,再见!”(发送ACK确认)。
      • 此时,双方都确认了通话结束,连接完全断开。

    这个过程确保了双方都能够完成最后的数据传输,并且在关闭连接前互相确认,从而避免数据丢失或误解。

    总结

            HTTP和HTTPS是互联网通信中的重要协议,而TCP和UDP则是实现这些协议的数据传输基础。同时,OSI七层模型为理解网络通信提供了结构化框架。在选择使用哪种协议时,应根据具体应用需求来决定。在需要保护用户隐私和敏感信息时,应优先考虑HTTPS;而在追求速度和效率时,则可以选择UDP。理解这些基本概念,有助于我们更好地设计和开发网络应用,提高网络安全性与性能。

  • 相关阅读:
    1.4_7 Axure RP 9 for mac 高保真原型图 - 案例6 【旋转的唱片4】进度条_拖拽、点击
    SENet网络模型
    Avalonia中的布局
    【数学分析笔记】平均值不等式证明
    ARM系列 -- 虚拟化(一)
    使用select实现服务器并发
    Flink container exit 143 问题排查
    地下水、土壤、地质、环境人看过来
    前端项目部署
    Java_位运算符简述
  • 原文地址:https://blog.csdn.net/Broken_x/article/details/143302281