Network
面经–牛客,算法半岛
1. OSI开放式互联参考模型有哪些组成?
第一层 物理层
机械、电子、定时接口通信通道上的原始比特流传输,将0101001
等比特数据转换为电流强弱来进行传输(数模转换与模数转换)。
网卡
第二层 数据链路层
物理寻址,同时将原始比特流转换为逻辑传输线路。这一层提供错误检测和纠正,以确保数据传输的可靠性。
交换机
第三层 网络层
将网络地址翻译成对应的物理地址。控制子网的运行,如逻辑编制、分组传输、路由选择。
协议:TCP/IP
路由器
第四层 传输层
传输层解决了传输质量的问题,控制流量、数据包分割等。
协议:TCP、UDP
第五层 会话层
不同机器上的用户之间建立及管理会话。
第六层 表示层
解决不同系统语法通信的问题,加解密、转换翻译、压缩解压缩。
第七层 应用层
协议:HTTP
2. TCP/IP模型有哪些组成?
该模型将OSI中的应用层、表示层、会话层归并到应用层,数据链路层和物理层归并到链路层。
先自上而下,后自下而上处理数据头部。
3. 什么是TCP协议?
TCP是网络传输层协议,是一种面向连接的、可靠传输的、基于字节流的传输协议。
4. 什么是UDP协议?
UDP也是网路传输层协议,是一种无连接的传输协议,提供面向事务的简单不可靠信息传递服务,传输速率相对较快,但不能保证数据可靠性。
5. TCP报文头有哪些组成?
包含源端口和目的端口、Sequence Number(分段标识符)、Acknowledgement Number(确认收到的标识符)
TCP flags:
- URG:紧急指针标志
- ACK:确认序号标志
- PSH:push标志
- RST:重置连接标志
- SYN:同步序号,用于建立连接过程
- FIN:finish标志,用于释放链接
进程间通信必须有唯一标识符,在同一计算机中用PID标识,在不同计算机中用端口标识。
6. UDP报文有哪些组成?
源端口号、目的端口号、目的地址、数据报长度、奇偶校验和、数据等。
7.讲一讲TCP的三次握手
握手是为了建立连接(为了初始化Sequence Number),避免传输的数据包乱序问题,握手成功之后会建立一个全双工通信通道。
- 第一次握手:客户端主动打开请求服务端,服务端被动打开监听LISTEN,客户端进入SYN_SEND状态,等待服务器确认;
- 第二次握手:服务端收到SYN包,回应客户端,如果同意连接就回应ACK确认消息,服务期进入SYN_RECV状态。
- 第三次握手:客户端收到确认信息,向服务端发送ACK确认信息,客户端进入可接受数据状态,服务器确认收到确认信息后也进入可接受数据状态(ESTABLISHED)。
23.在浏览器地址栏输入一个地址,按下回车之后经历的流程
- DNS解析。逐层查询url的DNS缓存,解析出url域名所对应的ip地址,其顺序是:浏览器缓存、系统缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名服务器缓存;
- TCP链接。根据ip地址建立TCP链接,三次握手;
- 发送HTTP请求;
- 服务器处理请求并返回HTTP报文;
- 浏览器收到服务器发送的html文件并渲染到窗口;
- 释放TCP,四次握手。
24.HTTP状态码
- 1XX:指示信息–表示请求已接收,继续处理
- 2XX:成功–表示请求已经被成功接收、理解、处理
- 3XX:重定向–要完成请求必须进行更进一步的操作
- 4XX:客户端错误—请求有语法错误或请求无法实现
- 5XX:服务器端错误–服务器未能实现合法的请求
25.解释一下HTTP 1.0、1.1、2.0各版本的区别
HTTP1.0不支持长连接,1.1以后支持长连接,从头部Keep-Alive可以看到。
HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用persistent connection. 在同一个tcp的连接中可以传送多个HTTP请求和响应. 多个请求和响应可以重叠,多个请求和响应可以同时进行. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).
HTTP2.0多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行;支持request多路复用;新的二进制格式压缩头部。