应用层:FTP(文件传输协议)和DNS(域名系统)和http协议
传输层:TCP(传输控制协议)和UDP(用户数据报协议)
网络层:处理在网络上流动的数据包
链路层:处理连接网络的硬件部分
|
**IP** IP地址:指明被分配的地址 MAC地址:指网卡所属固定的地址 运作方式:利用IP指明目标,中转时利用下一站中转设备的MAC地址搜素下一个中转目标。利用ARP协议可以根据IP地址解析出MAC地址。 **TCP** TCP提供字节流服务,把数据分割,并通过带SYN/ACK的数据包(三次)确定是否最终传送到对方。 **DNS** 提供域名和IP之间解析服务
|
简单的http协议
HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
请求报文:主要由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。
响应报文:基本由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体构成。
HTTP方法
**GET: 获取资源** GET方法用来请求访问已被 URI 识别的资源
**POST: 传输实体主体**
**PUT: 传输文件** 由于PUT方法自身不带验证机制,存在安全性问题,一般的 Web 网站不使用该方法
**HEARD :获取报文首部** 不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等
**DELETE: 删除文件**
**OPTIONS: 查询支持方法** 用来查询针对URI指定的资源支持的方法
**TRACE: 追踪路径** 让 Web 服务器端将之前的请求通信环回给客户端的方法。客户端通过 TRACE 方法可以查询发送出去的请求是怎样被加工修改/篡改的。容易引发XST攻击
**CONNECT:要求用隧道协议连接代理** 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(安全套接层)和 TLS(传输层安全)协议把通信内容加密后经网络隧道传输。
|
管线化:利用持久化连接,发送请求后不用等待回应就可直接发送下一个请求。
Cookie:通常用于判断两个请求是否来自同一浏览器,Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态 。
http报文
HTTP信息
首部内容:请求行、状态行、首部字段
报文:是 HTTP 通信中的基本单位,由 8 位组字节流组成,通过 HTTP 通信传输。
实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实 体首部和实体主体组成。
常见压缩传输的内容编码:gzip、compress、deflate、identity
多部分对象集合
multipart/form-data
web表单文件上传时使用
multipart/byteranges
状态码206响应报文包含了多个范围的内容时使用
获取部分内容的范围请求:用到首部字段Range来指定资源的byte范围
内容协商技术:服务器驱动协商、客户端驱动协商、透明协商
http状态码
状态码类别
|
类别 |
原因短语 |
1XX |
信息性状态码 |
接收的请求正在处理 |
2XX |
成功状态码 |
请求正常处理完毕 |
3XX |
重向状态码 |
需要进行附加操作以完成请求 |
4XX |
客户端错误状态码 |
服务器无法处理请求 |
5XX |
服务器错误状态码 |
服务器处理出错 |
14种常见的状态码
**200 OK** 请求被正常处理
**204 No Content** 请求已成功处理,但响应报文中不含实体的主体部分,也不允许返回任何实体的主体
**206 Partial Content** 客户端进行了范围请求,服务器成功执行请求,响应报文中包含由Content-Range指定范围的实体范围
**301 Moved Permanently** 永久性定向。--请求的资源已经被分配到了新的URI
**302 Found** 临时性重定向。
**303 See Other** 表示请求对应的资源存在另一个URI,应使用GET方法定向获取请求资源
**304 Not Modified** 无需再次传输请求的内容,可以使用缓存的内容。
**307 Temporary Redirect** 临时重定向,保持原有信息
**400 Bad Request** 报文中存在语法错误,需要修改请求重新发送
**401 Unauthorized** 表示发送请求需要有通过HTTP认证的认证信息,若之前进行过1次请求,则表示用户认证失败
**403 Forbidden 请求资源的访问被服务器拒绝
**404 Not Found** 服务器上无法找到请求的资源
**500 Internal Server Error** 服务器在执行请求时发生了错误,也有可能是Web应用存在的bug或临时的故障
**503 Service Unavailable** 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
|
web服务器
通信数据转发程序
**代理** 作为客户端和服务器的‘中间人’ 缓存代理:会预先把资源的副本(缓存)保存在代理服务器上 透明代理:转发请求或响应时,不对报文做任何加工代理
**网关** 转发来自其他服务器通信数据的服务器,对客户端的请求进行处理 网关可以使通信线路上的服务器提供非HTTP协议服务,提高安全性。
**隧道** 是在相隔甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序 目的是为了进行安全的通信
|
http出现之前的协议
FTP:传输文件时使用的协议
NNTP:用于 NetNews 电子会议室内传送消息的协议
Archie :搜索 anonymous FTP 公开的文件信息的协议
WAIS :以关键词检索多个数据库使用的协议
Gopher :查找与互联网连接的计算机内信息的协议
HTTP首部
首部字段结构:手段字段名:字段值
通用首部
**Cache-Control 控制缓存的行为** 指令: public 表明其他用户也可利用缓存 private 响应只能以特殊用户作为对象 no-cache 用户端不接受缓存过的响应,缓存服务器不能进行缓存 no-store 表明请求和响应中包含机密信息,不能进行缓存 s-maxage=...(秒) 指定缓存期限和认证的指令 min-fresh=...(秒) 指示客户端允许存储的响应至少 N 秒是新鲜的 max-stale=...(秒)可指示缓存资源,处于指定范围内,过期也可以接受。 only-if-cached 客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回 must—revalidate代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。 proxy-revalidate缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性 no-transform 缓存都不能改变实体主体的媒体类型 **Connection 逐跳首部、连接的管理** 指令 close 服务器想断开连接 Keep-Alive 旧版本http协议实现持久化连接
**Date 创建报文的日期时间** 格式: 如Tue, 03 Jul 2012 04:40:59 GM或者Tue Jul 03 04:40:59 2012
**Pragma 报文指令** 指令: no-cache 只在客户端请求中,所有中间服务器不返回缓存资源
**Trailer 报文末端的首部一览** 允许发送方在分块发送的消息后面添加额外的元信息
**Transfer-Encoding 指定报文主体的传输编码方式**
**Upgrade 升级为其他协议**
**Via 代理服务器的相关信息** 追踪报文传输路径
**Warning 错误通知** 格式: [警告码][警告的主机:端口号]“[警告内容]”([日期时间])
|
请求首部字段
首部字段名 说明 **Accept 用户代理可处理的媒体类型** q=(0-1)用来权衡优先级,默认为1,前用;间隔
**Accept-Charset 优先的字符集**
**Accept-Encoding 优先的内容编码** 内容编码优先级
**Accept-Language 优先的语言(自然语言)**
**Authorization Web认证信息**
**Expect 期待服务器的特定行为** 错误返回状态码417 Expectation Failed
**From 用户的电子邮箱地址**
**Host 请求资源所在服务器**
**If-Match 比较实体标记(ETag)** If-xxx 为条件请求,条件为真时执行
*If-Modified-Since 比较资源的更新时间* 如果请求的资源都没有过更新,则返回状态码 304 Not Modified 的响应
**If-None-Match 比较实体标记(与 If-Match 相反)**
**If-Range 资源未更新时发送实体 Byte 的范围请求**
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反) 如果在指定日期时间后发生了更新,则以状态码 412 Precondition Failed 作为响应返回。
**Max-Forwards 最大传输逐跳数** 当值为0时,经过的服务器不在进行转发,直接返回响应
**Proxy-Authorization 代理服务器要求客户端的认证信息**
**Range 实体的字节范围请求**
**Referer 对请求中URI的原始获取方**
**TE 传输编码的优先级**
**User-Agent 客户端程序的信息** 将创建的请求的浏览器和用户代理名称等信息传达给服务器
|
响应首部字段
首部字段名 说明 **Accept-Ranges 是否接受字节范围请求**
**Age 推算资源创建经过时间**
**ETag 资源的匹配信息** 用户端实体标识
**Location 令客户端重定向至指定URI**
**Proxy-Authenticate 代理服务器对客户端的认证信息** 服务器是安装http服务器的应用程序是信息
**Retry-After 对再次发起请求的时机要求**
**Server HTTP服务器的安装信息** 服务器是安装http服务器的应用程序是信息
**Vary 代理服务器缓存的管理信息**
**WWW-Authenticate 服务器对客户端的认证信息** http访问认证
|
实体首部字段
首部字段名 说明 **Allow 资源可支持的HTTP方法**
**Content-Encoding 实体主体适用的编码方式**
**Content-Language 实体主体的自然语言**
**Content-Length 实体主体的大小(单位:字节)**
**Content-Location 替代对应资源的URI**
**Content-MD5 实体主体的报文摘要** 判断报文的准确性
**Content-Range 实体主体的位置范围**
**Content-Type 实体主体的媒体类型**
**Expires 实体主体过期的日期时间**
**Last-Modified 资源的最后修改日期时间**
|
为 Cookie 服务的首部字段
**Set-Cookie** expires:浏览器可发送cookie的有效期 path:限定cookie发送范围的文件目录 domain:指定域名与结尾匹配可发送cookie secure:web仅在HTTPS时,才发送cookie HttpOnly:使JavaScript无法获取cookie,防止xss攻击对信息的窃取
|
其他首部字段
**X-Frame-Options 用于控制网站内容在其他 Web 网站的 Frame 标签内的显示问题 **响应首部 DENY:拒绝 SAMEORIGIN:仅同域名下页面匹配时许可
**X-XSS-Protection 于控制浏览器 XSS 防护机制的开关**响应首部 0:无效 1: 有效
**DNT 拒绝个人信息被收集**请求首部 0:同意被跟踪 1:拒绝被跟踪
*P3P 在线隐私偏好平台**
|