新人向:简洁介绍学习HTTP协议

很多同学可能刚接触编程,停留在for while if的阶段,觉得自己学Java或者C++也可能是Python并不用学习HTTP知识,但实际上,在日常工作中,不管是学习什么语言,都是要落地的,所谓落地就是让你的for while if能用在具体的工作中。比如大家一开始都可能尝试编一个加减乘除的计算器,这就是语言的落地。那么在落地中很少有人能避开网络编程,网络编程就离不开计算机网络技术里繁杂的知识。但实际上计算机网络技术中,日常能接触的,或者新手们日常能接触的部分,其实并没有那么多。既然是新手,抓住问题的梗概,了解技术主线,就是必须的,而HTTP就是主线中的重点,基本上日常编程一定会涉及到网络编程,涉及到网络编程,就一定涉及到HTTP。所以我们通过这一篇文章,全面快速的了解HTTP有关技术和概念,以及他们落地的有关例子,让我们的知识点不死板,不空虚,少废话。

1.HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP协议工作于客户端-服务端架构为上。HTTP使用统一资源标识符
*(Uniform Resource Identifiers, URI**)来传输数据和建立连接。Web服务器根据接收到的请求后,向客户端发送响应信息。*

既然是新手向,那咱们就就要一个一个概念的解释,知道这三个概念的可以直接跳过去。
在HTTP协议简介中,有大概三个可能大家不理解的名词。

  1. TCP/IP通信协议,这里死记硬背的概念大家可以去百度,有很多,用简介明了的话解释就是,就是网络传输必须使用一套规则,如果规则不同,大家交流就很费劲所以HTTP规定了使用TCP/IP协议,至于为什么用TCP/IP这套规则而不用其他规则,大家可以搜TCP/UDP的区别,为什么HTTP使用TCP协议,什么是IP协议等等。
  2. 客户端-服务端,客户端服务端是我们很常见的术语,你想象一下如果你要去百度搜‘天气’,那么你向百度网站发送‘搜索天气’这条指令的时候,你就是客户端,而百度负责处理这条语句,那他就是服务端,说白了就是一个吃饭的,一个服务员。
  3. URI,很多同学可能平时经常听人说URL,但是为什么这次说的是URI呢?首先URI是用来建立链接和传输数据的,说白了就是咱们平时找东西的网址(这么说并非严格,但是有助于理解),但是这个网址又分两种形式,一种是URN、一种是URL,即URN和URL都是URI的子集,具体区分大家可以去百度。

2.关于URL

为什么要说URL呢,因为我们日常工作中,很少有用URN来建立连接和传输数据的,所以我们在这里主要讲URL,有同学说URL有什么好讲的,不就是一个地址吗?这就是我刚才说为什么URL说成网址不够准确的原因,因为他除了网址还传输了很多内容。
在这里插入图片描述
转自:https://blog.csdn.net/jijianshuai/article/details/76144943(下面的简介也参考了这篇文章)
大家看图可以看出来,除了咱们日常的网址比如www.baidu.com,他还包含了其他东西。咱们一个一个部分介绍。

  1. 协议
    指定使用的传输协议,如:http、https、ftp,https可以理解为http的安全版,ftp是用来传输文件的协议,更多协议大家可以边用便了解。

  2. 登录信息
    指用户名和密码作为从服务器端获取资源时必要的登录信息,日常http很少用,但是ftp服务这里通常是必须的。。

  3. 服务器地址
    可以是域名www.baidu.com,也可以是ip:14.215.177.39,这部分才是真正的网址。

  4. 服务器端口
    可选,指定服务器连接的网络端口。所谓端口就是不管访问网站还是FTP还是数据库,往往一个服务器的IP是固定的,但是比如我输入ip14.215.177.39,在浏览器中默认访问80端口,就进入了他的HTTP网站,如果访问21端口,就可能进入这个服务器的FTP。

  5. 文件路径
    指定服务器上的路径来定位指定的资源,简单地说,就是我访问了你的首页,那你的更多页面本地可能在子文件夹,那么文件路径就可以访问到子文件夹的文件。

  6. 参数:
    用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,举个例子,如果你在百度搜索:CSDN,那么百度首页会帮你连接一个新的网址,www.baidu.com/?搜索内容=CSDN(这是个伪网址便于理解),那么百度的服务器就可以通过这个网址知道了你的搜索内容是CSDN,然后再去处理。

  7. 片段:
    片段用于指定网络资源中的片断。html页面中片段则是描点。比如在论坛里你点返回一楼,浏览器迅速跳转到一楼,这就是片段的作用。

