一、ARP工作原理
首先ARP工作在数据链路层,功能是将IP地址转换成MAC地址。例如主机A想向主机B发送消息,首先会查看自己ARP表中是否有主机B对应的MAC地址,如果有则按照ARP表中对应的MAC地址表发送,否则就以广播的形式发送数据包,来查询主机B的MAC地址。这个广播包包源IP地址、硬件地址、以及目的IP地址。收到这个广播包的人先查看目的IP是不是自己的IP如果不是就不理会,如果是就会向源地址发送自己MAC地址,主机A的ARP表就会记录这个MAC到自己的表中,如果一直没有回复则查询失败。
二、DNS工作原理
DNS功能是将域名转换成IP地址。用户A在浏览器输入域名,操作系统会先查看自己本地的DNS缓存,如果有则直接返回,否则会发送给本地的DNS服务器。本地的DNS服务器同样会先查看自己的缓存,如果有则直接返回,否则会向跟服务器发送递归查询。根域名服务器存储了顶级域名的DNS服务器信息,根域名返回顶级域的服务器IP地址。顶级域服务器记录个各个顶级域名,会将查到域名对应的IP返回给本地DNS服务器,本地DNS服务器会将IP地址缓存方便下次使用。
三、TCP三次握手四次挥手
三次握手:
客户端发送一个SYN数据包给服务端表示想要简历连接,客户端进入SYN_SEND状态。服务器接受到SYN数据包后回复一个SYN和ACK数据包给客户端,服务器进入SYN_RECV状态。客户端接收到SYN+ACK后回复一个ACK数据包,表示建立成功,客户端进入ESTABLISHED状态,表示双方可以传输数据。
四次挥手:
客户端不在想传输数据,会先发送一个带有FIN数据包给服务端,但是还能接受数据,客户端进入FIN_WAIT_1状态。服务端接收到客户端发送的FIN数据包会发送一个ACK给客户端,服务器进入CLOSE_WAIT状态,但是会继续发送数据。服务端传输完剩下的数据后会发送一个FIN数据包给客户端,服务器进入LAST_ACK状态。客户端接收到FIN包后会发送一个带有ACK标志的数据包给服务端,客户端进入TIME_WAIT状态,确保服务端收到ACK,最后断开连接。
四、TCP与UDP的区别
TCP | UDP | |
连接 方式 | 面向连接,数据传输前先连接,通过三次握手 | 面向无连接,可以直接发送数据包 |
可靠性 | 可靠传输服务 | 不可靠 |
速率 | 速度较慢,延迟性较高,传输更加稳定 | 速度快没有其他开销 |
头部 大小 | 头部大小为20或40字节 | 头部为8字节 |
适用 场景 | 实用与可靠性要求较高的场景,邮件传输等 | 实时性要求较高的场景,视频通话等 |
其他 特性 | 提供流量控制等机制 | 最大努力交付 |
五、HTTP与HTTPS的区别
HTTP(超文本传输协议) | HTTPS(安全超文本传输协议) | |
安全性 | 明文传输,有安全风险 | 加上SSL/TLS协议进行加密,安全性高 |
数据 传输 方式 | 默认使用80端口,无状态协议,请求独立 | 默认使用443端口,有身份验证 |
证书 | 不需要证书 | 需要证书 |
性能 | 性能交好 | 相对较低 |
场景 | 隐私保护较低的场景 | 在线支付、用户登录等 |
六、OSI参考模型和TCP/IP参考模型
OSI参考模型 | TCP/IP参考模型 |
会话层(RPC等) | 应用层 |
表示层(SSL/TLS等) | |
应用层(HTTP/FTP/DNS/SMTP) | |
传输层(TCP/UDP) | 传输层 |
网络层(IP/ICMP) | 网络层 |
数据链路层(PPP) | 网络接口层 |
物理层 |
七、HTTPS常见状态码(部分)
2 | 200请求成功、204成功不需要服务器返回 |
3 | 301永久重定向、302临时重定向 |
4 | 400客户端请求错误、401需要验证、403服务器拒绝、404找不到 |
5 | 500服务器执行时发生错误、502服务器网关错误、503服务器维护 |