1.什么是HTTP报文?
Http报文就是客户端和服务端之间传送的数据块
2.HTTP报文由哪三部分组成?
HTTP报文由起始行,头部,主体组成,其中起始行是对该报文进行的描述,头部是对报文的属性进行的描述,主体则是数据的内容。
3.HTTP报文分为哪两类?
HTTP报文分为请求报文和响应报文,当客户端给服务器发送请求时,发送的报文就是请求报文,当服务器端給客户端返回请求时,返回的请求就是响应报文。
4.HTTP常见的请求方法有哪些?
常见的请求方式有 get请求:向服务器端发送报文,post请求:向服务器端发送待处理的数据请求,HEAD请求:获取服务器端制定的报文头部信息,PUT请求:向服务器端发送请求并且更改制定的信息,DELETE请求:删除指定的报文数据
5.HTTP的状态码分为哪几类?
100-101(2个)代表有提示信息,200-206:代表请求成功 ,300-305:重定向或者转发 400-415:客户端方出现了错误 500-505 :服务端出现了错误
6.HTTP常见的状态码有哪些?
200请求成功
301和302都代表重定向,但是301代表的是永久性的重定向,而302代表的暂时的重定向,二人虽说都是将地址变成重定向的地址,但是301重定向之后会消除原来的地址,原来的资源会不能访问,浏览器会自动转向新的地址。而302表示的是暂时的重定向,原来的地址资源还在,只是浏览器临时跳转到了新的地址。
401:未授权,一般是请求需要得到服务器授权
403:服务器拒绝了你的请求
404:请求的资源不存在
405:方法禁用,比如该请求只让用post访问,无法用get访问
406:请求和响应的格式不匹配,比如请求报文是application/json形式 而响应报文确是 text/html格式,就回导致不匹配
407:代理服务器没有授权,服务器使用了代理服务器,但是代理服务器没有授权
500:服务器异常
503:服务器可能停机维护或者超载,暂时无法接受请求
7.说一下转发和重定向的区别
首先重定向和转发,是两个端的操作,重定向指的是你访问一个地址,浏览器通过服务器端给的新的地址,加载那个地址的页面,是客户端/浏览器进行的操作。
而转发是服务器端的操作,它是指,当你的浏览器请求到某个页面,服务器端会在内部把这个页面换成另外一个请求的页面,体现的是服务器端的操作。
8.简述下TCP三次握手的过程,并解释采用3次握手建立连接的原因?
客户端发送连接请求: syn=1 seq=x
服务端发送响应请求 syn=1 ack=x+1 seq =y 表示服务端准备好了
客户端发送确认的请求 ack=y+1 seq=x+1 客户端确认是刚才自己发的消息,且消息有效
那为什么需要三次握手呢?其实就像客户端的第二次握手我描述的那样是为了判断消息有效。
试想这样一个场景:客户端在很久很久之前发送了一个请求,但是由于网络因素或者是其他因素,他没有及时被服务端收到,也没有消失,而是暂时发送不到服务端了,而此时客户端没有收到服务端的回信,又发了一次,这次网速快,三次握手成功了。
更巧的是,成功之后,滞留的之前的客户端发的消息发出去了,然后被服务端收到了,服务端又发了一个确认消息,但客户端这次没有确认。
服务端就会立马知道----啊啊! 这是滞留的消息。
这就是三次握手的作用。
答:四次挥手的过程是:
客户端发送一个FIN
报文告诉服务器,我要停止对你发送数据了
服务器端发送收到
服务器端发送一个FIN
报文,告诉客户端,我也要停止对你发送数据了。
客户端回答收到
为什么要四次挥手呢?因为客户端和服务端的连接是双向的,客户端向服务器端发送FIN
只是段龛客户端到服务器的连接,服务器还可以向客户端发送数据,此时只是单向断开,只有服务器再次发送FIN
报文的时候才是双向断开。
9.什么是https?
https是基于http/ssl/tls通过密文传输信息,保证了用户信息的安全。
10.什么是2MSL?
先说一下什么是MSL,MSL指的是最大的生存时间。指定是包本身有一个最大的生存时间,超过这个时间,包就会消失。
2MSL指的就是2倍的最大生存时间,当服务器发送完第三次挥手请求后需要的得到客户端的回应的时间是2MSL超过这个时间就需要客户端重新发送FIN
请求