HTTP协议
TCP协议对应于传输层,而HTTP协议对应于应用层。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开。
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
三次握手
第一次:建立连接时,客户端发送SYN包到服务器,等待服务器确认;
第二次:服务器收到SYN包,确认ack = j+1,产生一个一个SYN包,将SYN+ACK包发送给客户端;
第三步:客户端收到SYN+ACK包,确认无误后,kehuduan与服务端即可进行数据传输。
四次挥手
第一次:客户端发送一个FIN保温,用来关闭客户到服务器的数据传送;
第二次:服务器收到保温,发回一个ACK保温,确认序号为收到的序号加1;
第三次:服务器关闭客户端的连接,发送一个FIN给客户端;
第四次:客户端发挥ACK报文确认,并将确认序号设置为收到序号加1。
为什么连接是三次握手断开是四次
当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
HTTP和HTTPS区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
http是无状态的,端口为80;为了保证这些隐私数据能加密传输,于是网景公司设计了SSL,协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS,端口号为443。
HTTPS缺点
HTTPS协议三次握手阶段较为费时,效率不如HTTP;
HTTP状态码
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息;
200 OK 正常返回信息;
201 Created 请求成功并且服务器创建了新的资源;
202 Accepted 服务器已接受请求,但尚未处理;
301 Moved Permanently 请求的网页已永久移动到新位置;
302 Found 临时性重定向;
303 See Other 临时性重定向,且总是使用 GET 请求新的 URL;
304 Not Modified 自从上次请求后,请求的网页未修改过;
400 Bad Request 服务器无法理解请求的格式;
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源;
500 Internal Server Error 最常见的服务器端错误(编码有问题);
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
GET方法与POST方法区别
get方法可以被缓存,post方法不可被缓存;
get方法可以保留在浏览器历史记录中,并被保存为书签,post方法不可以;
get方法有长度限制,post方法没有;
由于get方法数据可见,因此安全性非常低,不应当在处理敏感数据时使用,且只应当用于取回数据,而post方法安全性较高。
##HTTP其他请求方法
HEAD 与 GET 相同,但只返回 HTTP 报头,不返回文档主体。
PUT 上传指定的 URI 表示。
DELETE 删除指定资源。
OPTIONS 返回服务器支持的 HTTP 方法。
CONNECT 把请求连接转换到透明的 TCP/IP 通道。