HTTP

OSI 七层模型指什么 (难度***)


应用层 ……………….计算机:应用程序,如FTP,SMTP,HTTP

表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码

会话层 ……………….计算机:建立会话,SESSION认证、断点续传

传输层 ……………….计算机:进程和端口

网络层…………………网络:路由器,防火墙、多层交换机

数据链路层 ………..网络:网卡,网桥,交换机

物理层…………………网络:中继器,集线器、网线、HUB

HTTP 的工作原理是什么? (难度***)

  1. 客户端和服务器建立连接,此时HTTP开始运作;
  • 客户端向服务器发送一个请求,这个请求包括URL、协议版本号、相关信息;
  • 服务器根据请求返回相关信息;
  • 浏览器进行解析和渲染,将请求页面直观的展现出来。

URI 的格式是什么?常见的协议有哪些 (难度***)

  • 格式
    • 方案,也就是我们常说的协议
    • 服务器位置
    • 资源路径

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>

  • 对于web页面来说最常用的协议就是http和https
  • user和password现在不常见了,不会在URL明文书写用户名和密码了,都是通过登录的方式
  • 主机可以是IPO地址过着域名
  • 端口号用来区分主机上的进程,方便找到web服务器,http默认是80
  • path是资源的路径,也就是存放位置,不一定和物理路径完全对应,符合web服务器路由约定即可
  • params,在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用;隔开
  • query:这个是get请求最常用的传递参数方式了 ?a=1&b=2&=3
  • hash也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能
  • 常见的协议类型有 file ftp http https ed2k mailto

HTTP 协议有几种和服务器交互的方法 (难度***)

  • get
    最常用的方法,通常用于请求服务器发送某个资源
  • post
    POST用于向服务器发送数据,通常用来支持HTML的表单(input、select、textarea),表单中的数据会被发送到服务器
  • head
    主要用于
  • 在不获取资源的情况下获取资源信息(类型、大小等)
  • 通过状态码产看资源是否存在
  • 通过查看首部,测试资源是否被修改了
  • put
    用于向服务器写入资源。出于安全性,需要看服务器是否支持。
  • trace
    客户端发送一个请求,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,每个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子
  • delete
    DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持
  • options
    OPTIONS方法用于请求 web服务器告知其支持的各种功能

状态码200,301, 304,403,404,500,503分别代表什么意思 (难度****)

状态代码 状态信息 含义
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user (缺少了后面的斜杠),有的服务器 返回301,有的则返回302。
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告 诉客户,原来缓冲的文档还可以继续使用。即使用缓存
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。

报文有哪几部分组成? (可选 难度****)

HTTP报文是简单的格式化数据块,由3个部分组成

  • 对报文进行描述的起始行 —— start line
  • 包含属性的首部块 —— header
  • 可选的包含数据的主体部分 —— body

起始行和首部就是由行分隔的ASCII文本,主体是一个可选的数据块,可能是文本、二进制或者空

请求头的格式和作用是什么?给个范例截图说明 (可选 难度****)

首部 描述
Client-IP 客户端IP
From 客户端邮件地址
Host 接收请求的服务器的主机名和端口号
Referer 提供了包含当前请求URI的文档的URL,告诉服务器自己来源
User—Agent 发起请求的客户端应用程序
Accept 告诉服务器能够发送那些媒体类型
Accept-Charset 告诉服务器能够发送那些字符集
Accept-Encoding 告诉服务器能够发送那些编码
Accept-Language 告诉服务器能够发送那些语言
Expect 允许客户端列出请求所要求的服务器行为
If-Match 如果ETag和文档当前ETag匹配,就获取文档
If-Modified-Since 除非在某个指定日期之后修改过,否则限制这个请求
If-None-Match 如果ETag和当前文档ETag不符合,获取资源
If-Range 允许对文档否个范围内的条件请求
If-Unmodified-Since 在某个指定日期之后没有修改过,否则现在请求
Cookie 客户端字符串

首部的格式和作用是什么?给个范例截图说明 (可选 难度****)

请求头部的格式是:<method><request-URL><version>,
响应头部的格式是:<version><status><reason-phrase>;


主体的作用是什么?给个范例(可选 截图说明难度****)

主体为被发送的数据。

简述浏览器缓存是如何控制的(可选 难度*****)

浏览器是否使用缓存、使用多久是由服务器控制的。当浏览器请求网页时,服务器端返回的http响应报文中,包含了有关缓存的关键信息。

关于缓存控制,主要有以下4种首部字段:

  • Cache-Control:控制缓存的行为;
  • Expires:资源失效的日期;
  • Last-Modified:资源最终修改的时间;
  • ETag:实体标识,对资源以字符串形式做唯一性标识的方式,当资源更新时,ETag也需要更新。

当通过Cache-Control或Expires设置页面使用缓存时,当用户刷新页面,浏览器会在请求报文中加入条件请求:If-Modified-SinceIf-None-Match。前者即浏览器最初得到的Last-Modified,后者即浏览器最初得到的ETag,当服务器发现资源的更新时间晚于If-Modified-Since,或在服务器端的资源当前ETag与If-None-Match不符时,服务器会响应整个资源,否则只会响应一个303 Not Modified 状态码(浏览器将从缓存中获取资源)。

https://www.renfei.org/blog/http-caching.html

下图各个参数是什么意思(可选 难度*****)


General:起始行,描述请求报文的基本信息
Request URL:表示请求资源的URL地址;
Request Method:表示发送请求报文的方式,为PUT方法;
Status Code:表示此时请求报文的状态码,为一切正常,成功连接;
Remote Address:表示请求服务器的主机地址和端口号;
Response Headers:响应报文
Connection:表示当前服务器和客户端的连接状态,为保持连接;
Content-Length:表示回应报文字符的长度,=12;
Content-Type:表示响应信息发送的方式;
Date:表示生成响应报文的时间;
Server:表示服务器应用程序及其版本号,使用的是nginx的1.6.2版本;
X-Powered-By:表示访问网站的应用程序是用Express开发的;
Request Headers:请求报文的头部信息,用来描述请求报文的属性块
Accept:告诉服务器客户端接收哪些类型的响应,此处为所有;
Accept-Encoding:客户端接收哪种编码方式,为gzip,deflate,sdch;
Accept-Language:客户端接收什么语言,为中文简体;
Connection:表示当前服务器和客户端的连接状态,为保持连接,这个属性是通用头部;
Content-Length:表示请求报文字符的长度,=56;
Content-Type:表示请求信息发送的方式,为POST方法;
Cookie:缓存资源;
Host:表示请求服务器的主机地址和端口号,此处地址为note.ruoyu.site;
Origin:表示请求服务器的源地址;
Referer:告诉服务器发送请求的来源;
User-Agent:指客户端发送请求的应用程序及其版本号;
X-Requsted-With:表示发送请求报文的应用程序是以XMLHTTPRequest的形式发送的数据。
Form Data:上传的文件信息
article:表示是若愚@饥人谷相关信息

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

推荐阅读更多精彩内容