HTTP

1. OSI 七层模型指什么?

  • 概念:OSI七层模型通过七个不同层次的结构模型,使不同系统不同网络能够进行可靠的通讯。因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。
  • 层次:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层:
    七层模型
  • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
  • 数据传输层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
  • 网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
  • 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
  • 会话层:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。
  • 表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密。
  • 应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。
  • 概括:简言之,下4层,主要完成通信子网的功能,而上3层,主要完成资源子网的功能。

参考OSI七层模型详解

2. HTTP 的工作原理是什么?

  • 对输入的地址进行解析,从中解析出协议名,主机名,端口号,对象路径等;
  • 封装HTTP请求报文;
  • 封装成TCP包,进行TCP连接;
  • 客户机发送请求命令;
  • 服务器收到请求报文,处理报文,返回响应内容和响应报文;
  • 服务器关闭TCP连接(可以通过Connection: keep-alive保持存在路线,但是连接断开状态);
  • 客户机收到响应报文和响应内容,解析渲染呈现。

3. URI 的格式是什么?常见的协议有哪些

  • URI:统一资源标识符;
  • URL:统一资源定位符;
  • 区别
    URI&URL

    可以看出,URL是URI的子集,统一资源标识符有多种形式,URL只是其中的比较常用的一部分。
  • 格式<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
  • <scheme>:协议,常见的有http,https,ftp;
  • <user>:<password>:user和password现在不常见了,不会在URL明文书写用户名和密码了,都是通过登录的方式;
  • <host>:主机可以是IP地址或者域名;
  • :<port>:端口号用来区分主机上的进程,方便找到web服务器,http默认是80;
  • <path>:path是资源的路径,也就是存放位置,不一定和物理路径完全对应,符合web服务器路由约定即可;
  • <params>:params,在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用分号隔开;
  • <query>:查询语句,这个是get请求最常用的传递参数方式了 ?a=1&b=2&=3;
  • <hash>:hash也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能;
  • 常见协议:http,https,ftp,ssh

4. HTTP 协议有几种和服务器交互的方法

  • GET:通常用于请求服务器发送某个资源;
  • POST:向服务器发送数据,通常用来支持HTML的表单(input,textarea,select),表单中的数据会被发送到服务器;
  • HEAD:HEAD方法和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于:
  • 在不获取资源的情况下获取资源信息(类型、大小等);
  • 通过状态码产看资源是否存在;
  • 通过查看首部,测试资源是否被修改了;
  • PUT:和GET从服务器获取资源相反,PUT用于想服务器写入资源,出于安全原因,并不是所有的服务器都实现;
  • TRACE:客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,没个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子;
  • DELETE:DELETE方法用于要求服务器删除请求的URL,和PUT一样,出于安全考虑,服务器可能会不支持
  • OPTIONS:用于请求 web服务器告知其支持的各种功能。

5. 状态码200, 301, 304, 403, 404, 500, 503分别代表什么意思?

  • 200:请求成功;
  • 301:重定向,新的URL在Location头中给出,浏览器应该自动地访问新的URL;
  • 304:未变更,原来缓冲的文档还可以继续使用;
  • 403:无权访问,资源不可用。服务器理解客户的请求,但拒绝处理它;
  • 404:未找到,无法找到指定位置的资源;
  • 500:服务器遇到了意料不到的情况,不能完成客户的请求;
  • 503:服务器超负载或停机维护。

6. 报文有哪几部分组成?

  • 请求报文
  • 请求行
  • 请求头
  • 空行
  • 请求体
  • 响应报文
  • 状态行
  • 响应头
  • 空行
  • 响应体
  • eg
    报文

    其中的MIME Fields就是空行和响应体(或空行和请求体)的位置。

7. 请求头的格式和作用是什么?给个范例截图说明

请求头
  • 格式:关键字:值对
  • 作用
  • Accept:告诉服务器能够发送那些媒体类型;
  • Accept-Encoding:告诉服务器能够发送哪些压缩格式;
  • Connection:客户端和服务器是否保持连接;
  • Host:接收请求的服务器的主机名和端口号;
  • Origin:请求的网站源信息;
  • Referer:提供了包含当前请求URI的文档的URL,告诉服务器自己来源;
  • User-Agent:发起请求的客户端应用程序。

8. 首部的格式和作用是什么?给个范例截图说明

首部
  • 格式:关键字:值对
  • 作用
  • Request:请求的URL;
  • Request Method:请求的方法;
  • Status Code:状态码和状态短语;
  • Remote Address:服务器的IP地址和端口号。

9. 主体的作用是什么?给个范例

主体

主体就是客户端和服务器传输的核心内容,通常是querystring或文本,有的可以是json,而图片是二进制码。

10. 简述浏览器缓存是如何控制的?

web缓存流程图
  • 浏览器缓存机制,其实就是HTTP协议定义的缓存机制和HTML的Meta标签缓存黁机制。
  • 如果浏览器请求时,没有缓存,则向服务器请求内容,通过缓存机制判断是否需要缓存。
  • 如果浏览器请求时,存在缓存,那么首先看缓存是否在有效期,这里是通过HTTP的Cache-control和Expires指明的有效期,Cache-control优先级较高,设置更加精细,是HTTP1.1新定义的。不过两者的作用大体相同。
  • 如果没过期则读取缓存,如果缓存过期了,那么会查询其他定义:
  • Last-Modified/If-Modified-Since要配合Cache-Control使用。
    • Last-Modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。
    • If-Modified-Since:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。
  • Etag/If-None-Match也要配合Cache-Control使用。
    • Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器觉得)。Apache中,ETag的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。
    • If-None-Match:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match (Etag的值)。web服务器收到请求后发现有头If-None-Match 则与被请求资源的相应校验串进行比对,决定返回200或304。

参考浏览器缓存机制

11. 下图各个参数是什么意思?

  • General:概括信息,浏览器自动生成概括,不是HTTP协议的内容;
  • Request URL:请求的URL地址;
  • Request Method:请求的方法;
  • Status Code:响应的状态码和状态短语;
  • Remote Address:请求的IP地址和端口号;
  • Response Headers:响应头部;
  • Connection:连接状态,每次请求完成后都会关闭HTTP连接,为了优化访问,默认设置keep-alive保持连接,即TCP/IP连接不关闭;
  • Content-Length:内容长度;
  • Content-Type:内容类型,这里是json类型;
  • Date:响应事件,这里是GMT国标时间;
  • Server:服务器应用软件信息;
  • X-Powered-By:告知网站是用何种语言或框架编写的;
  • Request Headers:请求头部;
  • Accept:能够接受的响应体格式,/表示任何格式均可;
  • Accept-Encoding:能够接受的编码格式;
  • Accept-Language:能够接受的语言,zh-CN是简体中文,q=0.8是权重0.8,优先考虑简体中文;
  • Cookie:缓存;
  • Host:服务器主机名;
  • Origin:源;
  • Referer:网站的来源信息,包括历史记录信息;
  • User-Agent:客户端代理信息;
  • X-Requested-With:判断是Ajax请求还是HTTP传统请求;
  • Form-Data:从querystring中得到的表单数据;
  • article:数据的文章标题。

本文归本人和饥人谷所有,如需转载请注明出处

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

推荐阅读更多精彩内容