概述
本章节主要是对开发面试中经典的面试问题进行总结分析,同时也是该系列的最后一篇。
问题
1)请简单说一下TCP/UDP的区别?
- TCP面向连接,UDP面向非连接即发送数据前不需要建立连接。
- TCP提供可靠的服务,UDP无法保证。
- TCP面向字节流,UDP面向报文。
- TCP数据传输慢,UDP数据传输快。
- TCP传输不限制大小,UDP单次传输报文有限制(64K)。
2)请你说说你了解的端口以及对应的服务
端口 | 服务 |
---|---|
21 | FTP(文件传输协议) |
22 | SSH |
25 | SMTP(简单邮件传输协议) |
53 | DNS域名服务器 |
80 | HTTP超文本传输协议 |
443 | HTTPS |
3306 | MySQL服务默认端口 |
110 | POP3邮件协议 |
3)说一说TCP的三次握手?(重点)
第一次握手:建立连接,客户端发送请求报文,等待服务器确认。
第二次握手:服务端收到来自客户端的请求报文之后,进行确认,对收到的ACK字段+1也就是X+1,再加上SYN字段一起返回给客户端。
第三次握手:客户端收到SYN_ACK报文段,然后将ACK设置为y+1,然后再次发给服务器端,由此客户端和服务端都进入了ESTABLISHED状态,完成了三次握手。
4)假如在进行三次握手的时候,第三次失败了,此时会发生什么?为什么是四次挥手而不是三次,或者五次
手如果第三次失败了会怎么样:失败了服务端收到不确认包,会超时重发,若还是没有收到确认包,或者收到了数据包,则服务端直接发送reset重置包结束本次连接。
四次挥手之所以结束时需要多一次请求是因为:客户端单方面无数据发送认为可以结束了,但是服务端不一定没有数据发送,所以服务端要将确信信息和自身发起断开分作两步。
5)说一下在浏览器中输入网址之后执行会发生什么?
具体详见:https://juejin.cn/post/6941789039703883783
6)ip到MAC地址是如何转换的,MAC地址到ip呢?
ARP协议和RARP协议。
简单解释一下:
- 每个主机都会存在一个ARP缓冲区,里面存在一个ARP关系列表,主要是IP和MAC地址的对应关系。
- 当源主机需要发送数据的时候,首先会检查自己的ARP列表中是否存在对应的主机的MAC地址,如果有就直接发送数据,如果没有,就向本网段所有的主机发送ARP数据包,该数据包格式为:源主机 IP 地址 源主机MAC地址 目标主机的IP地址。
- 当本网络所有机器收到该ARP包的时候,首先检查对方请求的是不是自己,如果不是则忽略,如果是,则取出数据写入自己的ARP列表,如果列表中已经存在了,则覆盖,然后将自己的MAC地址写到对应的响应包中,返回给源主机。
- 源主机收到响应之后,将目标主机的IP和MAC地址写入ARP列表,并利用此数据发送数据。如果源主机一直没有收到ARP的回复则表示ARP查询失败。
这里需要科普ARP欺骗:
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析ARP的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。
简单来说就是本来应该到网关的包被伪装网管的机器给拦截了。
7)说一下OSI七层模型和TCP/IP四层模型
详情见:https://juejin.cn/post/6941789039703883783#heading-12,https://www.cnblogs.com/BlueTzar/articles/811160.html
8)说一下HTTP协议里面包含了哪些请求?
------------重要------------
- GET:对服务器资源的简单请求
- POST:用于发送包含用户提交数据的请求
------------以及------------
- HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
- PUT:传说中请求文档的一个版本
- DELETE:发出一个删除指定文档的请求
- TRACE:发送一个请求副本,以跟踪其处理进程
- OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
- CONNECT:用于ssl隧道的基于代理的请求
9)说一说Get和Post的区别?
从原理性看:
- 根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的
- 根据HTTP规范,POST请求表示可能修改服务器上资源的请求
从表面上看:
- GET请求的数据会附在URL后面,POST的数据放在HTTP包体
- POST安全性比GET安全性高