欢迎光临
我们一直在努力

应用层HTTP、安全层TLS与网络底层协议介绍

文章目录

一、应用层

1.请求行

1.1直接访问源站时:

1.2代理时:

1.2.1URL编码

1.2.1.1原因

1.2.1.2方式

编码位置

2.请求头header

2.1Host

2.2Content-Type

2.2.1JSON

2.3Content-Length

2.4User-Agent

2.5Refer

2.6Cookie

2.6.1受控的JS

2.6.2站点

2.6.2.1Cookie数据

2.6.2.1.1格式

2.6.2.1.2内容

2.6.2.1.3创建

2.6.2.1.4位置

2.6.2.1.5过期

2.6.3登录

3.空行

4.请求体body

位置数据

消息边界

1.应用层

2.传输层

二、安全层

1.传输加密

三、传输层+网络层

1.目的IP+目的端口

2.IP管多端口

四、链路层


一、应用层

规定 请求/响应消息 长什么样

协议

HTTP

HTTP请求 = 请求行 + 请求头 + 请求体

1.请求行

1.1直接访问源站时:

methoud /path ?query scheme/version

请求行使用path+query 告诉服务器 询问内部资源的参数


1.2代理时:

methoud URL scheme/version                  ↓                  scheme: //目的ip :目的port /path ?query

请求行使用完整URL 告诉服务器:

  • 外出要去的目标ip+端口 进行打通隧道 建立新连接
  • 访问外面服务器的内部资源参数
  • 1.2.1URL编码

    URL编码处理字符串 怎样合法地放进URL

    1.2.1.1原因

    (1)URL语法里本来就有意义的保留字符 想作为普通数据内容出现时

    保留字符

    : / # [ ] @ ! $ & ' ( ) * + , ; =  
     ? 路径和query的分隔符
    & query参数之间的分隔符
    = query中 键和值的分隔符
    / 路径分段符
    # fragment开始符
    : scheme:与host:port中 有特殊意义

    (2)URL的标准字符集外的 不合法或不安全的字符 不允许直接原样出现在URL中:

    • 空格
    • 非ASCII字符(中文)
    • 换行
    • 制表符
    • 控制字符
    • 特殊符号

    1.2.1.2方式

    百分号编码

  • UTF-8字符编码 把字符对应数字
  • 数字用十六进制表示
  • 数字的每个字节前加%

  • 编码位置
    位置部分方式
    URL pathqueryfragment 百分号编码
    HTML 文本、属性值 实体转义
    JOSN body 反斜杠转义

    2.请求头header

    2.1Host

    Host: host(目的IP:目的端口)

    请求到达目标服务器目标通信端点 往上的应用程序后,解密应用层的HTTP请求里的Host 区分服务器内部要去的 目标IP+端口的站点


    2.2Content-Type

    Content-Type: application/json

    表示请求的请求体body里的数据格式,提示接收方 如何解析body中的数据

    HTML页面内容 text/html 浏览器解析其中的标签 转换成界面显示
    CSS样式文件内容 text/css 浏览器解析其中的选择器和属性 应用到页面的样式上
    JS脚本文件内容 application/javascript 浏览器通过JS引擎 执行js中的逻辑
    JSON数据 application/json 浏览器不做处理
    图片 image.png 或 image.jpg 浏览器按照图片的二进制格式 解析并显示
    2.2.1JSON

    JSON(JavaScript Object Notation)是一种文本格式的数据表示方法

    能表示数据类型:

    • 对象object
    • 数组array
    • 字符串string
    • 数字number
    • 布尔值true/false
    • null

    用来在不同程序之间 交换结构化数据

    • 前后端传数据
    • 接口返回结果
    • 配置文件
    • 持久化结构化信息

    2.3Content-Length

    Content-Length: 35


    2.4User-Agent

    用户使用设备浏览器和操作系统信息


    2.5Refer

    当前页面的 跳转来源页的URL


    2.6Cookie

    2.6.1受控的JS

    浏览器里的JS 在安全沙箱下 受控地访问本地硬盘

  • 读取 用户手动选择的文件
  • 下载文件
  • 存储数据到 浏览器本地代存的站点

  • 2.6.2站点

    浏览器提供站点 代存数据在本地

    2.6.2.1Cookie数据

    Cookie是浏览器代网站 保存在本地站点键值对数据响应里发来保存 并在后续请求中自动带回

    2.6.2.1.1格式

    Cookie的格式 由浏览器遵守标准 规定的


    2.6.2.1.2内容

    Cookie的内容 是网站自定义的


    2.6.2.1.3创建
  • 服务器在响应头 通过Set-Cookie设置
  • 前端JS通过document.cookie设置

  • 2.6.2.1.4位置
  • 传输 Cookie在消息的header
  • 存储 Cookie在浏览器本地的站点

  • 2.6.2.1.5过期

    服务器指定Cookie的过期时间到后,浏览器会把它视为过期 删除不再发送


    2.6.3登录

    Cookie/Session 规定登录状态 怎么保存和识别

    客户端 1.用户提交用户名和密码

    服务器 2.验证通过 3.创建一个session会话 4.生成一个随机的sessionId 5.把sessionId->session保存在服务器端 6.把sessionId 通过Set-Cookie发给浏览器

    7.浏览器站点代存Cookie 后续请求自动带回sessionId

    8.服务器查询sessionId 使用对应存储的session数据


    3.空行

    表示头结束


    4.请求体body

    {"username" : "alice" , "password" : "123"}


    位置数据

    请求行、请求头 字符文本
    请求体 字符文本、二进制字节流
    再往下TCP、IP头 协议字段

    HTML/CSS/JS/JSON/图片 是内容格式,作为主要载荷时 通常放在请求体body里;也可作为普通字符串 出现在别处:

    • query里可放JSON字符串
    • header里可放文本片段
    • HTML响应body里可嵌CSS、JS

    消息边界

    1.应用层

    应用层HTTP协议有规定消息边界

  • HTTP消息 header的结束边界是一个空行
  • HTTP消息的bodyContent-Length判断结束
  • 2.传输层

    传输层TCP是字节流 没有规定消息边界

  • 一个HTTP请求可以被拆解到多个TCP包 发送
  • 多个HTTP请求可以被合并到较少的TCP包里 发送

  • 二、安全层

    规定HTTP消息 怎样加密传输

    协议 TLS/SSL

    把HTTP消息整体加密

    1.传输加密

    数据在一条TLS连接的两端之间路线上传输时 受保护加密;到达连接终止的端点上后 就能解密看到HTTP明文

    代理时:

  • 浏览器信任抓包代理安装的根证书 主动授权代理工具成可信TLS端点
  • 浏览器和代理建立TLS连接 往这段加密传输HTTP消息
  • 消息到达代理TLS端点后 能解密HTTP明文
  • 中间代理再建立TLS连接 把消息往剩段重新加密发真正服务器

  • 三、传输层+网络层

    规定数据包 怎么从这台机器送到那台机器

    传输层网络层协议

    通信标识

    TCP/UDP

    IP
    源端口、目的端口 源IP、目的IP

    1.目的IP+目的端口

    网络层IP头的目的IP传输层TCP/UDP头的目的端口 在互联网里找路 把包送到目标服务器的目标通信端点


    2.IP管多端口

    一台服务器一个IP里 可以托管很多网站的端口


    四、链路层

    协议 以太网/Wi-Fi
    通信标识 这一跳的MAC地址

    赞(0)
    未经允许不得转载:171主机测评 » 应用层HTTP、安全层TLS与网络底层协议介绍
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址