(5条消息) 校招面试之计算机网络高频面试题_MiracleWK的博客-优快云博客_计算机网络校招题
/四层五层/七层协议
- OSI参考模型(七层模型)

-
五层模型(重要)
其中各层负责的工作如下:
- 应用层:负责实现一切与应用程序相关的功能
- 传输层:提供端到端可靠的传输服务,拥塞控制和流量控制,保证进程之间的通信
- 网络层:数据的路由与转发(整个数据转发路径的选择,下一个站点该到哪),通信子网的拥塞控制,保证主机到主机的通信
- 数据链路层:负责相邻结点(网卡之间)之间的数据传输,提供差错控制,数据校验,流量控制,可靠传输
- 物理层:传输比特流,定义物理设备的标准
-
TCP/IP模型(四层)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bB46uu0I-1645181957449)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207121950902.png)]
DHCP
应用层协议,用于主机动态获取IP地址,基于UDP协议
步骤
- 广播DHCP发现报文,目的是发现DHCP服务器(源地址0.0.0.0,目的地址 255.255.255.255,端口67,UDP)
- 所有DHCP服务器收到发现报文后,都会广播一个DHCP提供报文(目的地址255.255.255.255,因为客户端此时没有IP地址)
- 客户端选择一个DHCP服务器,发送DHCP请求报文
- 服务器返回一个DHCP ACK报文(携带一个分配给客户机的IP地址)
DNS
应用层协议,将域名解析为IP地址,基于UDP
-
浏览器解析地址,抽出主机名(例如,www.google.com),操作系统会先检查自己本地的hosts文件是否有对应映射关系,如果有,就先调用这个IP地址映射,完成域名解析,没有进入下一部
hosts文件位于系统盘C:\Windows\System32\drivers\etc中,hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”
-
浏览器将地址发送给本机运行的DNS客户端,DNS客户端检查缓存,有映射关系返回,没有进入下一步
-
本机DNS向对应的本地DNS服务器发送请求(目的端口号53),本地DNS服务器查看本地数据库,有则返回,没有下一步
-
本地DNS服务器向所有根DNS服务器发送请求,根DNS服务器查看域名的顶级域部分,然后查看本地数据库告诉本地DNS服务器应该去哪个顶级域DNS服务器去查询
-
本地DNS服务器根据顶级域DNS服务器返回的根DNS服务器地址,发送请求过去,随后根DNS服务器查看IP地址,返回报文指出应该去哪个权威DNS服务器查询
-
本地DNS服务器向权威DNS服务器发送请求报文,权威DNS服务器必然可以解析出IP地址,然后返回给本地DNS服务器
-
本地DNS服务器将域名(主机名)与IP地址映射关系存入本地DNS缓存,然后返回给请求域名解析服务的用户主机
-
用户主机将域名(主机名)与IP地址映射关系存入本地DNS缓存,然后使用该IP地址
一次DNS解析过程,至多只需要发送8个UDP报文即可完成查询,总结如下图:
DNS解析服务可以分为递归查询和迭代查询,主机向本地服务器发出的查询是递归查询,本地DNS服务器随后进行的查询是迭代查询
DNS完整解析过程示意图:
TCP三次握手四次挥手
TCP/UDP协议区别
-
报文格式
UDP不保证可靠传输,UDP报文首部仅含有源/目的IP地址,报文长度和校验和等简单数据
-
TCP
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RvjtDMC9-1645181957452)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207154247199.png)]
-
UDP
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RExrou15-1645181957454)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220207154300938.png)]
-
-
报文段长度
- TCP将应用层交付的报文视为无结构的字节流,因此传输数据是分段传送,通过序号来确定顺序
- UDP面向报文,将应用层交付的报文添加首部后直接交付网络层
-
TCP面向连接/UDP无连接
-
TCP提供可靠的数据传输,UDP尽量交付数据
ARP
地址解析协议(ARP,Address Resolution Protocol)
是一个跨越链路层和网络层的协议,ARP分组同时携带链路层地址和网络层地址,是两层沟通的"桥梁";
其特点是请求广播,回答单播
- 检查本地的ARP表,是否存在目的IP地址到目的MAC地址的映射,没有进入下一步
- 发送方构建ARP分组,包含目的MAC地址FF-FF-FF-FF-FF-FF(广播地址)和目的IP地址,发送给子网所有适配器,子网适配器检查自己的IP地址发是否符合目的IP地址,符合的那个适配器发送回答的ARP分组,告知自己的MAC地址,子网没有满足的IP地址则进入下一步(说明目的主机在其它子网中)
- 子网内没有主机回答,则直接去获取子网路由器对应接口的MAC地址,返回给需要的主机
HTTP
(5条消息) HTTP请求、响应报文格式_怀揣梦想,努力前行-优快云博客_响应报文格式
-
请求行
- 请求方法,url,协议和协议版本号
-
请求头
一些key-value,记录一些属性(cookie就是在请求头中)
-
请求正文
- GET请求没有正文
- POST请求会将一些数据上传数据(比如图片)放在正文中
下面为响应报文
-
响应行
- 协议,版本号
- 状态码及其简单的描述
-
响应头
- 一些服务器的基本信息(KEY-VALUE)
-
响应体
-
GET和POST区别
- GET的请求参数在url中,POST的请求参数在请求正文里
-
HTTP和HTTPS区别
- 端口不同
- HTTP明文传输安全性较低,HTTPS基于SSL进行加密
-
SSL协议(HTTPS安全性保障)
cookie
-
为什么要有cookie?
HTTP协议本身是无状态的(即:通过HTTP协议无法判断客户身份,比如是否访问过本站点,访问过服务器端哪些站点),这种设计的目的是为了简化Web服务器的设计,解决这种无状态问题所使用的技术就是cookie技术
-
cookie怎么传输?
在请求头或者响应头中,以文本的形式传输,本身记录的是key-value信息及相关属性,占用请求头或响应头一行
-
cookie原理
- 客户端第一次访问服务器端,服务器端发送一个HttpResponse响应到客户端,除了返回请求的信息外,还包含Set-Cookie的头部行,该行存储cookie信息
- 客户端解析出Set-Cookie信息,浏览器会在其管理的特定cookie文件中添加一行cookie信息,内容来自Set-Cookie
- 客户端再次访问服务器,请求头部会有一行Cookie,包含所有该服务器端曾今通过Set-Cookie设置的cookie信息
-
cookie重要属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOD11Ccv-1645181957456)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220206211004553.png)]
cookie是禁止跨域名获取的,通过Domain属性可以知道cookie是属于哪个主机服务器,为实现禁止网站非法获取其他网站的Cookie提供依据
-
cookie技术的应用 — session的实现基础
实现网站"记住"用户的功能,让服务器端拥有记忆状态的功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3hmWAZKU-1645181957458)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220206211356647.png)]
Session
基于cookie技术实现;
cookie记录在服务器端和客户端,session仅记录在服务器端;
客户端以cookie形式保留sessionID用于找到服务器端的Session对象;
Session中记录了用户的身份信息,登录状态和其它一些通用信息
键入URL后发生什么(超级重要)
以键入 www.google.com为例
-
构建HTTP请求报文
-
DHCP协议获取属于自己的IP地址
-
DNS域名解析获取目的IP地址
www.google.com 并不是一个正确的互联网资源地址,一个完整的url应该是如下的形式:
[传输协议] 😕/ [域名]:[端口号]/[请求路径]/[请求参数],例如
http://www,zhufengpeixun.cn:80/stu/index.html?name=xxx&age=25#teacher
但是按照这个也无法访问到对应的资源,因为域名并不能定位到某台主机,能够定位到主机的唯一方式是IP地址
所以需要DNS协议将域名转化为IP地址,再将上面的地址转化为真正的url,如下的格式
[传输协议] 😕/ [IP地址]:[端口号]/[请求路径]/[请求参数]
其中.com是顶级域
至此获取到源IP地址和目的IP地址
-
封装成TCP报文段(传输层)
将请求信息作为TCP报文的正文段,添加源/目的端口号,序号等其它必备信息;
TCP三次握手和四次挥手过程主要依靠的是TCP报文段的数据
-
封装IP数据报(网络层)
将TCP报文作为数据段,添加IP数据报首部,封装成IP数据报;
由于数据链路层能承载的一个数据单元有最大限制,TCP报文段可能被拆分成多个IP数据报分片(这样IP数据包封装成帧才不至于过大);
首部主要添加的信息包括,生存时间,源/目的IP地址,片偏移(用于组装各个IP数据报分片),标志(判断随后是否还有分片)等
之后应该向下继续封装成帧,需要ARP协议获取目的主机网卡(网络接口适配器)对应的MAC地址
-
ARP获取目的MAC地址
地址解析协议(ARP,Address Resolution Protocol)
-
封装以太网帧(数据链路层)
添加源/目的MAC地址,首部和尾部
-
建立TCP连接,传输数据
-
发送HTTP请求/接收HTTP报文
应用层使用HTTP协议,访问的网页所在的主机的HTTP服务器,返回HTTP响应报文,HTTP请求所需要的数据(比如请求路径,请求参数的等)由浏览器对url解析获得
-
浏览器解析渲染HTTP响应报文