一、 请简述HTTP的5个常用Method及其含义,以及5个常用Status Code及其含义?HTTP与HTTPS的区别是什么,简述一下HTTPS的实现原理。
1. HEAD --- 获取报文头部信息。
4. OPTIONS --- 询问支持方法
2. GET --- 返回报文主体信息,不会对数据产生任何影响。
3. POST --- 传输实体主体,用于给服务器发送数据,如表单提交等
5. PUT --- 传输文件,报文主体中包含文件内容,保存到指定URI资源的存放位置
6. DELETE --- 删除指定URI下的指定资源。
二、 TCP三次握手
- 刚开始客户端和服务器都处于CLOSED状态,客户端向服务器发出主动连接请求,服务器被动接受请求
- TCP服务器进程先创建传输控制快TCB,时刻准备接受客户端连接请求。此时服务器进入LISTEN状态
- TCP客户端进程也是先创建TCB,然后向服务器发送连接请求报问,报文首部中的SYN=1,同时选择一个序列号seq = x;此时客户端进程进入SYN-SENT(同步已发送)状态。SYN = 1的报文段不能携带数据。
- 服务器接收到请求报文之后,如果同意链接,发出确认(ACK)报文。确认报文中的ACK = 1, SYN = 1,确认序号是x+1;同时也要为自己初始化一个序号y,此时TCP服务器进入SYN-RCVD(同步已收到)状态。
- 客户端接收到确认后,还要向服务器给出确认。确认报文的ACK = 1,确认序号是y+1,自己的序列号是x+1.
- tcp链接建立,客户端进入ESTABLISHED(已建立链接)状态。服务器收到确认后也进入ESTABLISHED状态。
三、 四次挥手
客户端 | 服务器 |
---|---|
发送连接释放报文FIN=1,seq=u,进入终止等待状态1 | 发出确认报文ACK=1,序号为u+1,带上自己的序号seq=v,进入关闭等待CLOSE-WAIT状态 |
客户端收到确认请求之后,进入FIN-WAIT2终止等待状态2等待服务器发送连接释放报文 | 向客户端发送连接释放报文,FIN=1,确认序号为v+1,进入LAST-ACK最后确认状态 |
收到服务器的连接释放报文后,发出ACK=1,确认序号为w+1,而自己的序列号是u+1,进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。 | 只要收到了客户端发出的确认,立即进入CLOSED状态,撤销TCB |
TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。