面试准备——计网中的高频面试题
-
- 输入一个url到显示页面的过程
- 在这个过程中使用了那些协议
- TCP的三次握手和四次挥手
- TCP和UDP协议的区别
- UDP的不可靠和效率高的原因
- TCP如何保证传输可靠
- 滑动窗口和流量控制
- 拥塞控制
- TCP采用的拥塞控制算法
- TCP的time_wait
- TCP超时重传,会一直传吗。详细说说
- HTTP的构成
- HTTP请求头
- HTTP响应头
- HTTP状态码
- HTTP的长连接和短连接
- HTTP不保存状态的协议,如何保存用户状态
- Cookie的作用以及和Session的区别
- HTTP1.0,HTTP1.1和HTTP2.0的区别
- HTTP和HTTPS的区别
- 如何判断一个长连接已经结束了?
- HTTPS的过程
- HTTP常用方法
- get和post的区别
- 如何保证网站的可用性
- 每层有哪些协议,路由器,交换机分别在那一层?
- DNS解析过程
输入一个url到显示页面的过程
- 1、输入网址
- 2、DNS解析
- 3、三次握手建立可靠的TCP连接
- 4、客户端发送HTTP请求
- 5、服务器处理请求
- 6、服务器响应请求返回HTTP报文
- 7、浏览器解析渲染页面
DNS的查询是一个递归的过程,首先在本地域名服务器中查找,如果没找到,就到根域名服务器进行请求,根域名系统不存在。本地域名系统就向com顶级域名系统发送请求。
但是在进行这个查找过程前,DNS会先在浏览器缓存,系统缓存,路由器缓存等去查找。
在这个过程中使用了那些协议
- 应用层:
DNS协议,查找对应的域名IP
HTTP,超文本传输协议,在TCP建立连接以后就使用HTTP协议访问网页 - 传输控制层
TCP协议通过三次握手,建立可靠的传输协议. - 网络层:
IP协议:建立TCP协议时,需要发送数据,发送数据在网络层使用IP协议 - 数据链路层:
ARP:地址解析协议
RARP:逆向地址解析协议
在路由器上IP数据报的发送使用的是OPSF协议
TCP的三次握手和四次挥手
- 三次握手过程
- 首先,客户端发送一个SYN标志数据包给服务端进行第一次握手。
- 服务端返回一个SYN+ACK标志的数据包给客户端进行第二次握手。
- 最后客户端返回一个ACK标志数据报给服务端。建立可靠连接
- 为什么进行三次握手,进行两次可以吗?.
答:进行两次是不可以的。进行三次的目的是为了建立可靠的连接,三次连接的建立可以使服务端,客户端都确认自己的发送和接收是正常的。而如果只进行两次,缺少最后的客户端返回ACK标志的数据包给服务端,服务端就不知道自己的接收是否正常。
- 四次挥手的过程
客户端
发送一个FIN,用于关闭客户端到服务端的数据传送服务端
收到FIN,回复一个ACK,告诉客户端我知道了(确认序号为收到序号+1。)服务端关闭了了客户端的连接后
,发给一个FIN给客户端客户端
发送ACK报文确认
- 为什么要四次挥手
首先各端发出第一个通知的时候,都进入的是半关闭状态,防止还有数据漏发。然后收到对方的确认以后在进行断开连接。
TCP和UDP协议的区别
TCP是面向连接的可靠连接。而UDP是不面向连接的不可靠连接。
TCP采用的是字节流进行传输,而UDP是采用数据报文进行传输。
由于TCP的需要保证可靠,因此传输效率慢,需要资源多。而UDP则更快,需要资源更少。
TCP的首部是20-60个字节而UDP是8个字节
UDP的不可靠和效率高的原因
UDP传输之前不需要建立连接,远程主机收到UDP报文以后,不需要进行任何确认。但是UDP即时通讯中作用很大特别是不在意丢包率的场景中。
TCP如何保证传输可靠
- TCP会将其分成适合发送的大小的数据块。并且每次发包都要进行编号,因此在上传给应用程时也是传输的有序的数据。
- TCP会在端到端的过程中检验首部和数据。如果发生缺失,就会丢弃和不确认收到了这个报文段。发送端没收到接收端的接收确认信息就会重新发。
- 流量控制:TCP传输的每一个端都有固定大小的缓冲空间,保证及时接收数据。当接收方不能及时处理的时候就会提示发送端降低发送速率,防止丢包。TCP是使用可变大小的滑动窗口实现的流量控制。
- 拥塞控制:发送方发完一个就等待接收方的确认消息,收到了才会继续,否则进行重传。
- 超时重传,发送到不仅没有收到确认消息会重传,在定时器超过时间也会自行传输。
滑动窗口和流量控制
TCP利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方的报文字段可以用来控制发送方窗口的大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。
拥塞控制
拥塞控制是为了防止数据过多的注入网络当