HTTP那些事

前言

很久没碰网络这部分,所以一直感觉很生疏,最近买了本《图解HTTP》,花了几天时间看完了。通俗易懂,读起来非常快。读完后将一些比较重要的HTTP知识整理记录一下。本文将很多地方省略了,并不是因为其不重要。其中主要有两类,其一省略了基础记忆性的知识,比如报文首部字段的解释等;其二省略了一些东西的深入详解,比如HTTPS怎样从多方面保证安全性等,因为这些要解释清楚的话得花大量篇幅,而且要画很多图进行图解。时间有限,写得比较简单。什么时候想深入复习了,再翻翻书就行了。再次推荐《图解HTTP》,看完应该对HTTP会了解得差不多,如果想深入学习那就再买《HTTP权威指南》,这本我也买了,块头太大,暂时搁置。


HTTP是什么?

HTTP(HyperText Transfer Protocol,超文本传输协议)。它是用于客户端和服务器之间通信的协议。
所谓协议,就是为达成某种目的而建立的约定。我们把互联网相关的各类协议族总称为TCP/IP。我们先来了解一下协议族。

——TCP/IP的分层管理——

TCP/IP协议族按层次分为4层:应用层、传输层、网络层、数据链路层。
协议族为什么要分层?可以说它和代码里的解耦思想是类似的。(从广义上来讲,人类社会生活中的社会分工行为也有解耦、提高效率的等作用...)
** 应用层:应用层决定了向用户提供应用服务时通信的活动。FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name System,域名系统),及HTTP协议均属于应用层协议。
** 传输层:
传输层提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。
** 网络层:数据包在网络中从一台计算机到达目的计算机要转经多台计算机或者网络设备。而网络层的作用就是选择规划出一条传输路线。
** 数据链路层:
用来处理连接网络的硬件部分。

** DNS:**域名解析系统,顾名思义,它提供域名到IP地址之间的解析服务。人习惯使用具有语义域名来访问某台计算机,但计算机作为极其更擅长处理数字形式的IP地址来指代计算机,因此在它们两者之间必须存在转换工作,这边是域名系统DNS干的事。
TCP:TCP位于传输层,提供可靠地字节流服务,“字节流服务”指为传输方便,它将大块数据分割为多个数据包进行管理。“可靠的”指为了确认数据是否最终送到对方而采用了著名的三次握手策略。

我们了解了协议族的知识后,现在我们来梳理一下一个普通的通信过程:
首先客户端想访问服务器的某个资源,比如说http://hackr.jp/xss/Web页面,要想访问服务器,计算机擅长处理的是IP地址,所以要先在应用层启动DNS服务,把域名hackr.jp转换为IP地址20x.189.105.112。紧接着,根绝HTTP协议,针对客户端的要求,生成HTTP请求报文;然后建立TCP连接,将请求报文分割成报文段分别可靠地传输给对方;而在传往服务器的历程里,转经多台计算机,一边中转一边传送,直到服务器。** 到达服务器后进行和客户端发出数据时相逆的动作。**


HTTP报文的结构

关于HTTP的报文结构,只要清楚它的大概结构,理解它的原理性的东西就行了。一些字句的解释这些都是需要记忆的基础知识,网上有很多资料可查,在此不赘述了。需要时上网查阅,或者翻阅翻阅书籍就行了。

除了需要掌握HTTP报文的大体结构外,也去区分几种常见请求方法(GET/POST/HEAD/PUT/DELETE等)。还要清楚在响应报文中一些状态码代表的含义(2xx:成功、3xx:重新向、4xx:客户端问题、5xx:服务器端问题)。另外,还要清楚一些报文首部字段的含义,有些很重要,决定了该HTTP请求的功能性质。


几个比较重要的问题

———— HTTP是不保存状态的协议————
HTTP协议是“无状态协议”,即不保存状态的协议,它是无记忆的,每次请求和响应后都是不保留信息的。但在实际应用中,保存用户状态却又是实实在在存在的需求,所以我们引进了Cookie技术用于保存用户信息,保持状态。
Cookie会根据从服务器发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端在往该服务器发送请求时客户端会自动在请求报文中加入Cookie值后发送出去。服务器发现客户端发送过来的Cookie值后,回去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,得到其状态信息。

———— ** 持久连接,节省通信量————
在HTTP的初始版本里,每进行一次HTTP通信就要断开一次TCP连接。这在以文本传输为主的当年,是没问题的。但是现在资源类型越来繁多。当要加载一个复杂Web时,既有文档又有图片,那得是多个请求,即多个HTTP通信。若进行一次HTTP通信便断开一次TCP连接的话,那加载一个如此Web,得多次断开多次重连TCP,给服务器造成了不必要的巨大开销。所以就有了“
持久连接**”,只要没有一端明确提出要断开连接,则保持TCP连接状态。HTTP/1.1默认是持久连接。

————** 管线化 ** ————
一般来说,客户端发送请求后需等待收到响应后,才能发送下一个请求。管线化技术就是使客户端不用等待响应亦可直接发送下一个请求。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。

————** HTTP的缺点,及HTTPS的出现**————
HTTP十分优秀,但也有不足的一面,例举如下:

  • (1)通信使用明文(不加密),内容可能会被窃听。
  • (2)不验证通信方的身份,因此有可能遭遇伪装。
  • (3)无法证明报文的完整性,所以有可能已遭篡改。

为了防止被窃听,我们需要使用加密技术。方案1是对通信加密,建立安全的通信线路,进行安全的通信。HTTP本身没有加密机制,可以通过和SSLTLS组合使用来完成安全通信。方案2是对协议传输的内容本身进行加密,客户端将请求报文加密后再发送,服务器收到请求后先对报文进行解密,再进行处理。

HTTP协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。有可能客户端的请求到达的是伪装的服务器,也有可能从服务器返回的响应返回给了伪装的客户端。并且除此外,即使是无意义的请求也会赵丹全收,无法阻止海量请求下的Dos攻击。此时,我们使用了“证书”来解决此问题。SSL不仅提供加密处理,还有证书机制。该“证书”有可靠的第三方认证机制颁发,用以证明客户端和服务器实际存在的问题。客户端请求服务器前先确认服务器的证书,判断该服务器是否是正确的服务器。同时,客户端持有证书,用于完成其身份的确认。

HTTP无法证明通信的报文完整性,它无法保证在客户端发出请求时的报文和服务器接收到的报文是否一致,是否在中途被篡改(中间人攻击)。若真的已被篡改,另一端是感受不到的。

HTTPS的必要性:###

正是因为HTTP存在以上不足,所以诞生了更完美的通信协议HTTPS。HTTPS是身披SSL外壳的HTTP。总之,HTTPS更安全。

** HTTPS = HTTP + 通信加密 + 证书 + 完整性保护 **

更多详情:HTTPS与SSL(一)

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

推荐阅读更多精彩内容