HTTP

1.OSI 七层模型指什么

OSI(Open System Interconnection,开放系统互连),七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,它把网络分为了7层,这七层由下往上分别是:

  • 1.物理层:机械、电子、定时接口通信信道上的原始比特流传输。
  • 2.数据链路层:物理寻址,同时将比特流变成逻辑传输线路。
  • 3.网络层:控制网络的运行,如逻辑编址,分组传输,路由选择。
  • 4.传输层:接受上一层的数据,在必要的时候把数据进行分割,并将这些数据交给网络层,且保证这些数据有效到达对端。
  • 5.会话层:不同机器上的用户之间建立及管理回话。
  • 6.表示层:信息的语法语义以及他们的关系,如加密解密、转换翻译、压缩解压缩。、
  • 7.应用层:各种应用程序协议,如HTTP、FTP、SMTP等。

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

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
具体步骤大致如下:
1.地址解析:
通过DNS服务器解析出域名所对应的服务器的IP地址。
2.封装HTTP请求数据包:
将以上部分结合本机自己的信息,封装成一个HTTP请求数据包。
3.封装成TCP,建立TCP连接(TCP的三次握手):
在HTTP工作开始之前,客户机首先要通过网络与服务器建立连接 ,该连接是通过TCP完成的,一般TCP连接的端口号是80。
4.客户端发送请求命令:
建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,以及MIME信息包括服务器信息、实体信息和可能的内容。
5.服务器响应:
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。实体信息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
6.服务器关闭TCP连接:
一般情况下,一旦web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive,TCP连接发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需要的时间,还节约了网络带宽。
参考文章

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

URI( Uniform Resource Identifier)统一资源标识符。



常见协议:
IP(Internet Protocol):网络协议
HTTP (HyperText Transfer Protocol):超文本传输协议
HTTPS(Hypertext Transport Protocol Server):超文本传输安全协议
TCP(Transfer Control Protocol):传输控制协议
UDP(User Datagram Protocol):用户数据包协议文
ARP(Address Resolution Protocol):地址解析协议
FTP(File Transfer Protocol):文件传输协议
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
SFTP(Simple File Transfer Protocol ):简单文件传输协议

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

  • GET
    get是最常用的方法,通常用于请求服务器发送某个资源。我们平时在浏览器输入网页地址,就是给服务器发送了一个get请求,希望得到这个网页。
  • POST
    POST用于向服务器发送数据,通常用来支持HTML的表单,表单中的数据会被发送到服务器。
  • **PUT **
    和GET从服务器获取资源相反,PUT用于向服务器写入资源。
  • HEAD
    HEAD和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一部分信息,主要用于:1.在不获取资源的情况下获取资源信息(类型、大小等)2.通过状态码查看资源是否存在3.通过查看首部,测试资源是否被修改了
  • TRACE
    客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,每个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子。TRACE请求会在目的服务器端发送一个“闭环”诊断,形成最后一站服务器会弹回一条TRACE响应。
  • DELETE
    DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持。
  • OPTIONS
    OPTIONS方法用于请求web服务器告知其支持的各种功能。

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

1~199系列 信息 接受到请求,继续处理
200~299系列 表示成功 操作成功的接受,理解和接受
300~399系列 表示重定向 为了完成请求,必须采取进一步措施
400~499系列 表示客户端错误 请求的语法有错误或不能满足客户端需求
500~599系列 表示服务端错误 服务器无法完成明显有效的请求常用的statu code
200 服务器成功返回请求的内容
301 永久重定向,所请求资源永久性移动到新位置,下次如果再有这个资源的请求都应该使用本响应返回的若干个URI之一
304 所请求内容无变化,直接在本地缓存中查找所请求的内容
403 服务器理解该请求,但拒绝这次请求,一般是无权限访问
404 请求内容服务器端未找到
500 服务器遇到意外错误,无法完成客户请求503 临时维护或服务器超载,无法处理请求

6.报文有哪几部分组成? (可选 )

报文大致有三部分组成
起始行 start line: 对报文的关键信息进行简单描述(协议版本,请求方式,状态码)
首部 header: 包含属性
主体 body: 数据信息(有点http请求可能不包含这一部分)
HTTP报文分为请求(Requests)报文和响应(response)报文。

  • 请求报文格式:
<method> <request-URL> <version>
 <headers>
    
 <entity-body>
  • 响应报文格式
<version> <status><reason-phrase> 
<header> 

 <entity-body>

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

  • 格式:键值对
  • 作用:浏览器客户端告诉服务器发送请求的内容、客户端信息、响应内容和相关优先级等消息。


    请求头示例图片

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

格式:键值对
首部包括:普通首部(General),请求首部(Request Headers),响应首部(Response Headers),实体首部(Entity header)。
普通首部(General):请求报文和响应报文都会使用的首部
请求首部(Request headers):发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容相关优先级等信息
响应首部(response headers):从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

首部示例图片

9.主体的作用是什么?给个范例(可选)

主体是与客户端与服务器端通信所传输的数据。请求主体携带发送给服务器端请求内容,响应主体携带返回给客户端的内容。


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

作用:缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可以减少对源服务器的访问,因此也就节省了通信流量和通信时间。
实现方式:客户端向服务器发送请求,如果缓存服务器中没有客户端需要的资源,则服务器在·内部寻找到资源后,返回给客户端,同时,将找到的资源放入缓存服务器中。当客户端再次向服务器发送请求时,再缓存服务器中寻找是否存有需要的资源,此时存在,则将资源返回给客户端。

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


General 通用首部

  • Request URL: 请求的资源地址。
  • Request Method: 请求的方式-PUT。
  • Status Code: 状态码200,成功。
  • Remote Address: 请求的服务器的IP地址和端口号,此时为121.40.201.213:80。

Response Headers 响应头

  • Connection: keep-alive: 使客户端到服务器端的连接持续有效。
  • Content-Length: 响应内容长度,此时为12字节。
  • Content-Type: 决定如何显示返回的消息实体,此时是json格式。
  • Date: 创建HTTP报文的时间和日期。
  • Server: 使用的服务器,此时为Nginx。
  • X-Powered-By: 告诉HTTP客户端处理请求和响应的是什么引擎,此时为Express。

Request Headers 请求头

  • Accept: 用户代理可处理的媒体类型。
  • Accept-Encoding: 优先的内容编码。
  • Accept-Language: 优先的语言。
  • Connection: keep-alive: 使客户端到服务器端的连接持续有效。
  • Content-Length: 请求体内容长度(字节),这里为56个字节。
  • Content-Type: 决定如何显示返回的消息实体,此时设置编码为UTF-8。
  • Cookie: 浏览器缓存。
  • Host: 使用的主机。
  • Origin: 说明最初的请求时从哪里发出。
  • Referer: 告诉浏览器页面是从哪个页面连接过来。
  • User-Agent: HTTP客户端程序的信息。
  • X-Requested-With: 在服务器段判断request来自Ajax请求(异步)还是传统请求(同步)。此时为Ajax请求(异步)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容