Http网络协议
一、简介
- 超文本传输协议,基于TCP/IP协议来传输数据;
- 原理:客户端-服务端架构,客户通过URL向服务端发起请求,服务端接收到请求后,向客户端发送响应内容。
二、特点
- 无连接,限制每次连接只处理一个请求,服务器处理完客户端请求,并收到客户端的应答后,断开连接,节省传输时间;
- 媒体独立,客户端和服务器能处理 的数据,都可以通过Http发送;
- 无状态,对于处理过的事务没有记忆能力,无法记住用户是否登录,cookie就是用来解决这个问题的。
- 明文传输,容易被监听
三、消息结构
-
客户端请求消息:请求行-请求头-空行-请求内容
image.png -
服务器响应消息:响应行-消息报头-空行-响应正文
image.png
四、状态码分类
- 1**:消息服务器已经收到,需要请求者继续操作,eg:101:客户端需要切换协议;
- 2**:成功,eg:200;
- 3**:重定向,需要进一步操作完成请求,eg:302:网页被永久转移到其他URL;
- 4**:客户端错误,eg:404:找不到页面;
- 5**:服务器错误,eg:500:内部服务器错误。
五、请求方法
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
- GET 请求指定的页面信息,并返回实体主体;
- HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头;
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和 / 或已有资源的修改;
- PUT 从客户端向服务器传送的数据取代指定的文档的内容;
- DELETE 请求服务器删除指定的页面;
- CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
- OPTIONS 允许客户端查看服务器的性能;
- TRACE 回显服务器收到的请求,主要用于测试或诊断;
- PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 .
六、GET和POST区别
- GET:请求指定页面信息,直接写URL访问,暴露URL,可以被缓存,不安全;请求头和数据打包在一起发送;数据长度有限制(2K);
- POST: 向指定资源提交数据进行处理请求,数据包在请求体内;参数不会被保留;先发送head,服务器响应100,再发送data,发包两次。
七、三次握手
关键词
- SYN:同步位,位码=1,代表同步位状态成功
- 序列号:Sequence Number 随机产生
- ACK:确认位,主机产生的序列号+1
- SYN_SENT:客户端已经发送完SYN数据包
- SYN_RCVD:服务端已经收到SYN数据包
- ESTABLISHED:已经建立了连接可以发送数据
TCP三次握手
第一次:客户端向服务端发送SYN数据包(SYN=1, 序列号=x)。客户端进入SYN_SENT状态,等待服务端确认;
第二次:服务端接收到SYN数据包并进行确认(SYN=1,ACK number=x+1,ACK=1,序列号=y),再发送SYN+ACK数据包给客户端,服务端进入SYN_RCVD状态;
第三次:客户端收到ACK+SYN数据包,如果ACK Number=x+1,将ACK Number设置为y+1,ACK=1,向服务器发送ACK数据包,此时服务端客户端都进入ESTABLISHED状态。
为什么需要三次握手?
为了防止已经失效的连接请求报文突然又传到服务端 ,产生错误。 解释:报文已经发送,但是在某个网络节点发送滞留,导致连接释放,释放后报文才到达另一端。
八、四次挥手
关键词
- FIN:结束
- FIN_WAIT_1:客户端主动关闭连接时的状态(此状态难以看到,发起关闭连接后,另一端会马上同意)
- FIN_WAIT_2:服务端同意关闭后,但是还有一些数据要给客户端,客户端不能马上关闭,半连接状态;
- TIME_WAIT:客户端等2MSL后,就可以关闭了。(如果FIN_WAIT_1时就收到了FIN和ACK的数据,直接进入此状态)
- 2MSL:最大生存时间;
- CLOSED:2MSL后进入关闭状态。
TCP四次挥手
第一次:客户端给服务端发送FIN报文(序列号=x),A进入FIN_WAIT_1状态,表示客户端没有数据给服务端了;
第二次:服务端收到FIN报文,给A发送ACK报文(ACK=x+1),A进入FIN_WAIT_2状态。服务端同意客户端关闭连接;
第三次:服务端向客户端发送FIN报文(序列号=y),请求关闭连接,服务端进入LAST_ACK状态;
第四次:客户端收到FIN报文,向服务端发送ACK报文(ACK=y+1),A进入TIME_WAIT状态,服务端收到ACK报文后关闭连接,客户端在2MSL后依旧没有收到回复,证明服务端已经关闭,客户端就可以关闭了。
为什么TCP需要四次挥手?
TCP是一种面向连接的、可靠地的、基于字节流的传输层通信协议。
TCP是全双工模式,主机1请求关闭连接,不在发送数据,但是可以接收主机2的数据,主机2不再发送数据,才算关闭,减少了数据丢失的风险。
Https网络协议
一、简介
- 安全超文本传输协议,基于TCP/IP协议来传输数据;
- 原理:客户端-服务端架构,客户通过URL向服务端发起请求,服务端接收到请求后,向客户端发送响应内容。
- 通过SSL(安全套接层)或者TLS(运输层安全)加密
二、原理
- 当计算机连接到使用SSL的网站服务器时,计算机的网页浏览器会要求网站确认自己的身份,网页服务器会向计算机发送其SSL证书的副本。
网友评论