当前位置: 首页 > news >正文

计算机网络基础:这是一份详细 HTTP 学习指南

计算机网络基础:这是一份详细 HTTP 学习指南

前言

  • 关于计算机网络,HTTP网络通信协议在任何的开发工作中都非常重要
  • 今天,我将献上一份HTTP的学习指南,希望你们会喜欢

目录

示意图


1. 储备知识

讲解HTPP协议前,先了解一些基础的计算机网络相关知识

1.1 计算机网络体系结构

  • 定义 
    计算机网络的各层 + 其协议的集合

  • 作用 
    定义该计算机网络的所能完成的功能

  • 结构介绍 
    计算机网络体系结构分为3种:OSI体系结构、TCP / IP体系结构、五层体系结构

    • OSI体系结构:概念清楚 & 理念完整,但复杂 & 不实用
    • TCP / IP体系结构:含了一系列构成互联网基础的网络协议,是Internet的核心协议 & 被广泛应用于局域网 和 广域网
    • 五层体系结构:融合了OSI 与 TCP / IP的体系结构,目的是为了学习 & 讲解计算机原理

示意图

  • TCP / IP的体系结构详细介绍 
    由于 TCP / IP体系结构较为广泛,故主要讲解 
    示意图

1.2 HTTP 协议通信的基础模型

  • HTTP协议传输信息的基础:TCP/IP协议模型 
    示意图

  • HTTP协议 属于 最高层的应用层


2. 简介

下面,将简单介绍一下 HTTP

示意图


3. 工作方式

  • HTTP协议采用 请求 / 响应 的工作方式
  • 具体工作流程如下:

示意图


4. HTTP报文详解

  • HTTP在 应用层 交互数据的方式 = 报文
  • HTTP的报文分为:请求报文 & 响应报文 
    分别用于 发送请求 & 响应请求时
  • 下面,将详细介绍这2种报文

4.1 请求报文

4.1.1 报文结构

  • HTTP的请求报文由 请求行、请求头 & 请求体 组成,如下图

示意图

  • 下面,将详细介绍每个组成部分

4.1.2 结构详细介绍

组成1:请求行
  • 作用 
    声明 请求方法 、主机域名、资源路径 & 协议版本

  • 结构 
    请求行的组成 = 请求方法 + 请求路径 + 协议版本

    注:空格不能省

请求行的组成

  • 组成介绍

示意图

此处特意说明GET、PSOT方法的区别:

示意图

  • 示例 
    设:请求报文采用GET方法、 URL地址 = http://www.tsinghua.edu.cn/chn/yxsz/index.htm;、HTTP1.1版本

则 请求行是:GET /chn/yxsz/index.htm HTTP/1.1

组成2:请求头
  • 作用:声明 客户端、服务器 / 报文的部分信息
  • 使用方式:采用”header(字段名):value(值)“的方式
  • 常用请求头 
    1. 请求和响应报文的通用Header

请求和响应报文的通用Header

2. 常见请求Header

常见请求Header

  • 举例: 
    (URL地址:http://www.tsinghua.edu.cn/chn/yxsz/index.htm) 
    Host:www.tsinghua.edu.cn (表示主机域名) 
    User - Agent:Mozilla/5.0 (表示用户代理是使用Netscape浏览器)
组成3:请求体
  • 作用:存放 需发送给服务器的数据信息

    可选部分,如 GET请求就无请求数据

  • 使用方式:共3种

示意图

至此,关于请求报文的请求行、请求头、请求体 均讲解完毕。

4.1.3 总结

  • 关于 请求报文的总结如下

示意图

  • 请求报文示例

示意图

4.2 HTTP响应报文

4.2.1 报文结构

  • HTTP的响应报文包括:状态行、响应头 & 响应体

示意图

  • 其中,响应头、响应体 与请求报文的请求头、请求体类似
  • 这2种报文最大的不同在于 状态行 & 请求行

下面,将详细介绍每个组成部分

4.2.2 结构详细介绍

组成1:状态行

  • 作用 
    声明 协议版本,状态码,状态码描述
  • 组成 
    状态行有协议版本、状态码 &状态信息组成 

    其中,空格不能省


状态行组成
  • 具体介绍 
    示意图

  • 状态行 示例 
    HTTP/1.1 202 Accepted(接受)、HTTP/1.1 404 Not Found(找不到)

组成2:响应头

  • 作用:声明客户端、服务器 / 报文的部分信息
  • 使用方式:采用”header(字段名):value(值)“的方式
  • 常用请求头 
    1. 请求和响应报文的通用Header

请求和响应报文的通用Header

2. 常见响应Header

常见响应Header

组成3:响应体

  • 作用:存放需返回给客户端的数据信息
  • 使用方式:和请求体是一致的,同样分为:任意类型的数据交换格式、键值对形式和分部分形式

示意图

4.2.3 响应报文 总结

示意图

4.3 总结

下面,简单总结两种报文结构 
示意图


5. 额外知识

下面将讲解一些关于HTTP的额外知识:

  • HTTP1.1 与 HTTP1.0 的区别
  • HTTP 与 HTTPS的区别
  • HTTP 处理长连接的方式

5.1 HTTP1.1 与 HTTP1.0的区别

Http1.1 比 Http1.0 多了以下优点:


  • 引入持久连接,即 在同一个TCP的连接中可传送多个HTTP请求 & 响应
  • 多个请求 & 响应可同时进行、可重叠
  • 引入更加多的请求头 & 响应头 

如 与身份认证、状态管理 & Cache缓存等机制相关的、HTTP1.0host字段

5.2 HTTP 与HTTPS的区别

示意图

5.3 HTTP处理长连接的方式

示意图


6. 总结

  • 本文全面总结了HTTP的基础知识
  • 接下来我会介绍继续Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记

帮顶 / 评论请点赞!因为你们的鼓励是我写作的最大动力!

原文地址 https://blog.csdn.net/carson_ho/article/details/82106781

相关文章:

  • 避免MySQL出现重复数据处理方法
  • 强如 Disruptor 也发生内存溢出?
  • tomcat介绍和安装
  • 为什么大部分码农做不了软件架构师?
  • WebSocket于HTTP 、WebSocket与Socket的区别
  • WPF中Binding使用StringFormat格式化字符串方法
  • [四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式...
  • P2P
  • 深入学习Java虚拟机——虚拟机字节码执行引擎
  • Win7+Ubuntu11
  • Redis系列十:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
  • select默认样式修改
  • 共识指数榜单0904
  • 网络编程 --ftp01上传
  • Predicate
  • JavaScript-如何实现克隆(clone)函数
  • [译]Python中的类属性与实例属性的区别
  • Bytom交易说明(账户管理模式)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java超时控制的实现
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Kibana配置logstash,报表一体化
  • orm2 中文文档 3.1 模型属性
  • php中curl和soap方式请求服务超时问题
  • sublime配置文件
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 计算机在识别图像时“看到”了什么?
  • 聚类分析——Kmeans
  • 浏览器缓存机制分析
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • Nginx实现动静分离
  • 从如何停掉 Promise 链说起
  • ​2020 年大前端技术趋势解读
  • ​ssh免密码登录设置及问题总结
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #if和#ifdef区别
  • $L^p$ 调和函数恒为零
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (42)STM32——LCD显示屏实验笔记
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ZT)出版业改革:该死的死,该生的生
  • (备忘)Java Map 遍历
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***通过什么方式***网吧
  • *Django中的Ajax 纯js的书写样式1
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .jks文件(JAVA KeyStore)
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题