JAVA面试核心知识点(一):计算机网络
一·计算机网络
1.1 网络基础知识
OSI 七层协议(制定标准使用的标准概念框架):
物理层(传递比特流0101)->数据链路层(将比特流转换为逻辑传输线路)->网络层(逻辑编址,分组传输,路由选择)->传输层(传输协议同时进行流量控制)->会话层(自动寻址,建立不同用户之间的会话)->展示层(加密解密,转换翻译,缩解压缩)->应用层
应用层,表示层,会话层(数据),传输层(分段),网络层(分组,数据包),数据链路层(帧),物理层(比特)
OSI实现的TCP/IP的主流协议:
应用层(应用层,表示层,会话层),传输层,网络层,链路层(数据链路层,物理层)
1.2 tcp三次握手
传输控制协议TCP简介:
面向连接的,可靠的,基于字节流的传输层通信协议
将应用层的数据流分割成报文段并发送给目标节点的TCP层
数据包都有序号,对方收到则发送ACK确认,未收到则重传
使用校验和来检验数据再传输过程中谁否有误
TCP flags:
URG:紧急指针
ACK:确认标识
PSH:push
RST:重置链接
SYN:同步序号,建立链接
FIN:finsh标识,释放链接
额外:
单工通信:指消息只能单方向传输的工作方式,只占用一个信道。
半双工通信:指通信双方都能收发信息,但不能同时进行收和发的工作方式
全双工通信:指通信双方可同时进行收发消息的工作方式
tcp三次握手流程:
第一次握手: 建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
1.3 tcp四次挥手
tcp四次挥手流程:
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送
Client进入FIN_WAIT_1状态
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为
收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,
Server进入LAST_ACK状态
第四次挥手:Client收到FIN后,Clinet进入TIME_WAIT状态,接着发送一个ACK给
Server,确认序号为收到序号+1,Server进入CLOSE状态,完成四次挥手。
为什么需要四次挥手呢?
因为全双工通信,发送方和接受放都需要确认FIN报文和ACK报文。
1.4 tcp和udp的区别(传输层协议)
传输控制协议UDP简介:
面向非链接
不维护链接状态,支持同时向多个客户端传输相同的消息
数据包报头只有8个字节,额外开销较小
吞吐率只受限于数据生成速率,传输速率以及机器性能
尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表
面向报文,不对应用程序提交的报文信息进行拆分或者合并
区别:
面向链接 vs 无连接
可靠性
有序性
速度
量级
1.5 tcp的滑动窗口
RTT和RTO
RTT:发送一个数据包到收到对应的ACK所花费的时间
RTO:重传时间间隔
TCP使用滑动窗口做流量控制与乱序冲重排
保证TCP的可靠性
保证TCP的流控特性
1.5 http相关(应用层协议)
超文本传输协议HTTP主要特点:
支持客户/服务器模式
简单快速
灵活(允许传输任何类型的数据对象)
无连接
无状态
请求/响应步骤
客户端连接到web服务器
发送HTTP请求
服务器接受请求并返回HTTP响应
释放链接TCP链接
客户端浏览器解析HTML内容
相关面试题:
1.在浏览器地址键入URL,按下回车之后经历的流程
DNS解析
TCP链接
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束
2.HTTP状态码
1xx:指示信息--表示请求已接受,继续处理
2xx:成功--标识请求已被成功接收,理解,接受
3xx:重定向--要完成请求必须进项更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务端未能实现合法的请求
3.常见的状态码
200 OK:正常返回信息
400 Bad Request:客户端请求由于发错误,不能被服务器理解
401 Unauthorized:请求未授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden:服务器收到请求,但是拒绝提供服务
404 Not Found:请求资源不存在,eg,输入了错误的URL
500 Internal Server Error:服务器发生了不可预期的错误
503 Server Unavaliable:服务器当前不能处理客户端请求,一段时间后可能恢复正常
4.GET请求和POST请求的区别
HTTP报文层面:GET将请求信息放在URL,POST放在报文体中
数据库层面:GET符合幂等性和安全性,POST不符合
其他层面:GET可以被缓存,被储存,POST不行
5.Cookie和Session的区别
Cookie简介:
是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
客户端再次请求的时候,会把Cookie回发
服务器接收到后,会解析Cookie生成与客户端相对应的内容
Cookie的设置以及发送
1. Client发动一个HHTP Request到Server
2. Server发送一个HTTP Response + Set-Cookie到Client
3. Client发送一个HTTP Requset + Cookie到server
4. Servre发送一个HHTP Response到Client
Session简介
服务器端的机制,在服务器上保存的信息
解析客户端请求并操作session id,按需保存状态信息
Session的实现方式
使用Cookie来实现
使用URL回写来实现
Cookie和Session的区别
Cookie数据存放在客户的浏览器上,Session数据放在服务器上
Session相对于Cookie更安全
若考虑减轻服务器负担,应当使用Cookie
1.6 http和https的区别
SSL(Security Sockets Layer,安全套接层)
为网络通信提供安全及数据完整性的一种安全协议
是操作系统对外的API,SSL3.0后更名为TLS
采用身份验证和数据加密保证网络通信的安全和数据的完整性
HTTPS数据传输流程
浏览器将支持的加密算法信息发送给服务器
服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
浏览器解密响应消息,并对消息进行验真,之后进行加密交互数据
HTTP和HTTPS的区别
HHTPS需要到CA申请证书,HTTP不需要
HTTPS密文传输,HTTP明文传输
连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
HTTPS=HTTP+加密+认证+完整性保护,比HTTP更加安全
1.7 socket相关
Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口。
JAVA面试核心知识点(一):计算机网络的更多相关文章
- JAVA面试核心教程|Java面试基础知识点总结
Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么? byte——1 byte——Byte short——2 bytes——Short int——4 bytes——Integer lon ...
- java面试欠缺知识点总结
针对最近面试被问到的问题,总结自己欠缺的知识点,并要在接下来的1年内加强这些知识: Java方面:反射.线程concurrent包: Spring方面:Ioc和Aop.事务: 持久化框架:设计并实现分 ...
- 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理
前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...
- Java面试常见知识点总结(一)
1.sleep()和wait(): Java中的多线程是一种抢占式的机制,而不是分时机制.抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行. ● 共同点: (1) 他们都是在多 ...
- Java 生态核心知识点整理
又到了求职的金三银四的黄金月份,我相信有不少小伙伴已经摩拳擦掌的准备寻找下一份工作. 就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句 ...
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- Java面试常见知识点总结(二)
11.构造方法(构造器): 构造方法是一种特殊的方法,具有以下特点. (1) 构造方法的方法名必须与类名相同. (2) 构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类 ...
- java面试核心基础(1)
1.以下代码的执行结果 String s1 = "helloworld"; String s2 = "hello" + new Stirng("wor ...
- 高级 Java 面试通关知识点整理!
1.常用设计模式 单例模式:懒汉式.饿汉式.双重校验锁.静态加载,内部类加载.枚举类加载.保证一个类仅有一个实例,并提供一个访问它的全局访问点. 代理模式:动态代理和静态代理,什么时候使用动态代理. ...
随机推荐
- JPG学习笔记3(附完整代码)
#topics h2 { background: rgba(43, 102, 149, 1); border-radius: 6px; box-shadow: 0 0 1px rgba(95, 90, ...
- Vue & Sentry sourcemaps All In One
Vue & Sentry sourcemaps All In One vue & sentry & sourcemaps https://docs.sentry.io/plat ...
- 中英文混排网站排版指南 All In One
中英文混排网站排版指南 All In One 排版 数字与单位 正确 5G 的下载速度可以达到 1Gbps,4G 为100Mbps 1Gbps === 1000Mbps 错误 5G的下载速度可以达到1 ...
- Gatsby Themes
Gatsby Themes React & SSR gatsby-config.js refs https://www.gatsbyjs.com/docs/themes/ https://ww ...
- Kotlin & Android & Swift & Flutter & React Native
Kotlin & Android https://www.runoob.com/kotlin/kotlin-tutorial.html Swift 5 & iOS 12 https:/ ...
- Dart All In One
Dart All In One dart & flutter https://github.com/dart-lang https://github.com/dart-lang/sdk win ...
- html tag filter in js
html tag filter in js const html = `可当天预订,必须21时15分之前下单,要求必须<font color=green><b>60</b ...
- js form.onformData事件
在表单提交前修改数据,此事件在submit之后 f1.addEventListener("formdata", (e) => { e.formData.append(&quo ...
- NGK.IO新一代高倍币BGV即将登陆交易所
据悉NGK.IO新一代高倍币BGV已与全球前十大交易所进行深度恰谈,预计在不久的将来会完成上线计划.此次BGV的上线战略布局,将进一步扩大BGV生态,赋予BGV更多的便利性和发展空间.除此之外,NGK ...
- WebRTC 系列之音频会话管理
WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的 API.W3C 和 IETF 在2021年1月26日共同宣布 WebRTC 1. ...