常见的HTTP状态码分哪几类?
HTTP状态码由三位数数字组成,分为五大类:1xx表示信息相应,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误
HTTP和HTTPS的主要区别是什么?
HTTP和HTTPS的核心区别在于安全性,HTTP明文传输数据,容易被窃听,篡改和冒充;而HTTPS在HTTP基础上增加了SSL/TLS加密层,通过加密防止窃听、校验机制防止篡改,数字证书防止冒充,从而保障通信安全。
说说TCP三次握手?
TCP三次握手就是客户端和服务器通过发送和确认三个包,保证双方收发能力正常,且同步初始化序列号,并建立可靠连接的过程。第一次握手是客户端发给服务器一个SYN报文,并且携带一个随机生成的初始化序列号。第二次我是是服务端收到SYN后,回发一个SYN+ACK报文,确认号是客户端序列号+1,同时自己也生成一个初始化序列号。第三次是客户端收到SYN+ACK后,发送一个ACK报文,确认号是服务端序列号+1,这时候客户端就处于已建立连接状态,服务端收到ACK后也处于连接状态,就正式连接了。
TCP和UDP的主要区别?
TCP是面向连接、可靠的字节流协议,保证数据不丢,不乱、不错,适用于准确性要求高的场景如文件传输和网页浏览;UDP是无连接、不可靠的数据报协议,传输速度快,适合对实时性要求高、能容忍少量丢包的场景如视频通话和在线游戏。
TCP为什么会粘包,怎么处理?
因为TCP是面向字节流的协议,没有消息边界概念。数据以字节流形式传输,发送缓冲区大小限制Nagle算法优化小包、MTU限制分片等都会导致数据在传输过程中被拆分或合并,从而产生粘包。主要有三种方法:1.定长消息:规定每条消息固定长度,不足补空;2.分隔符:用特殊字符分隔消息;3.长度字段+内容:消息头中包含内容长度,接收方先读长度再读对应字节数。其中第三个中最常用且灵活。
UDP为什么没有粘包问题?
UDP是面向数据报的协议,每个数据报都有明确的边界,其头部包含长度字段,操作系统能准确知道每个报文的长度,因此接收方可以按报文单位读取,天然保持消息边界。
TCP四次挥手的过程?
TCP四次挥手是断开链接过程,1.客户端发送FIN包,进入FIN_WAIT_1状态,2.服务端回复ACK,客户端进入FIN_WAIT_2状态,3.服务端发送FIN包,进入LASK_ACK状态,4.客户端回复ACK,进入TIME_WAIT状态等待2MSL后关闭,服务端收到ACK后立刻关闭。
为什么TCP建立连接是三次握手,而断开连接需要四次挥手?
因为TCP是全双工通道,断开需要双方各自独立关闭发送通道,当客户端发送FIN后,服务端可能还有数据要发送,因此必须先回ASK,等等数据发送完后在发送自己的FIN,导致无法合并,通常需要四次。而建立连接时,SYN和ASK可以合并发送。
第四次挥手后,客户端为什么要等待2MLS才真正关闭?
等待2MSL是为了确保服务端能收到最后一次ACK,丢失可重传FIN,使本次连接的所有网络报文都消失,避免与新建连接的报文混淆。
TCP/IP四层模型是什么?
TCP/IP四层模型是实际互联网使用的网络分层架构,分为网络接口层,网络层,传输层和应用层。网络接口层负责在物理网络上收发数据帧;网络层核心是IP协议,负责数据报的路由和转发;传输层提供端到端通信,TCP实现可靠传输,UDP提供无连接的快速传输;应用层包含各种高层协议如HTTP,FTP、DNS等,直接为应用程序提供服务。
OSI七层模型是什么?
物理层,数据链路层;网络层;传输层;会话层,表示层,应用层。