1.什么是http?
http:超文本传输协议(HyperText Transfer Protocol),又名超文本转移协议。在tcp/ip协议族中的应用层。
2.http版本:
http/0.9 http/1.0 http/1.1 http/2.0
3.什么是DNS?
举个例子我们在浏览器中输入www.baidu.com就会跳转到百度的页面 但是在网络层寻址靠的是IP协议,DNS就是将www.baidu.com域名转化为IP地址。
4.什么是MAC地址?
MAC指网卡所属的固定地址,每个网卡都会有MAC地址,在网络层寻址时并不是点对点直接将数据传输到对端的,而是通过一个一个网卡、路由器一段一段最后到达目的地,就像我们乘坐地铁一样一站一站的最后到达目的地,而每一站都有一个名字就相当于MAC地址。
5.什么是ARP?
ARP是解析地址的协议,根据IP地址可以找到下一个网络节点的MAC地址。
6.URI和URL的关系?
URL(统一资源标识符)是URI的子集,URI包含URL和URN。可以说www.baidu.com就是一个URL但不限于这种形式。
7.URL的格式?
http://(协议方案名)+user:pass(登录认证信息)+@+www.example.com(服务器地址)+ :80/(服务器端口号)+dir/index.htm(有层次的文件路径)+?uid=1(查询字符串)+#ch1(片段标识符)
合在一起:http://user:[email protected]:80/dir/index.htm?uid=1#ch1
http有什么用?
用于客户端与服务器端之间的通信,两台计算机之间进行http通信必定会有一端是客户端,一端是服务器。客户端发送请求到服务器,服务器响应回复返回给客户端。并且一定是客户端先建立通信的。
8.http请求报文格式
1.请求报文首部
2.内容实体
请求报文首部
主要由请求行、请求首部字段、通用首部字段、实体首部字段、其他内容构成。
下面是请求报文首部的列子:
1.起始行:
GET(请求方法)+ /form/entry(URI)+HTTP/1.1(协议版本)
2.首部字段
Host: www.example.com
Connection: keep-alive
Content-Type: application/x-www.form-urlencoded
Content-Length: 16
...
内容实体:
可以是文件,网页内容等...
请求报文首部和内容实体通过空行分隔。
9.http请求方法:
http方法一共有八种分别是:
GET(获取资源) POST(传输实体主体)PUT(传输文件)HEAD(获取报文首部)DELETE(删除文件)
OPTIONS(查询支持的方法)TRACE(追踪路径)CONNECT(要求用隧道协议链接代理)
10.http响应报文格式
1.响应报文首部
2.内容实体
响应报文首部
主要由状态行、响应首部字段、通用首部字段、实体首部字段、其他内容构成。
下面是响应报文首部的列子:
1.状态行:
HTTP/1.1(协议版本)+ 304(状态码)+ Not Modified(原因短语)
2.首部字段
Date: Thu,07 Jun 2012 07:21:36 GMT
Server:Apache
Connection:close
Etag:"45bael-16a-46d776ac"
内容实体:
可以是文件,网页等内容...
响应报文首部和内容实体通过空行分隔。
11.http状态码
状态码分为五大类:
- 1xx 信息性状态码 返回1开头的状态码一般因为 接收的请求正在处理。
- 2xx 成功状态码 返回2开头的状态码代表请求成功
- 3xx 重定向状态码 返回3开头的状态码一般需要客户端根据服务器返回的内容重新处理请求然后再次发起。
- 4xx 客户端错误状态码 返回4开头的状态码代表服务器无法处理这个请求
- 5xx 服务器错误状态码 返回5开头的状态码表示服务器处理请求出错 一般这个时候就可以去找后台要说法了。
例举常用的14种状态码
2xx 成功
200 成功
204 服务器处理成功 但是没有资源可以返回
206 请求内容部分返回
3xx 重定向
301 资源uri已经被分配新的uri 需要客户端进行更新书签(请求的资源永久被重新分配uri)
302 资源uri被分配新的uri(请求资源临时被重新分配uri)
303 与302相同 但是要求客户端再次请求这个uri时要用GET方法
304 资源找到了 但是不符合客户端请求报文首部中添加的要求
307 临时重定向 与302大致相同 但是严格要求客户端再次请求时要使用GET
4xx 客户端错误
400 客户端请求报文中存在语法错误
401 需要HTTP认证
403 不允许访问这个资源
404 没有找到请求的资源
5xx 服务器错误
500 服务器本身错误 一般是服务器代码错误(客户端可以拎着显示器去砸后台)
503 服务器繁忙
12.网关、隧道、代理
代理
客户端请求发送给代理,代理不改变请求URI发送给目标服务器。
服务器响应发送给代理,代理再转发给客户端。
代理又分为两种 分别是缓存代理、透明代理
通俗说就是 客户端和服务器中间多了一个或多个帮忙传递消息的服务器。
缓存代理
代理有一个很重要的用途就是可以缓存服务器响应的内容,当客户端再次请求时代理不必一定将请求转发为目标服务器,如果代理服务器中缓存了这个响应内容就会直接返回给服务器,但是缓存的内容是有过期时间等限制,这些限制由客户端的请求报文的报文首部字段和服务器的响应报文首部字段同时限制的。
透明代理
转发客户端的请求报文或服务器的响应报文时不会改变报文的任何内容。
网关
网关和代理相似 也是客户端和服务器中间可以通过网关传递报文 不同点在于 网关可以使通信线路上的服务器提供非http协议进行服务。举个例子。
客户端通过http协议发送请求报文到网关,网关可以使用其他的非http协议在与目标服务器通信,目标服务器收到网关的通信后也可以使用非http协议返回内容给网关,网关再通过http协议返回给客户端。
隧道
确保客户端和服务器进行安全的通信。
13.报文首部字段
分类
1.请求报文首部字段
2.响应报文首部字段
3.通用首部字段
4.实体首部字段
http/1.1定义了47个报文首部字段 感兴趣可以去查阅 在这47个报文首部字段之外还有一些其他的报文首部字段 例如cookie、set-cookie等。
14.HTTP与HTTPS的区别
这个在面试中经常被问到。先说一下Http的缺点吧。
HTTP缺点
1.通信使用明文(不加密),内容可能会被窃听。
2.不验证通信方的身份,有可能遭遇伪装。
3.无法证明报文的完整性,有可能已经遭到篡改。
HTTPS
身披SSL(secure Socket Layer)和TLS(Transport Layer Security)的HTTP。
HTTPS就是HTTP通信接口部分使用SSL和TLS。