Java Web开发之Http协议

学习Java Web首先要知道Web应用程序的请求过程,客户端与服务器之间是如何通信的,这样我们可以更加灵活的处理请求和响应的消息。

什么是HTTP协议?

HTTP是超文本传输协议(Hypertext Transfer Protocol),它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间的交换数据的过程。(HTTP所用的端口号80,HTTPS所用端口号是443

主要特点

  • 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。
  • 无连接:无连接的含义是限制每次只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态:HTTP是一个无状态的协议,无状态是指WEB浏览器和服务器之间不需要建立持久的联系。

HTTP工作原理

HTTP的工作流程:

1.客户端连接到web服务器

当我们在浏览器输入网址或者当我们点击链接时,HTTP开始工作。

2.发送HTTP请求

建立连接后,客户机发送一个请求给服务器,如当我们在浏览器地址栏输入Michaeljian.top 后回车,浏览器将我们的请求封装成HTTP报文。请求报文的格式:

  • 请求行
  • 请求头部
  • 空行
  • 请求数据

3.服务器接受请求并返回HTTP响应

Web服务器解析请求,定义请求资源。服务器将资源复本 写到TCP套接字中,有客户端读取。响应报文的格式:

  • 状态行
  • 响应头部
  • 空行
  • 响应数据

4.释放TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。

5.客户端浏览器解析HTML内容

客户端浏览器首先会解析状态行,查看请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

DNS域名解析

在浏览器地址栏输入URL,按下回车之后会经历以下流程:

  • 浏览器向DNS服务器请求解析该URL中的域名对应的IP地址;

  • 解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;

  • 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;

  • 服务器对浏览器请求做出响应,并把对应的HTML文本发送给浏览器;

  • 释放TCP连接;

  • 浏览器将该HTML文本并显示内容;

    image.png

HTTP协议版本以及区别

HTTP协议的版本:HTTP/1.0、HTTP/1.1、HTTP/2.0

  • 在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源
  • 在HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源
  • 在HTTP2.0协议中,
    • 新的二进制格式:HTTP1.x的解析是基于文本协议的格式 解析存在天然的缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二级制在不同,只有0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制的格式,实现方便且健壮。
    • 多路复用:即连接共享,每个request都是用作连接共享机制的。
    • header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
    • 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。

URI和URL的区别

URL是统一资源地位符(Uniform Resource Locator)。URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

http://michaeljian.top/

URI是统一资源标识符(Uniform Resource Identifier)。URI是个纯粹的语法结构,用于指定标识Web资源的字符串的各个部分。

例子:ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)

URN是统一资源名称(Uniform Resource Name)URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

img

HTTP之请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
image.png

请求行

请求行中个请求方式最常用的是GET和POST,用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

两种方式的主要区别:

  • 如果请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1 。在URL地址后附带的参数是有限制的

  • 如果请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

HTTP之响应消息Response

一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行、若干消息头、以及实体内容 。

image.png

HTTP之状态码

image.png

HTTP与HTTPS的区别

HTTP是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

HTTPS是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。

参考资料

http://mp.weixin.qq.com/s/9gT4VXHNCre5mQADYW8APA

https://www.cnblogs.com/ranyonsue/p/5984001.html

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

推荐阅读更多精彩内容

  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,328评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,203评论 3 82
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 八月 充满绿色和果香的季节 人来人往 或不期而遇 或匆匆离别 我深知打破安逸重新起航需要的无畏和果决 我也笃信恰到...
    wangzhe_阅读 148评论 0 0
  • 东方娃娃幼儿园【书香浸润童年,阅读点亮人生】为爱读书第27天,动物王国! 鸟类,哺乳类,还有昆虫。
    燕雨泉阅读 187评论 0 0