1. http与https
http是HTTP协议运行在TCP上,传输明文,客户端和服务端无法验证对方身份;
https是HTTP协议运行在SSL/TLS上,SSL/TLS运行在TCP上,传输内容加密,客户端可以验证服务端身份,如果配置了客户端验证,服务端也可以验证客户端身份;
2. 什么是URL,URL的构成
URL:WWW统一且唯一的资源定位地址,即网络地址;
URL包括:协议、主机地址、端口号、资源的具体位置(路径、参数)
3. http状态码
1XX:信息状态码
100:继续,一般发送post请求时,已经发送了http header之后服务端返回此信息,表示确认,之后发送具体的参数信息;
2XX:成功
200:完全OK,客户端发送的请求被服务端正确处理;
204:请求成功,但响应报文不包含实体的主体部分;
205:请求成功,但响应报文不包含实体的主体部分,要求请求方重置内容;
206:进行范围请求;
3XX:重定向
301:永久重定向,资源已经被分配了新的URL;
302:临时重定向,资源临时被分配了新的URL;
303:资源存在另一个URL,请用GET获取资源;
304:资源允许访问,但请求未满足条件;
307:临时重定向,但希望客户端保持请求方式不变,向新的URL发出请求;
4XX:客户端错误
400:请求报文存在语法错误;
401:请求中没有HTTP认证信息;
403:请求资源的访问被服务器拒绝;
404:服务器上没有找到请求的资源;
5XX:服务端错误
500:服务器在执行请求时发生错误;
501:服务求不支持当前请求所需要的某个功能;
503:服务器暂时处于超负载或停机维护状态,无法处理请求;
4. TCP三次握手
建立连接前,服务端和客户端需要通过握手来确认对方;
(1)客户端 SYN包 --> 服务端 (进入SYN_SEND状态,等待服务器确认)
(2)服务端(接收到SYN包并校验)SYN+ACK包 --> 客户端(进入SYN_RECV状态)
(3)客户端(接收到SYN+ACK包)ACK包 --> 服务端(发送完毕双方进入ESTABLISHED状态)
5. TCP四次挥手
传输完成后,客户端和服务端通过四次挥手断开TCP连接;
(1)客户端 FIN包 --> 服务端 (FIN_WAIT 通知服务端停止数据传输,此时服务端仍可接收数据)
(2)服务端 (接收到FIN包)ACK包 --> 客户端 (CLOSE_WAIT)
(3)服务端 FIN包 --> 客户端 (LAST_ACK 通知客户端已完成数据传输,不会再发送数据)
(4)客户端 (接收到FIN包)ACK包 --> 服务端 (结束)
6. POST和GET区别
(1)GET传输数据放在URL里;
(2)GET相比POST来讲是不安全的,传输数据可见,POST传输数据是不可见的;
(3)GET受URL限制传输数据量小,POST不受限制;
(4)GET传输效率比POST好,GET把header和data一起传输,一个TCP包,POST先传header,服务端响应100,再传data,服务端响应200,两个TCP包;
7. TCP和UDP
UDP面向无连接,不需要三次握手确认对方即可传输数据,可靠性低,效率高;
对于一些需要高体验性的场景,比如直播、游戏,一般使用UDP传输;