简述 HTTP

首先我们必须要了解基本的知识,以及与 HTTP 相关的一些协议。

什么是协议:
计算机与网络设备相互想要通信,就必须要有一种规则,规定一系列的事情,比如谁先发起通信啊,用什么语言通信啊,怎么结束啊。万一你和我是不同的操作系统怎么办啊。
所以这个时候,协议就诞生了。

RFC:俗称互联网设计文档,制定 HTTP 协议的标准文档

1. TCP/IP协议族

我们要上网,就一定要用 TCP/IP 协议族,http 协议是它的子集。

一般可以认为互联网相关的协议都集合起来就是 TCP/IP 协议族。

TCP/IP 协议族重要的一点就是分层,那么为什么要分层呢?
天啦噜,如果不分层,互联网只有一个协议,那万一突然有一个小地方需要改动,怎么办啊,整体换掉吗?这个时候就体现出分层的好处了,只要把各层之间的接口部分规划好,你要修改哪,就直接替换掉相应的那层就好

具体的各层:

从上到下的四层,分别为
应用层(Application Layer)
传输层(Transport Layer)
网络层(Internet Layer)
连接层(Link Layer)

你可以这样理解:
最上面的应用层,顾名思义,是直接与用户打交道的一层,它的协议典型的有 http,FTP,DNS 等。

第二层传输层,提供处于网络连接中的两台计算机之间的数据传输,负责传送文本数据,主要协议是TCP协议,UDP协议;

第三层网络层,负责分配地址和传送二进制数据,主要协议是IP协议;

第四层连接层,负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等;

这个时候理所应当的举个栗子ಥ_ಥ

以 HTTP 举例子:
0:你在客户端发送一个'我要看B站啊啊啊'的请求;
1:这个请求理所应当的在应用层,然后从上到下的顺序,到了传输层;
2:传输层开始执行 TCP 协议,一看从应用层发过来的 http 请求,为了方便,它就把这个请求分割啊分割,打上标记号和端口号转发给了网络层;
3:网络层使用了 IP 协议,在 HTTP 协议上面增加了通信目的 Mac 地址,然后甩给了连接层;
4:连接层就默默的发送给了同在连接层 B 站的服务器

接下来就是服务器从连接层一路向上,到了应用层,才算真正的接受到了这个 HTTP 请求,然后它会问一下 B站 的数据库,有没有你要的这个页面的数据,有的话就开始按照刚刚的做法,又倒过来发给你。

IP 协议:负责传输
TCP 协议:负责安全,确保数据能够到达目标
DNS 服务:提供域名和 IP 地址相互之间的解析服务

说了这么多,肯定要说一下URL

URL:统一资源定位符,俗称网址

【协议+认证信息+@+网址+:+端口号】+带层次的文件路径+?+查询字符串+#+片段标志符

上面这个东西就是 URL

其中:
网址+:+端口号可以当做服务器
带层次的文件路径不一定是真的文件路径,还有可能是逻辑路径
片段标志符又名锚点,起到文档内定位的作用,注意锚点本身是不包含在请求里的
【】之间被包起来的是源,origin
通过 location.origin可以拿到源,但是这个 IE8 以下是不支持的

天啦鲁,扯的太远了,都要同源和跨域了。

回到 HTTP 请求
通过上面吧啦吧啦的一大堆,就可以知道HTTP 请求是用于客户端和服务端之间的通信

HTTP 请求既然通信,那么一定会发送信息吧,所以信息又分为以下四部分:

  1. 请求行
  2. 请求头
  3. 空行(就是一个回车)
  4. 消息体

GET 请求,消息体一般是空的,但是没有规定不能是有内容

举栗子:


栗子1

请求行就是第一行,三部分组成,第一部分是请求方法,第二部分是请求路径,第三部分是HTTP版本。
然后下面的第二行开始一直到回车之间,就是请求头,由 key:value 组成。
由于这里是 get 请求的,所以没有消息体

比如这个由 post 提交的请求

栗子2

它就有了最下面的消息体,并且在请求头中还多了一行:content-type,图片写了 content-type 是 json,消息体也就是 json,所以消息体和 content-type 一般是同时出现的

注意浏览器展示格式不是通过后缀,而是通过请求头里面写的 content-type 决定的

chrome 做了一些优化,可能与图片中看到的顺序不一样,但是不影响,只要点开 view source 就好。

HTTP 请求的方法:
实际上 HTTP 请求方法有很多,比如: PUT方法,DELETE方法,HEAD方法,CONNECT方法,TRACE方法,
但是最重要的还是 GET 和 POST 方法。

那么 GET 和 POST 的区别有什么呢?
ಥ_ಥ
简直坑啊!!这个区别弄得我脑袋疼。
首先,顾名思义,GET 用于获取资源(读资源),POST 用于更新资源(写资源)
其次,上面已经清清楚楚的举栗子了,get 没有消息体,而 post 有消息体,但是实际上 get 是可以有 body,但是没人用吧
第三,post 比 get 安全一些,但是实际上都差不多啦,只是 post 伪造起来麻烦一点点而已,真的只是一点点。

那么两种方法都用在哪呢?

get

  1. 输入一个 URL
  2. 引用的图片,CSS,js 之类的
  3. 用 jquery 的 $.get()

post

  1. form 表单提交
  2. jquery 的 $.post()

ಥ_ಥ敲了好多字,最后就写一个 cookie

首先 http 是无状态的协议,它不对之前的请求和响应做出管理。
那么问题来了,那么岂不是我每次新打开一个页面,我就要登陆一次?WTF?黑人问号.jpg
为了解决这个问题,引入了 cookie 技术,通过在请求和响应中写入 cookie 信息来控制客户端的状态。
只要客户端保存了 cookie,下一次客户端发送请求的时候,客户端会自动在请求头中加入 cookie 值,服务器由于第一次已经接受了 cookie,当再次收到请求的时候,会对比服务器上的记录,最后得到你就是刚刚的用户这种状态消息。

还有一个东西叫做 HTTP状态码
这个我只记得200是好的,响应成功,404就是错误之类,貌似还有很多,不记得额。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容