高级10-HTTP

1.OSI 七层模型指什么

OSI七层模型是通过七个层次化的结构模型使不同的系统不同网络间实现可靠的通讯


1.物理层:通过物理介质发送和接收原始比特流

2.数据链路层:数据包被编码并解码成比特。 它提供传输协议知识和管理,并处理物理层,流量控制和帧同步中的错误。 数据链路层分为两个子层:媒体访问控制(MAC)层和逻辑链路控制(LLC)层。 MAC子层控制网络上的计算机如何获得对数据的访问以及传输数据的权限。 LLC层控制帧同步,流控制和错误检查。

3.网络层:构建和管理多节点网络,包括寻址,路由和流量控制

4.传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
在这一层,数据的单位称为数据段(segment)。

5.会话层:管理通信会话,即以两个节点之间的多个往复传输的形式连续交换信息

6.表示层:网络服务和应用程序之间的数据转换;包括字符编码,数据压缩和加密/解密

7.应用层:支持应用程序和最终用户进程。识别通信伙伴,识别服务质量,考虑用户认证和隐私,并识别对数据语法的任何约束。

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

我在地址栏中输入www.baidu.com后,浏览器会向DNS发送请求,DNS服务器就是你买的宽带供应商,此时DNS会返回一个IP,TCP三次握手,浏览器此时这个IP去发送HTTP请求,IP对应的是百度的服务器端口,百度的服务器会帮我们补全端口号和路径,然后返回HTTP响应发给浏览器,TCP四次挥手,浏览器解析返回的响应,最后展现页面
假如是www.baidu.com:80www.baidu.com/index.html,,默认端口和默认路径可以不写

参考文章

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

含义
URI 是 Uniform Resource Identifier 的缩写

  • Uniform:规定统一的格式,可方便处理各种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式,加入新的协议方案(HTTP, HTTPS, FTP等)也更容易
  • Resource:资源的定义是“可以标识的任何东西”,除了文档文件、图像或者服务(天气预报)等能够区别于其他类型的,劝都可以称为资源,另外资源不仅可以是单一的,也可以是多数的集合体
  • Identifier:表示可标识的对象,也成为标识符

格式
例:http://samaritan89.github.io/f2e/js/ajax.html
通用的URL由9部分组成
<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框架用作了路由功能

常见协议
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
file——本地电脑文件

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

http最大的作用就是客户端发送请求,服务器给出响应,客户端发送请求的方式有很多

get:是最常用于请求服务器发送某个资源

head:和get类似,但在服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于
1.在不获取资源的情况下获取资源信息(类型、大小等)
2.通过状态码查看资源是否存在
3.通过查看首部,测试资源是否被修改了
通俗释义:查询这个网页是什么类型,是否存在,修改时间是何时。

put:和get从服务器获取资源相反,put用于向服务器写入资源,put的语义就是让服务器用请求的主题部分创建一个请求url命名的文档,如果存在就替换
将一个网页放入服务器,例如首页
post:用于向服务器发送数据,通常用来支持HTML的表单,将表单中的内容发送到服务器
将信息交给服务器
delete:删除服务器上的资源
trace:用来让Web服务器端将之前的请求通信环回给客户端。诊断,看经过哪些节点
options:用来查询针对请求URI指定的资源支持方法。看这么多方法支持哪一个

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

200 一切正常,请求被正常返回
301 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
304 未改变,说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
403 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 无法找到指定位置的资源。这也是一个常用的应答。
500 服务器遇到了意料不到的情况,不能完成客户的请求。
503 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。

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

http报文是简单的格式化数据块,每个报文都包含来自客户端的请求或者一条来自服务器的响应
由三部分组成:
1.对报文进行描述的起始行 -- start line
2.包含属性的首部块 --header
3.可选的包含数据的主体部分 --body
起始行和首部是由分隔行的ASCII,主体是一个可选的数据块

HTTP报文分为两类:

  • 请求报文:向服务器请求一个动作
<method><request-URL><version>
<headers>
<entity-body>

get一般是没有body

  • 响应报文:将请求结果返回给客户端
<version><status><reason-phrase>
// 版本    状态      原因的短语 
<headers>
<entity-body>

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

格式:
第一行(请求行):GET 路径 HTTP/1.1
第二部分,N行(请求头,可以有多个):
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车
第三部分(空行):回车(表示第二部分结束了)
第四部分,N行(消息体/请求体): 随便(格式可在第二部分指定)

作用:规定了请求的协议版本,方法、请求的服务器主机名或端口等信息


说明:

  • GET / HTTP/1.1 ---请求方法是get 遵守HTTP1.1协议
  • Host: www.baidu.com ---接收请求的服务器的主机名和端口号是百度官网
  • Connection: keep-alive ---客户端和服务器是否保持连接,持久链接 ,如果想关闭将keep-alive改为close
  • Cache-Control:max-age=0 ---Cache-Control,控制缓存的行为,max-age,表示当前资源的有效时间器。
  • Upgrade-Insecure-Requests:1 --- 是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应。http升级为https
  • User-Agent ---客户端用的浏览器,系统等信息
  • Accept ---告知服务器客户端可以处理的媒体类型及媒体类型优先级
  • Accept-Encoding---告诉服务器可以发送的编码
  • Accept-Language---告诉服务器可以发送的语言
  • Cookie---主要作用是保存登录信息

get可以有请求体,但是一般没有,使用get永远看不到第三部分和第四部分

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

格式:
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车

作用:首部和方法配合,共同决定了服务器和客户端能做什么

说明:

  • Request URL: http://www.baidu.com/ --- 请求的url
  • Request Method: GET ---请求方法
  • Status Code: 200 OK ---状态码显示成功响应
  • Remote Address: 119.75.213.61:80 ---服务器的主机名或ip地址
  • Referrer Policy: no-referrer-when-downgrade ---监管哪些访问来源信息

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

作用
请求主体的内容由传输者定义,服务器返回给客户端的信息,其格式可以任意指定

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


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

  • General:大概内容
    Request URL: --- 请求的url
    Request Method: PUT ---请求方法put
    Status Code: 200 OK ---状态码显示成功响应
    Remote Address: 121.40.201.213:80 ---服务器的主机名或ip地址

  • Response Headers:响应的内容
    Connection: keep-alive ---响应完成后,TCP链接状态保持链接
    Content-Length:12 ---浏览器报文中内容的大小
    Content-Type: application/json ---响应主体类型json
    Date: Tue ,05 Apr 2016 04:48:23 GMT ---创建日期
    Server: nginx/1.6.2 --- 服务器是nginx
    X-Powered-By: Express ---支持服务器的技术是Express

  • Request Headers:请求的内容
    Accept: 接受的类型
    Accept-Language: 接受的版本,语言
    Connection: keep-alive ---响应完成后,TCP链接状态保持链接
    Content-Length: 56 ---浏览器报文中内容的大小
    Content-Type: application/X... ... ---请求主体类型from
    Cookie: --- 一般保存用户登录信息等
    Host: --- 服务器的域名(用于虚拟主机),以及服务器正在侦听的TCP端口号
    Origin: ---源
    Referer: --- 表示上一个页面的地址,包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
    User-Agent: --- 客户端,浏览器的描述
    X-Requested-With: XMLHttpRequest


题外话

响应头的格式

第一行:状态行 协议/数字/英文
第二部分(n行):
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车
第三部分(空行):回车(表示第二部分结束了)
第四部分,N行(消息体/请求体): 随便(格式可在第二部分指定)

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

推荐阅读更多精彩内容