Java面试中可能涉及到的通信协议类问题
HTTP 互联⽹通信协议HTTP协议,是⼀个⽆状态协议。这意味着,所有的状态都保存在服务器端。 HTTP协议⾥⾯,四个表示操作⽅式的动词: GET、POST、PUT、DELETE 。 它们分别对应四种基本操作,简单的说,GET就是获取资源,POST就是创建资源,PUT就是更新资源,DELETE就是删除资源。 HTTP1和HTTP2 Http1是⽂本传送,Http2是⼆进制传送 Http2⽀持多路复⽤,流ID是⼀个Http请求完成多个Http请求传输变成可能 Http2⽀持在客户端未经请求许可的情况下主动向客户端推送内容 常⻅的编程协议 TCP:传输控制协议,三次握⼿和四次分⼿ UDP:⽤户数据报协议,适⽤于⼀次只传输少量数据,稳定性要求不⾼ SPX:顺序包交换协议,保证数据传输的完整性,⼀般⽤于⼤型⽹络和局域⽹游戏环境(反恐精英和星际争霸) NetBIOS:⽹络输⼊输出系统 TCP 三次握⼿:(ACK和SYN(ACK起应答作⽤,⽽SYN起同步作⽤)放在⼀ 个报⽂⾥来发送。) 客户端发送⼀个带有SYN(SYN-send)标志的报⽂到服务器(请求连接) 服务端收到这个报⽂后发回⼀个带有SYN(SYN-recived)和ACK标志的报⽂给客户端(可以连接,做好连接准备了?) 客户端⼜将带有ACK标志的报⽂再次发送给服务器(ok) 四次分⼿:(FIN报⽂通知时,它仅仅表示对⽅没有数据发送给你了;但未必你所有的数据都全部发送给对⽅了,所以ACK报⽂和FIN报⽂多数情况下都是分开发送的。) 客户端发送⼀个Fin标志给服务器; 服务器收到返回⼀个带有ACK标志的报⽂,并确认序号为收到序号 +1; 服务器关闭客户端的连接,并返回Fin给客户端; 客户端返回ACK确认,并将确认序号设置为收到序号+1; 标志 Closed:初始状态 Listen:服务器的 某个Socket处于监听状态,表示可以连接 SYN-received:服务器收到报⽂ SYN-sent:客户端发送报⽂ ESTABLISHED:建⽴连接 FIN_WAIT_1:准备主动关闭连接 FIN_WAIT_2:主动关闭连接(但是表示还有点数据要传给你,等下关闭) TIME_WAIT: 表示收到了对⽅的FIN报⽂,并发送出了ACK报⽂,就等2MSL后即可回到CLOSED 可⽤状态了。(因为假象⽹络并不可靠,你⽆法保证你最后发送的...