一、web及网络基础
TCP/IP :
TCP/IP 协议族里重要的一点就是分层。 TCP/IP 协议族按层次分别分为以下 4 层: 应用层、 传输层、 网络层和数据链路层。
IP、TCP和DNS
IP协议
IP协议位于网络层,作用是把数据包传送给对方IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。
TCP协议
TCP协议位于传输层,提供可靠的字节流服务。为了将数据准确的送到目标处,TCP协议采用三次握手策略。
除了三次握手,还有四次挥手等其他手段来保障通信的可靠性。
DNS服务
DNS是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
各种协议与HTTP协议的关系
URI与URL
URI标记了一个互联网资源,URL表示资源地址。URL是URI的子集。
二、简单的HTTP协议
持久连接节省通信量
持久连接与管线化
使用 Cookie 的状态管理
三、HTTP 报文内的 HTTP信息
请求报文及响应报文的结构
编码提升传输速率
发送多种数据的多部分对象集合
类型 | 描述 | 典型示例 |
text | 普通文本 | text/plain , text/html , text/css, text/javascript |
image | 某种图像 | image/gif , image/png , image/jpeg , image/bmp |
audio | 音频文件 | audio/midi , audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 视频文件 | video/webm , video/ogg |
application | 二进制数据 | application/octet-stream , application/pkcs12 , |
获取部分内容的范围请求
四、返回结果的 HTTP 状态码
分类 | 原因 | |
1xx |
Informational
(信息性状态码)
|
接收的请求正在处理
|
2xx |
Success
(成功状态码)
|
请求正常处理完毕
|
3xx |
Redirection
(重定向状态码)
|
需要进行附加操作以完成请求
|
4xx |
Client Error
(客户端错误状态码)
|
服务器无法处理请求
|
5xx |
Server Error
(服务器错误状态码)
|
服务器处理请求出错
|
状态码 | 英文描述 | 中文描述 |
200 | OK | 请求成功。一般用于GET与POST请求。 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。 |
206 | Partial Content | 部分内容。 |
301 | Moved Permanently | 永久性重定向。今后任何新的请求都应使用新的URI代替。 |
302 | Found | 临时性重定向。 |
303 | See Other | 查看其它地址。 |
304 | Not Modified | 未修改。服务器返回此状态码时,不会返回任何资源。 |
307 | Temporary Redirect | 临时重定向。 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解。 |
401 | Unauthorized | 请求要求用户的身份认证。 |
403 | Forbidden | 拒绝执行此请求。 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。 |
500 | Internal Server Error | 服务器内部错误,无法完成请求。 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求。 |
五、与HTTP协作的web服务器
用单台虚拟主机实现多个域名
通信数据转发程序 :代理、网关、隧道
代理:代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。
隧道:隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
六、HTTP首部
4 种 HTTP 首部字段类型
通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。
请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
HTTP/1.1 首部字段一览
通用首部字段
请求首部字段
响应首部字段
实体首部字段
为COOKIE服务的首部字段
set-cookie字段属性
其他首部字段
X-Frame-Options
首部字段 X-Frame-Options 属于 HTTP 响应首部,用于控制网站内容在其他Web网站的Fram标签内的显示问题。其主要目的是为了防止点击劫持(clickjacking)攻击。
DENY:拒绝
SAMEORIGIN:仅同源域名下的页面匹配时许可
X-XSS-Protection
首部字段 X-XSS-Protection 属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。
0 :将 XSS 过滤设置成无效状态
1 :将 XSS 过滤设置成有效状态
DNT
首部字段 DNT属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。
0 :同意被追踪
1 :拒绝被追踪
P3P
首部字段 P3P 属于HTTP相应首部,通过利用P3P(The Platform for Privacy Preferences,在线隐私偏好平台)技术,可以让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的