表情包说HTTP——(一)概览HTTP

博主也是小白,所以随时欢迎大家在评论中指出错误、交流意见✌

版本日期修改内容
1.02020-03-09完成文章第一版

1.前言

1.1.表情包说HTTP介绍

  • 最近系统学习了HTTP相关的知识,于是想要把所学的东西,结合理论与实践(我学的真的不是马克思主义),记录在博客中。其中穿插了各种自己原创的表情包。希望既能够加深大家所学,又能放松大家的心情。
  • 理论部分:首先概览HTTP的基本知识(也就是这篇文章的内容),随后着重介绍HTTP的报文首部,最后介绍一下HTTPS协议。
  • 实践部分:通过JAVA代码,使用大名鼎鼎的apache的HTTPClient包进行代码练习,并使用抓包观察发送与接收的请求报文。

1.2.概览HTTP介绍

  • 这篇文章主要对HTTP进行一个宏观的讲解,让各位看官老爷姑娘们对HTTP有个总体的了解。所以这篇文章不对深入地去讲解请求头中的字段。看完这篇文章之后,能够让大家在后续的详细学习中更得心应手,避免讲到一个点,都没有上下文环境做支撑。

1.3.学习HTTP的前置知识

  • 学习HTTP之前,你得先了解TCP/IP协议簇。
    • 什么叫了解呢?举个栗子,说一说TCP、UDP、IP、DNS协议是什么东西?能解决什么问题?他们大概的处理流程是怎么样的?
    • 如果你都能顺口答上来,或者悄悄百度回顾一下,然后背着答上来。这种程度就算是了解了。
  • 知道HTTP是用在什么地方的、作用是什么。对,没错,虽然是HTTP教程,但是俺不想告诉你HTTP是拿来干嘛的,那就太麻烦了(我可没说是因为我懒啊)。
    HTTP表情包
  • 知道HTTP的三个版本——1.0、1.1、2.0。目前最主流的还是HTTP/1.1。
  • 知道什么是URL、什么是URI。
  • 英语词汇量得有,毕竟HTTP不是天朝之物,里面的字段可都不是中文哦。能够认识那些字段都什么意思,有助于你更好地理解HTTP。
    废话不在多说,下面进入正题:

2.HTTP的基本特点

2.1.请求和响应成双成对

  • 一次HTTP请求发送给服务器,就必定会有一次HTTP响应返回给客户端
  • HTTP是单方面发起的,意思是只有发送了HTTP请求,才会有HTTP响应。你不吭声,她就不说话,你吭声了,她可能还404(像极了生气时的女朋友)。
    HTTP服务器

2.2.HTTP薄情寡义

  • HTTP协议本身是无状态的。服务器和客户端都是如此,不会保存之前一切的请求和响应报文。所以客户端和服务器通信时,对话是这样的:
    • 客户端:你刚刚说的啥?
    • 服务器:啊?我刚刚说的啥?
    • 旁白:像极了要分手的小情侣。薄情寡义!
  • 听起来很傻,但是这样设计肯定是有道理的。好处就是快!俗话说,天下武功唯快不破,无状态能够让HTTP在相同时间内处理更多的数据。
  • 这时候敦厚老实的客户端和服务器就不爽了,说自己想记录曾经的美好回忆。HTTP/1.1说:成,拿着这块记忆小饼干,你们就是HTTP中最靓的一对儿。于是服务器和客户端就拿着COOKIE来实现有状态通信了。

2.3.HTTP/1.1默认是持久的

看到这个标题,男人流下了眼泪

  • 首先说明的是,HTTP协议在传输层使用的是TCP协议。目的很简单,为了让通信更加稳定。
  • HTTP/1.0的时候,每进行一次HTTP请求和响应的传递,都会连接、释放一次TCP连接。爱TCP保护协会表示强烈谴责,毕竟通常要完成一件事情,请求和响应得来来回回很多次呀!你们这是让TCP比圣诞老人还忙活呢?
  • 于是在HTTP/1.1,他,持久了!只要任意一端没有明确说要释放TCP连接,则不会释放。期间可以传递无数次请求和响应。

3.HTTP报文

  • 报文是应用层的网络传输单元,位于应用层的HTTP协议也不例外。客户端发送至服务端的叫请求报文,服务端发送至客户端的叫响应报文。

3.1.HTTP报文结构

  • HTTP报文由报文首部、一个空行、报文主体构成。如果只关注HTTP协议的话,其灵魂就在报文首部中了,可以说HTTP中实现的各种骚操作,都是通过首部中的字段进行控制的。
    HTTP报文结构

3.2.报文首部

  • 因为报文首部是HTTP协议的核心,所以RFC对报文首部中的内容又进行了一下划分:
    在这里插入图片描述

3.2.1.请求行

  • 包括请求方法、URI和HTTP版本。
  • 请求方法是什么呢?其实大家并不陌生,比如每一名前端都写吐了的GET(获取资源)和POST(传输主体)。关于方法的详细内容,等详解HTTP首部的时候再说吧。
    GET和POST

3.2.2.状态行

  • 包括状态码、原因短语和HTTP版本。
  • 状态码表明了响应报文的各种状态。例如大家最熟悉的404(资源找不到啦),就是状态码的一种。状态码我们后面再详解。

3.2.3.首部字段

  • 首部字段十分庞杂,就不在这一章里面讲了,第二章专门来讲一讲首部字段。这里就先介绍一下这几种字段的作用:
    • 通用首部字段:请求和响应报文都可以使用的字段。例如Date,说明报文创建的日期。
    • 请求首部字段:请求报文用来补充说明请求、描述客户端信息的字段。例如Authorization,Web的认证信息。
    • 响应首部字段:响应报文用于补充说明响应的字段。例如Location,让客户端重定向到指定URI。
    • 实体首部字段:用于描述实体内容特点的字段。例如大家见得比较多的Content-Type。
    • 其他字段:还有一些RFC中没有定义的字段,就被放到了这里。例如大名鼎鼎的Cookie。

3.3.报文主体

  • 报文主体的具体内容其实并不是HTTP的重点。因为报文主体实在是太多了,而且大家其实都比较熟悉。比如HTML、XML等,都可以作为报文主体的内容。所以就不详细地说明了。
  • 如下代码就可以直接作为报文的主体:
<HTML>
	<p></p>
</HTML>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值