java面试Java后端开发岗面试中计算机网络相关的常见问题
Posted 棉花糖灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试Java后端开发岗面试中计算机网络相关的常见问题相关的知识,希望对你有一定的参考价值。
1. OSI(开放系统互联)参考模型
- 物理层:在物理媒体上为数据端设备透明的传输原始比特流。传输单位是比特
- 数据链路层:成帧、差错控制、流量控制和传输管理。传输单位是帧
- 网络层:对分组进行路由选择,并进行流量控制、拥塞控制、差错控制和网际互连。传输单位是数据报,即分组
- 运输层:为端到端的连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理。传输单位是报文段(TCP)或用户数据报(UDP)
- 会话层:建立同步
- 表示层:数据压缩、加密、解密、数据的格式转化
- 应用层:为特定类型的网络应用提供访问OSI环境的手段
2. TCP/IP模型
- 网络接口层:对应OSI中物理层和数据链路层
- 网际层:
- 传输层:
- 应用层:对应OSI中会话层、表示层和应用层
3. 五层网络模型
也可以分为:物理层、数据链路层、网络层、传输层和应用层。即把TCP/IP模型中的网络接口层分为物理层和数据链路层, 数据链路层又可以分为介质访问控制(MAC)子层和逻辑链路控制(LLC)子层。
5层模型只出现在计算机网络学习教学过程中,既综合了OSI和TCP/IP 体系结构的优点,这样既简洁又能将概念阐述清楚。
4. 网络设备
- 中继器:又称转发器,原理是信号再生,扩大网络传输距离,不存储,不检错,工作在物理层
- 集线器:一个多端口的中继器,工作在物理层
- 网桥:处理对象是帧,存储并转发帧并进行路径选择,可以隔离冲突域,但不能隔离广播域,工作在数据链路层的MAC子层
- 交换机:多端口的网桥,工作在数据链路层
- 路由器:完成路由选择和分组转发,可以隔离冲突与和广播域,实现了网络模型的物理层、数据链路层和网络层,工作在网络层
- 网关:
5. 网络协议
CSMA/CD协议
两种广域网数据链路层控制协议:
PPP(点对点)协议:面向字节
HDLC(高级数据链路控制)协议:面向比特
4. 网络层
IP协议
ARP(地址解析)协议:解决同一局域网上从IP地址到硬件地址的映射问题
DHCP(动态主机配置)协议:给主机动态的分配IP地址,基于UPD
ICMP(网际控制报文)协议:允许主机或路由器报告差错和异常情况,分为ICMP差错报文和ICMP询问报文,可当做IP数据报的数据部分发送
RIP(路由信息)协议:分布式的基于距离向量的路由选择协议
OSPF(开放最短路径优先)协议:
BGP(边界网关)协议:采用的是路径向量路由选择协议,基于TCP
5. 传输层
UDP协议:在IP数据报基础上增加了复用、分用和差错检测,无需建立连接,面向报文的,不可靠传输,首部8字节
TCP协议:面向连接,提供全双工通信,首部20字节
TCP三次握手
- 客户端的TCP向服务器的TCP发送一个连接请求报文
- 服务器的TCP收到连接请求报文后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量
- 客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量
TCP四次挥手
参与TCP连接的两个进程中的任何一个都可以终止该连接
- 客户机打算关闭连接,就向其TCP发送一个连接释放报文段,并停止再发送数据,主动关闭TCP连接
- 服务器收到连接释放报文段后发出确认,此时客户端到服务器方向的连接就释放了
- 若服务器没有要向客户机发送的数据,就通知TCP释放连接,发出连接释放报文段
- 客户机收到连接释放报文段后,必须发出确认,此时连接全关闭
6. 应用层
FTP(文件传输)协议:允许客户指明文件的类型与格式,并允许文件具有存取权限,基于TCP
SMTP(简单邮件传输)协议:基于TCP
POP3(邮局)协议:邮件读取协议,基于TCP
HTTP(超文本传输)协议:浏览器怎么向万维网请求文档,以及服务器怎么把文档传给浏览器。基于TCP协议
7. 其他
(1) HTTP 与 HTTPS 的区别
HTTP 默认工作在 TCP 协议 80 端口 , HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息 。
HTTPS 默认工作在 TCP 协议443端口, HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
(2) http请求的全过程:
1) 浏览器根据域名解析IP地址
- 浏览器缓存:首先搜索浏览器自身的DNS缓存
- 系统缓存:再搜索操作系统自身的DNS缓存
- 路由器缓存:然后向路由器发送查询请求
- ISP(互联网服务提供商) DNS缓存:最后要查的就是ISP缓存DNS的服务器。
2) 浏览器与WEB服务器建立一个TCP连接
TCP的3次握手
3) 浏览器给WEB服务器发送一个HTTP请求
一个HTTP请求报文由请求行、请求头、空行和请求体4个部分组成
- 请求行: 请求行分为三个部分:请求方法、请求地址URL和HTTP协议版本,它们之间用空格分割
- 请求头: 请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔
- 空行:表示请求头部结束
- 请求体: 请求数据不在GET方法中使用,而在POST方法中使用。
4) 服务器端响应HTTP请求,浏览器得到html代码
HTTP响应报文由状态行、响应头、空行和响应体4个部分组成。
- 状态行: 状态行由3部分组成,分别为:协议版本、状态码、状态码扫描。
- 响应头:
- 空行:表示响应头部结束
- 响应体: 用于存放需要返回给客户端的数据信息。
5) 浏览器解析HTML代码,并请求HTML代码中的资源
浏览器拿到HTML文件后,开始解析HTML代码,遇到静态资源时,就向服务器端去请求下载。
6) 关闭TCP连接,浏览器对页面进行渲染呈现给用户
浏览器利用自己内部的工作机制,把请求到的静态资源和HTML代码进行渲染,呈现给用户。
以上是关于java面试Java后端开发岗面试中计算机网络相关的常见问题的主要内容,如果未能解决你的问题,请参考以下文章