HTTP协议笔记
标签(空格分隔): HTTP,TCP/IP
[TOC]
1.网络协议基础知识
TCP/IP协议族按层次分为以下四层:
应用层、传输层、网络层、数据链路层
应用层:
应用层的协议有比如FTP,DNS以及HTTP协议
传输层:
主要是TCP(面向有连接)和UDP(面向无连接)
网络层:
网络层则是用来处理在网络上流动的数据包,数据包是网络传输的最小单位。主要的协议为IP协议。
链路层:
主要是来处理链接网络的硬件部分。
IP 协议:
IP协议的作用是把各数据包传送给对方。其中重要的两个部分则是IP地址(勿和协议混淆)以及MAC地址(MAC地址是网卡所属的固定的地址)。并且IP地址与MAC地址相配对,IP地址可变,MAC地址不可变。
ARP协议:
一种解析地址的协议,可以通过对方的IP地址查出对应的MAC地址。
TCP协议:
三次握手:
TCP是面向有连接的传输协议。TCP不会对数据包置之不理,而是一直会向对方确认所传输的数据包是否已经到达。在三次握手中,会使用SYN以及ACK标志来进行确认。
发送段首先将标有SYN的数据包发送给接收端,接收端收到后,回答一个带有SYN以及ACK的数据包来表示己方已经成功的接收到了消息。最后发送端再回传一个ACK标志的数据包给接收端。这时代表三次握手结束。此时发送端再向接收端开始传送数据。
发送端 >————SYN————>接收端
发送端 <———SYN/ACK———<接收端
发送端 >————ACK————>接收端
四次挥手
发送端 >———FIN/ACK———>接收端
发送端 <————ACK————<接收端
发送端 <————FIN————<接收端
发送端 >————ACK————>接收端
DNS服务:
DNS是和HTTP一样位于应用层的协议,它的作用是提供域名和IP地址之间的解析服务。也就是给我们一个域名,我们可以查它的IP地址或者说,通过IP地址,反查出域名。
2.HTTP
HTTP协议主要是客户端到服务器端的通信协议。
HTTP协议可以分出客户端以及服务器端,因为总是客户端发送请求,而服务器端回复响应。所以换句话说,客户端先发出请求,后而有服务器端作出响应。
HTTP是一种无状态协议,也就是说不对请求和响应之间的通信状态进行保存。所以只要有新的请求发生,就会有新的回应产生。(cookie的使用则是为了方便管理状态)
HTTP使用URI定位资源。
告知服务器意图的HTTP方法
GET:获取资源
GET方法用来请求访问已经被URI识别的资源,然后资源通过服务器解析后返回响应的内容。如果请求的资源是文本,那就保持原样返回。
POST:传输实体主体
POST方法用来传送实体的主体,一般由客户端向服务器端发送信息,例如提交表格等等向服务器端提交信息。
PUT:传输文件
PUT方法用来传输文件,类似于FTP协议的文件上传一样,在请求报文中包含文件的主体内容,然后请求保存到URI指定的位置上。(HTTP/1.1不带身份验证机制,所以并不安全)
HEAD:获取报文首部
HEAD方法类似于GET方法,只是不返回主体报文,只是返回一个报文首部,用于确认URI的有效性以及资源更新的日期等等。
DELETE:删除文件
DELETE方法用于删除文件,和PUT相反
OPTIONS:询问支持的方法
顾名思义,就是向服务器端询问支持的哪些方法
Cookie状态管理
之前有提到HTTP是无状态协议,它无法对之气发生过的请求和响应进行管理。例如一个登录页面,我们每次打开整个页面都需要重新进行登录,提交我们的身份信息进行登录。而使用了Cookie之后,在客户端会保存Cookie文件,在下次提交请求和响应的过程中,客户端会将Cookie中的信息自动的添加到报文请求中,相当于自动的为我们为我们存储了状态信息。
3.HTTP状态码
当客户端向服务器端发送请求时,状态码用来返回请求结果
2XX成功
200ok
表示客户端的请求被成功的正常处理
204 No Content
表示服务器端接收的请求已经被正常处理。(不返回新资源)
206 Partial Content
客户端对服务器端资源的部分请求
3XX重定向
304 Not Modified
表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但是并未满足条件的情况。
4XX客户端错误
400 Bad Request
请求报文中有语法错误
403 Forbidden
服务器拒绝了请求资源的访问
例如未获得文件系统的访问授权,访问权限出现问题
404 Not Found
服务器上无法找到请求的资源
5XX服务器错误
5xx响应表明服务器本身出现错误