1.GET请求和POST请求的区别
-
参数的传递方式
GET请求将请求参数附加在URL后面,而POST请求则将请求参数包含在请求体中进行传递。
-
安全性
GET请求的参数可以通过URL明文传输,不够安全,比较容易被攻击者截获;
POST请求传递参数虽然是通过请求体传输的,但也只是相对地安全。如果需要更高的安全保护,建议使用HTTPS等协议来保证数据传输时的安全。
-
请求长度限制
由于浏览器和服务器都对GET请求有URL长度限制,因此GET请求一般只处理小量数据,而POST请求可以传递大量数据
-
幂等性
GET请求通常是"幂等"的,即多次请求同一个URL地址返回的响应结果是一致的,不会对服务器端的数据进行修改。
POST请求可能产生新的资源或者导致数据状态发生变化,因此在服务端执行多次同样的POST请求可能会导致错误。
总的来说,在选择GET请求和POST请求时,需要根据业务需求做出权衡。如果请求涉及到敏感数据,或者需要进行数据的添加、更新、删除等操作,则应该使用POST请求;如果仅仅需要获取数据,可以使用GET请求,操作起来更加简单易懂。
区别 | GET请求 | POST请求 |
---|---|---|
参数的传递方式 | 请求参数附加在URL后面 | 将请求参数包含在请求体中进行传递 |
安全性 | 通过URL明文传输,不够安全,比较容易被攻击者截获 | 通过请求体传输的,但也只是相对地安全。如果需要更高的安全保护,建议使用HTTPS等协议来保证数据传输时的安全。 |
请求长度限制 | 有URL长度限制,一般只处理小量数据 | 没有限制,可以传递大量数据 |
幂等性 | 幂等 | 非幂等 |
2.TCP三次握手为什么是三次?
TCP三次握手是在TCP/IP协议中建立一个可靠的连接时所必须进行的步骤。
三次握手的目的主要有两点:
-
确定双方已经准备好进行通信
-
同步序号和确认号,以便在正式传输数据之前确定双方都可以正确接收和发送数据。
为了完成这两个目的,需要进行三次握手
- 第一次握手:客户端向服务器发送SYN请求报文。即客户端什么都不能确认,服务器确认了对方发送正常,自己接受正常
- 第二次握手:服务器接收到客户端发送来的SYN请求报文后,如果同意建立连接,就会回复一个ACK以及一个SYN标志位的响应报文。此时,服务器进入SYN_RECEIVED状态。即客户端确认了自己发送正常、接收正常,对方发送、接收正常;服务器确认了对方发送正常,自己接受正常。
- 第三次握手:客户端收到SYN和ACK标志位的响应报文后,就会向服务端发送一个ACK标志位的报文段,表示“响应”接收到了服务器的请求,此时,客户端进入ESTABLISHED状态。服务端也在收到第三次握手后确认,进入ESTABLISHED状态。即客户端确认了自己发送正常、接收正常,对方发送、接收正常;服务器确认了自己发送正常、接收正常,对方发送、接收正常;
简单来说,客户端先发一次请求,服务端回复并同意,最后客户端再次回复接收到了服务端的响应。
三次握手之所以要进行三次,是因为防止网络中出现已失效的请求报文段重复发送到服务器端,从而导致错误。通过三次握手可以确保双方建立连接后都已经成功接收到对方的消息,减少了无效或重复的数据传输。
3.如果服务器要传大文件,怎么降低服务器的负担?
- 分块传输:将大文件分割成多个小块进行传输。客户端可以分别请求这些小块,并组合成完整的文件。这样做的好处是可以减少单次传输的数据量,降低服务器端传输时占用的带宽和处理资源。
- 断点续传:在传输大文件时,如果出现网络问题或用户取消了下载等情况,就需要重新传输。这时可以使用断点续传技术,即记录已经下载的数据位置,下一次请求时从上次中断的位置继续传输,避免重复传输已经成功传输的部分。这样不仅可以节省服务器端资源,也可以提高用户体验。
- 压缩文件:在传输大文件之前,可以对文件进行压缩,减少文件大小,从而减少传输时间和占用的带宽。客户端可以在接收到压缩文件后解压缩,获得完整的原始文件。
- CDN加速:利用CDN(内容分发网络)服务可以将文件存储在离用户较近的服务器上,利用本地缓存或更短的传输路线,可以加快传输速度同时能有效降低服务器的负担。
- 限制下载速度:为了保护服务器,我们可以在传输过程中对下载速度进行限制。通过限制下载速度来控制用户的数据使用量,避免网络堵塞或资源浪费。常用的方法有在服务器端对连接进行速率控制、在应用层对文件/流的速率限制等。