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传输;