一、网络基础TCP/IP
(一)TCP/IP协议族
1、TCP/IP是互联网相关的各类协议族的总称
2、HTTP属于TCP/IP协议族内部的一个子集
3、协议
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)
(二)TCP/IP的分层管理
TCP/IP协议族按层次分别分为以下四层:应用层、传输层、网络层和数据链路层
1、应用层:决定了向用户提供应用服务时通信的活动。
FTP(文件传输协议)、DNS(域名系统) 、SMTP(简单邮件传输协议)、Telnet(Internet远程登陆服务标准协议)、HTTP(超文本传输协议)协议都在该层
2、传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
TCP(传输控制协议)和UDP(用户数据报协议)在该层
3、网络层(又名网络互连层):用来处理在网络上流动的数据包,规定/选择传输路线,把数据包传送到对方计算机
数据包是网络传输的最小数据单位。IP协议在该层
4、链路层(又名数据链路层,网络接口层):用来处理连接网络的硬件部分。
(三)TCP/IP通信传输流
拿HTTP举例
首先,作为发送端的客户端在应用层(HTTP协议)发出一个想看某个web页面的HTTP请求。
接着,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP协议) ,增加作为通信目的地的MAC地址后转发给链路层。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层
封装
发送端在层与层之间传输数据时,每经过一层时,必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时,会把对应的首部消去。这种把数据信息包装起来的做法称为封装
(四)与HTTP关系密切的协议:IP、TCP和DNS
1、IP协议:负责传输,把各种数据包传送给对方。
IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网内的情况是很少的,通常是经过多台计算机和网络设备的中转才能连接到对方。
ARP:解析地址的协议,根据通信方的IP地址可以反查出对应的MAC地址
2、TCP协议:确保可靠性,提供可靠的字节流服务。
字节流服务:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。
可靠的传输服务:能够把数据准确可靠地传给对方。
TCP的三次握手:握手过程中使用了TCP的标志-----SYN(使同步)和ACK(确认)
发送端首先发送一个带SYN标志的数据包给对方
接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息
最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束
3、DNS服务:负责域名解析,提供域名到IP地址之间的解析服务
(五)IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用
(六)URI和URL
URI:统一资源标识符
URL:统一资源定位符
URL是URI的子集
二、简单的HTTP协议
请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成
响应报文:基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
HTTP是一种不保存状态,即无状态协议,也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理
(一)HTTP方法
GET:获取资源(1.0、1.1)
POST:传输实体主体(1.0、1.1)
PUT:传输文件(1.0、1.1)
HEAD:获得报文首部(1.0、1.1)
DELETE:删除文件(1.0、1.1)
OPTIONS:询问支持的方法(1.1)
TRACE:追踪路径(1.1)
CONNECT:要求用隧道协议连接代理(1.1)
LINK:建立和资源之间的联系(1.0)
UNLINK:断开连接关系(1.0)
(二)持久连接和管线化
持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态
管线化:同时并行发送多个请求
(三)cookie
cookie技术:通过在请求和响应报文中写入cookie信息来控制客户端的状态
cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务器端发现客户端发送过来的cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息
三、HTTP报文
(一)HTTP报文:用于HTTP协议交互的信息被称为HTTP报文
HTTP报文组成:报文首部和报文主体
(二)请求报文和响应报文的首部内容由以下数据组成
1、请求行
2、状态行
3、首部字段:包含表示请求和响应的各种条件和属性的各类首部
4、其他
四、HTTP状态码
以3位数字和原因短语组成
类别 | 原因短语 | |
1XX | 信息性状态码 | 接收的请求正在处理 |
2XX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
1、200 OK:请求已正常处理
2、204 No Content:请求处理成功,但没有资源可返回
3、206 Partial Content:客服端进行了范围请求,服务端成功的执行了这部分的GET请求
4、301 Moved Permanently:永久性重定向
5、302 Found:临时性重定向
6、303 See Other:请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源:
7、304 Not Modified:资源已找到,但未符合条件请求
8、307 Temporary Redirect:临时重定向
9、400 Bad Request:请求报文中存在语法错误
10、401 Unauthorized:需认证/认证失败
11、403 Forbidden:不允许访问请求的资源
12、404 Not Found:服务器上没有请求的资源
13、500 Internal Server Error:内部资源出故障了,服务器在执行请求时发生了错误,也可能是Web应用存在的bug或某些临时的故障
14、503 Service Unavailable:服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求
五、HTTPS
HTTP+加密+认证+完整性保护=HTTPS
HTTPS是身披SSL外壳的HTTP
应用(HTTP) |
TCP |
IP |
应用(HTTP) |
SSL |
TCP |
IP |
HTTP HTTPS
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
六、Cookie管理Session会话
1、客户端发送请求到服务器
2、把用户的认证状态与Session ID绑定后记录在服务器端,向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID
3、客户端保存有Session ID的Cookie,下次请求时,服务器端验证接收到的Session ID识别用户和其认证状态