3.HTTP主要特点

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

这里可以理解成快餐店和定制餐厅的区别,快餐店就汉堡、饮料、薯条三种零食,作用是解饿、解渴、解馋,所以点餐效率很高只有123三个选项,而定制餐馆问你的口味、数量、煎炒烹炸你喜欢哪种,所以每次沟通时间很长。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

反面例子SSH协议就只能够传输文本

3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

还是点菜,如果你想吃汉堡又不知道能不能吃饱,你就点一个汉堡,然后去吃,这时候别人就可以点他的菜,如果你吃完了还想吃一个那就再回来点,而不是边吃边在点餐这里等着要不要再点下一个占用资源

4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

我和朋友出去吃饭 不需要每次报上姓名 联系方式 等 朋友就知道我是谁 这是有状态的
而我去办事大厅 工作人员不会记得我是谁 每次去都要填表 出示身份证 这就是无状态的

5、支持B/S及C/S模式。

B/S,浏览器对服务端,C/S,客户端对服务端,比如baidu.com,既可以从浏览器里进入,又可以从百度手机客户端进入。

4.HTTP的作用

说了这么多,那么HTTP到底是干嘛的呢?
其实很简单,就是当你想访问一个网站时,通过网址/IP等URI,发送返回网页请求,那么服务器端会把网页返回过来,然后在你的电脑上翻译呈现出你想看到的画面。这就是HTTP的作用。

5.HTTP的请求Request

既然知道了HTTP的作用,那咱们从头开始,还是以baidu为例,当你想要访问百度的时候,你用浏览器打开了baidu.com这个网址,这时候你的电脑就会向百度发送一个请求Request,它包含一些信息比如请求方法、请求主体等。
很明显,你只知道你打开了百度,这些东西你没看到,你也不知道是啥玩意,这就是HTTP的作用,他替你传输并翻译这个请求。
把这些东西提交给百度以后,百度才知道你想干什么,才能回复给你重要的内容

6.回应Response

当年发送了一个request给你想去的服务器的时候,服务器不能不理你,就算不理你,也要给你回复一个拒绝你的消息,这个消息就是Response。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
他们分别告诉你,
1.回复的状态如何,就是搭理你不搭理你一会再搭理你等信息状态
2.服务器的一些附加信息 比如编码类型 日期时间
3.空行 用于隔断消息报头和正文
4.就是正文了 也就是你想看到的“网页”

7.状态码

刚才提到,你给服务器发请求,服务器会给你一个回复,其中最主要的内容就是状态码,因为他表示你这个请求之后的状态。就好像你给女神表白,成功、不成功、当备胎等等还是要有个回应的,躲不过去的。
下面是一些常见状态码

200 OK                        //客户端请求成功
400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                 //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error     //服务器发生不可预期的错误
503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

我们常说的404错误就来源于此啦。

8.流程

到此,我们已经基本总结了HTTP的工作流程。其实很简单:

本地输入IP或者网址(网址会被DNS服务器解析成IP)—和服务器建立连接—发送请求—服务器内部处理—服务器发送响应—断开连接—浏览器解释内容

其中比较重要的部分在上文都有基本的解析,但是其内部的原理讲三天也讲不完。其实学习计算机就是这样,很简单的东西,先掌握总的方法,再去扣细节的实现原理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值