网站首页 > 文章精选 正文
计算机网络体系架构?
- OSI结构:理论上的
- 7应用层:定义了应用进程间通信和交互的规则,常见协议有HTTP、SFTP、DNS、WebSocket
- 6表示层:数据的表示、安全、压缩。确保一个系统的应用层所发消息能被另一个系统的应用层读取。GIF、JEPG
- 5会话层:建立、管理、终止会话,是用户应用程序和网络之间的接口。RPC、SQL
- 4传输层:提供源端和目的端之间提供可靠的透明数据传输,传输层协议为不同主机上运行的进程提供了逻辑通信。TCP、UDP、SSH
- 3网络层:将网络地址翻译成对应的物理地址,实现不同网络之间的路径选择,寻址,路由。ICMP、IGMP、IP等
- 2数据链路层:在物理层提供比特流服务的基础上、建立像零件点之间的数据链路。1物理层:建立、维护、断开物理连接。
- 1物理层:建立、维护、断开物理连接
- TCP/IP结构:实际上的 应用 传输 网络 链路
- 五层结构:为了介绍原理而折中的,在这个基础上层层包装层层拆、
DNS的迭代查询和递归查询?
递归查询举例:
客户端想要解析 www.example.com 的IP地址,发送请求到本地DNS解析器:
- 本地解析器查询根DNS服务器。
- 根DNS服务器返回 .com TLD服务器地址。
- 本地解析器查询 .com TLD服务器
- .com TLD服务器返回 example.com 的权威DNS服务器地址
- 本地解析器查询 example.com 的权威DNS服务器。
- 权威DNS服务器返回 www.example.com 的IP地址。
- 本地解析器将IP地址返回给客户端。
迭代查询举例:
客户端想要解析 www.example.com 的IP地址,依次查询各个DNS服务器:
- 客户端查询本地DNS解析器。
- 本地解析器查询根DNS服务器
- 根DNS服务器返回 .com TLD服务器地址。
- 本地解析器将 .com TLD服务器地址返回给客户端。
- 客户端查询 .com TLD服务器。
- .com TLD服务器返回 example.com 的权威DNS服务器地址。
- 客户端查询 example.com 的权威DNS服务器。
- 权威DNS服务器返回 www.example.com 的IP地址。
- 客户端获取到IP地址。
结论:
递归查询和迭代查询是DNS查询的两种方式,各有优缺点。递归查询对客户端友好,但增加了DNS解析器的负担;迭代查询对解析器负担小,但增加了客户端的复杂性。实际应用中,客户端通常会使用递归查询,通过本地DNS解析器处理大部分的查询过程。
DNS解析过程?
常见端口:
- 21:FTP
- 22:SSH
- 53:DNS解析
- 80:HTTP
- 443:HTTPS
- 1080:sockets
- 3306:mysql
常见状态码:
- 1XX:临时的响应,客户端应继续请求。
- 2XX:请求已成功被服务器接收。
- 3XX:用来重定向。
- 4XX:请求可能出错。
- 5XX:服务器在尝试处理请求时发生了错误。
- 404:表示客户端(如浏览器)请求的资源在服务器上不存在
GET和POST的区别?
- 传参方式不同,一个在URL一个在请求体
- 幂等性
- GET大部分都被CDN缓存起来了
URI 和 URL 有什么区别?
- URI,统一资源标识符(Uniform Resource Identifier, URI)
- URL,统一资源定位符(Uniform Resource Location),它是 URI 的一种子集,主要作用是提供资源的路径。
HTTP 1-3的区别?
1.0:
- 无状态协议
- 非持久连接,可设置Connection:keep-alive强制开启长连接
1.1:
- 持久连接
- 支持在前一个响应到达之前发送下一个
- 队头阻塞问题:如果第一个响应阻塞了,那么即使后面的响应准备好了也发不出去
2.0:
- 采用二进制协议,所以grpc基于2.0的话传递的时候是通过byteArray实现的,以前的是文本
- 多路复用,一个TCP连接上进行多个HTTP请求或者相应,多个请求分解成独立的帧,交错发送,减轻了HTTP 1.x的队头阻塞问题,还是依赖顺序的
- 头部压缩,减少带宽消耗,表示层实现gzip压缩
3.0:
- 3.0 基于 QUIC 协议,Quick UDP Connections
- 真正实现了不同的流之间独立传输,2.0仍然需要保证顺序
- 在传输过程就完成了TLS三次握手
- 如何保证可靠性内置的前向纠错和重传编码:堆原始数据通过特定的编码算法进行编码生成纠错码传输:连同纠错码一起发送解码:接收到数据后解码并纠正,恢复原始数据前向纠错会增加带宽需求,高效的重传才是主要的SACK,快速重传流量控制和拥塞控制
HTTP长连接相关参数:
- keep-alive
- keep-alive timeout
- TCP中也有三个参数,闲置多久之后就会间隔一个时间发送侦测包,发生这么多次没有响应就断开连接
HTTP和HTTPS
- 在HTTP的基础上加入了SSL(安全套接字)/TLS(传输层安全)协议,确保传输过程是加密的。
解决了什么问题:
- 安全问题
TLS握手:
- 客户端相服务器发送ClientHello消息,包括支持的TLS版本、随机数等等
- 服务器回应ServerHello,选择一个客户端提议的版本,并发送数字证书
- 客户端验证证书的合法性,生成一个对话密钥通过公钥加密后发送给服务器
- 服务器私钥解密得到对话密钥
- 加密通信
涉及到了对称加密和非对称加密
- 握手阶段密钥交换就是非对称
- 传输就是对称
TCP的流量控制
- 三次握手协商窗口大小,单位是字节,最大是(2^16-1)<<14有个窗口扩展选项,大概1G
- 会约定每次最多能发多少
- 接收方窗口
发送方窗口
拥塞控制:
- 避免出现拥堵时,发送方的数据填满整个网络
- 发送方维护一个cwnd,发送窗口的值是cwnd和滑动窗口可以接收窗口的min,这里单位是MSS
慢启动:
探测网络拥堵情况,每收到一个ACK,cwnd+1,单位是MSS,呈指数递增
拥塞避免:
- 当cwnd到达慢启动阈值sshresh,进入拥塞避免
- 每收到一个ACK,cwnd=cwnd+1/cwnd,每个RTT就是+1
拥塞发生:
如果是RTO超时重传
- sshresh=cwnd/2
- cwnd=1
- 进去慢启动
如果是快速重传
- cwnd=cwnd/2
- sshresh=cwnd
- 进入快速恢复
快速恢复
- 快速恢复算法认为,还有 3 个重复 ACK 收到,说明网络也没那么糟糕,所以没有必要像 RTO 超时那么强烈。
- cwnd和sshresh已经被更新了
- cwnd=sshresh+3,重传重复的那几个ACK,即丢失的那几个数据包
- 再收到重复的cwnd=cwnd+1
- 新的的话,cwnd=sshresh,再次进入拥塞避免
TCP的超时重传机制?
- RTO,一定时间内没收到ACK,就触发,这个时间有算法
快速重传,发送的数据有序列号,保证有序
在上图,发送方发出了 1,2,3,4,5 份数据:
- 第一份 Seq1 先送到了,于是就 Ack 回 2;
- 结果 Seq2 因为某些原因没收到,Seq3 到达了,于是还是 Ack 回 2;
- 后面的 Seq4 和 Seq5 都到了,但还是 Ack 回 2,因为 Seq2 还是没有收到;
- 发送端收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会在定时器过期之前,重传丢失的 Seq2。
- 最后,收到了 Seq2,此时因为 Seq3,Seq4,Seq5 都收到了,于是 Ack 回 6 。
- SACK,带确认的,ACK是说从左往右第一个开始没数据的空白
D-SACK:告诉发送方哪些报文重复接收了,比如ACK没有到达,发送方重传了
- ACK(Acknowledgment)号在TCP中代表的是接收方期望从发送方接收到的下一个字节的序列号。
- SACK一个代表在快速重传的时候接收到了哪些
- 一个代表了重复接收了哪些,在发送方没有收到ACK的情况重发的情况下
TCP和UDP的区别?
- 可靠性:校验和、序列号、ack,RTO,快速等等
- 传输形式(前者字节流,后者数据段报文)
- 传输效率:UDP不确认,不重传,没有超时,没有序列号,没有流量控制和拥塞控制,但是QUIC实现了
- 所需资源
- 首部字节20-60,UDP8个
- 面向连接
IP协议的定义和作用?
- 定义数据包的格式和处理规则
作用:
- 寻址
- 路由
- 分片和重组
ICMP协议的功能?
- 面向无连接的协议,用于传输出错报告控制信息
- 包括报告错误、状态信息等
- 当遇到IP无法访问,会自动发送ICMP
ping的原理?
- 一个网络工具,主要用来测试网络连接的可达性和延迟。
Ping 的过程主要基于 ICMP(Internet Control Message Protocol,互联网控制消息协议)实现,其基本过程包括:
①、当执行 Ping 命令,如ping javabetter.cn,Ping 首先解析域名获取 IP 地址,然后向目标 IP 发送一个 ICMP Echo Request 消息。
②、当目标 IP 收到 ICMP Echo Request 消息后,它会生成一个 ICMP Echo Reply 消息并返回,即 Ping 响应消息。
③、发起 Ping 命令的设备接收到 ICMP Echo Reply 消息后,计算并显示从发送 Echo Request 到接收到 Echo Reply 的时间(通常称为往返时间 RTT,Round-Trip Time),以及可能的丢包情况。
猜你喜欢
- 2025-04-26 光明时评:回应“315”点名,思维该换换了
- 2025-04-26 要交周报的周五也算周五?
- 2025-04-26 把握细节,写出精彩人生
- 2025-04-26 从舆论传播角度看:互联网黑话泛滥现象
- 2025-04-26 DNS域名解析过程-前端八股文
- 2025-04-26 如何看待现在的Java面试变成八股文?
- 2025-04-26 背完这套 Java 面试八股文,自动解锁面试牛逼症被动技能
- 2025-04-26 阿里高管的讲话风格,就是一篇典型的互联网八股文。说人话...
- 2025-04-26 不要重用在PPT上打胜仗的“伪高管”
- 2025-04-26 这份Java面试八股文让329人成功进入大厂,堪称2021最强
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)