1.HTTP 简介:
- HTTP 协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议;
- HTTP 是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等);
2.HTTP工作原理:
- HTTP协议工作于客户端-服务端架构上,浏览器作为HTTP客户端通过URL向HTTP服务端发送所有请求。
- web服务器有:Apache 服务器、lls服务器等;
- HTTP默认端口号为80,但是也可以改为8080或者其他端口;
3.HTTP的优点和缺点?
优点
- 支持客户/服务器模式:
- 应用广泛且跨平台:
- 简单快速、灵活:
缺点 - 无连接:
- 无状态:无状态可以减轻服务器负担,但进行关联操作时繁琐,Cookie正好可以解决这个问题
- 明文传输:调试便利的同时带来了信息易被窃取
- 不安全:(HTTPS通过引入SSL/TLS层,解决了这个隐患)
4.请求类型Get与Post之间的区别?
- get重点在从服务器上获取资源,post重点在向服务器发送数据;
- get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等; post较get安全性较高;
- get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用”?”连接,多个请求数据间用”&”连接,
如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的
- Get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式;
- get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持标准字符集,可以正确传递中文字符。
5.HTTP与HTTPS的区别?
HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP
协议与各种应用层协议之间,为数据通讯提供安全支持。
区别
- HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
- HTTP和HTTPS 使用完全不同的连接方式,所用的端口不同,前者是80 端口,后者是 443端口
6.常见HTTP的状态码有哪些?
- 200 – 请求成功
- 301 – 资源(网页等)被永久转移到其它URL
- 404 – 请求的资源(网页等)不存在
- 500 – 内部服务器错误
7.HTTP常见的字段有哪些?
URI&URL:
- URI:统一资源标识符,不仅可以标识http,ftp等其他的网络资源
- URL:统一资源定位符
** 请求头 **:
- GET :获取一个资源,同时参数直接跟在URL后面,url长度受限制2048字节
- POST:不仅可以获取资源,还可以提交资源(譬如上传文件),参数放在请求体中,包大小4G
- HEAD:只要响应头,没有响应体,通常用于测试URL是否存在
- DELETE:删除一个资源
- PUT:通常修改一个资源
响应头:
- Content-Length:响应体的长度
- Server:服务器的信息
- Content-Type:内容的类型,text/html,xml等
- Last-Modified :最有的修改日期,通常跟缓存相关 20151108
- Location: 新的地址
响应码:
- 200 OK 访问正常
- 206 跟断点续传相关
- 3XX 重定向:Location
- 304 缓存有效
- 307 临时重定向
- 4XX 客户端问题
- 401 代表没有权限访问
- 404 代表访问的资源不存在
- 5XX 通常服务器内部处理的问题
8.请谈谈你对“ 三次握手与四次挥手 ”的理解并说说作用?
- 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。
- 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。
- 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。
服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。
三次握手的作用:
- 确认双方的接受能力、发送能力是否正常;
- 指定自己的初始化序列号,为后面的可靠传送做准备;
- 如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。
四次挥手:
1.第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
2.第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
3.第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
4.第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态
服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
- 版权声明:本文为CSDN博主「学前端的阿鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接