当前位置: 首页 > news >正文

图解网络-小林coding笔记(持续更新)

大纲

计算机网络
基础
HTTP
HTTP基本概念
GET与POST
HTTP特性
HTTP缓存技术
HTTP与HTTPS
HTTP演变
TCP
TCP基本认识
TCP连接建立
TCP连接断开
Socket编程
UDP
IP
IP基本认识
IP地址的基础知识
IP协议相关技术
网络安全

基础

TCP/IP网络模型有哪几层?

TCP/IP网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。

  • 应用层:负责向用户提供一组应用程序,比如HTTP、DNS、FTP等;
  • 传输层:负责端到端的通信,比如TCP、UDP等;
  • 网络层:负责网络包的封装、分片、路由、转发,比如IP、ICMP等;
  • 网络接口层:负责网络包在物理网络中的传输,比如网络包的封帧、MAC寻址、差错检测,以及通过网卡传输网络帧等。

不过,我们常说的七层和四层负载均衡,是用OSI网络模型来描述的,七层对应的是应用层,四层对应的传输层。

键入网址到网页显示,期间发生了什么?

Linux系统是如何收发网络包的?

一、HTTP

HTTP 常见面试题

HTTP基本概念
HTTP 是什么?

HTTP是超文本传输协议,是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超⽂本」数据的「约定和规范」。

HTTP常见的状态码有哪些?

1xx 类状态码属于提示信息,是协议处理中的⼀种中间状态,实际⽤到的⽐较少。
2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。

  • 200 OK」是最常⻅的成功状态码,表示⼀切正常。如果是⾮ HEAD 请求,服务器返回的响应头都会有 body 数据。
  • 204 No Content」也是常⻅的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
  • 206 Partial Content」是应⽤于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,⽽是其中的⼀部分,也是服务器处理成功的状态。

3xx 类状态码表示客户端请求的资源发⽣了变动,需要客户端⽤新的 URL 重新发送请求获取资源,也就是重定向

  • 301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改⽤新的 URL 再次访问。
  • 302 Found」表示临时重定向,说明请求的资源还在,但暂时需要⽤另⼀个 URL 来访问。

301 和 302 都会在响应头⾥使⽤字段Location,指明后续要跳转的 URL,浏览器会⾃动重定向新的URL。

  • 304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲⽂件,也称缓存重定向,也就是告诉客户端可以继续使⽤缓存资源,⽤于缓存控制。

4xx 类状态码表示客户端发送的报⽂有误,服务器⽆法处理,也就是错误码的含义。

  • 400 Bad Request」表示客户端请求的报⽂有错误,但只是个笼统的错误。
  • 403 Forbidden」表示服务器禁⽌访问资源,并不是客户端的请求出错。
  • 404 Not Found」表示请求的资源在服务器上不存在或未找到,所以⽆法提供给客户端。

5xx 类状态码表示客户端请求报⽂正确,但是服务器处理时内部发⽣了错误,属于服务器端的错误码。

  • 500 Internal Server Error」与 400 类型,是个笼统通⽤的错误码,服务器发⽣了什么错误,我们并不知道。
  • 501 Not Implemented」表示客户端请求的功能还不⽀持,类似“即将开业,敬请期待”的意思。
  • 502 Bad Gateway」通常是服务器作为⽹关或代理时返回的错误码,表示服务器⾃身⼯作正常,访问后端服务器发⽣了错误。
  • 503 Service Unavailable」表示服务器当前很忙,暂时⽆法响应客户端,类似“⽹络服务正忙,请稍后重试”的意思。
HTTP常见字段有哪些?

Host字段:客户端发送请求时,⽤来指定服务器的域名。
Connection字段:Connection 字段最常⽤于客户端要求服务器使⽤「HTTP ⻓连接」机制,以便其他请求复⽤。
Content-Length字段:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度。
Content-Type字段:⽤于服务器回应时,告诉客户端,本次数据是什么格式。
Content-Encoding字段:说明数据的压缩⽅法。
Accept-Encoding字段:客户端在请求时,⽤该字段说明⾃⼰可以接受哪些压缩⽅法。

GET与POST
GET和POST有什么区别?

GET 的语义是请求获取指定的资源。 GET ⽅法是安全、幂等、可被缓存的。
POST 的语义是根据请求负荷(报⽂主体)对指定的资源做出处理,具体的处理⽅式视资源类型⽽不同。POST 不安全,不幂等,(⼤部分实现)不可缓存。

HTTP缓存技术
HTTP缓存有哪些实现方式?

对于⼀些具有重复性的 HTTP 请求,⽐如每次请求得到的数据都⼀样的,我们可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过⽹络获取服务器的响应了,这样的话HTTP/1.1 的性能肯定⾁眼可⻅的提升。
HTTP 缓存有两种实现⽅式,分别是强制缓存和协商缓存

什么是强制缓存?

强缓存指的是只要浏览器判断缓存没有过期,则直接使⽤浏览器的本地缓存,决定是否使⽤缓存的主动性在于浏览器这边。

强缓存是利⽤下⾯这两个 HTTP 响应头部(Response Header)字段实现的,它们都⽤来表示资源在客户端缓存的有效期:

  • Cache-Control,是一个相对时间;
  • Expires,是一个绝对时间。

如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话, Cache-Control 的优先级⾼于 Expires

Cache-control 选项更多⼀些,设置更加精细,所以建议使⽤ Cache-Control 来实现强缓存。具体的实现流程如下:

  • 当浏览器第一次请求访问服务器资源时,服务器会在返回这个资源的同时,在Response头部加上Cache-Control,并在Cache-Control中设置了过期时间大小;
  • 浏览器再次请求访问服务器中的该资源时,会先通过请求资源的时间与Cache-Control中设置的过期时间大小,来计算出该资源是否过期,如果没有,则使用该缓存,否则重新请求服务器;
  • 服务器再次收到请求后,会再次更新Response头部的Cache-Control。
什么是协商缓存?

当我们在浏览器使⽤开发者⼯具的时候,你可能会看到过某些请求的响应码是304,这个是告诉浏览器可以使⽤本地缓存的资源,通常这种通过服务端告知客户端是否可以使⽤缓存的⽅式被称为协商缓存。
协商缓存就是与服务端协商之后,通过协商结果来判断是否使用使用本地缓存。

协商缓存可以基于两种头部来实现。
第一种:请求头部中的If-Modified-Since字段与响应头部中的Last-Modified字段实现,这两个字段的意思是:

HTTP特性
HTTP与HTTPS
HTTP/1.1、HTTP/2、HTTP/3演变

HTTP/1.1 如何优化?

如何避免发送HTTP请求?
如何减少HTTP请求次数?
如何减少HTTP响应的数据大小?

HTTPS RSA 握手解析

TLS握手过程
RSA握手过程
RSA算法的缺陷

HTTPS ECDHE握手解析

HTTPS如何优化?

HTTP/2 牛逼在哪?

HTTP/3强势来袭

既然有HTTP协议,为什么还要有RPC?

既然有HTTP协议,为什么还要有WebSocket?

二、TCP

TCP三次握手与四次挥手面试题

TCP重传、滑动窗口、流量控制、拥塞控制

TCP实战抓包分析

TCP半连接队列和全连接队列

如何优化TCP?

如何理解是TCP面向字节流协议?

为什么TCP每次建立连接时,初始化序列号都要不一样呢?

SYN报文什么时候情况下会被丢弃?

已建立连接的TCP,收到SYN会发生什么?

四次挥手中收到序的FIN包会如何处理?

在TIME_WAIT状态的TCP连接,收到SYN后会发生什么?

TCP连接,一端断电和进程崩溃有什么区别?

拔掉网线后,原本的TCP连接还存在吗?

tcp_tw_reuse 为什么默认是关闭的?

HTTPS 中 TLS 和 TCP 能同时握手吗?

TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?

TCP协议有什么缺陷?

如何基于UDP协议实现可靠传输?

服务端没有isten,客户端发起连接建立,会发生什么?

用了TCP协议,数据一定不会丢吗?

TCP四次挥手,可以变成三次吗?

TCP序列号和确认号是如何变化的?

三、IP

IP基础知识全家桶

ping 的工作原理

断网了,还能ping通127.0.0.1吗?

四、网络安全

说说有哪些安全攻击?

DNS 劫持了解吗?

什么是 CSRF 攻击?如何避免?

什么是 DoS、DDoS、DRDoS 攻击?

什么是 XSS 攻击,如何避免?

对称加密与非对称加密有什么区别?

RSA 和 AES 算法有什么区别?

资料

  • 小林图解网络
  • 二哥的Java进阶之路:面渣逆袭-计算机网络
  • JavaGuide-计算机网络常见面试题总结
http://www.dtcms.com/a/299496.html

相关文章:

  • 【2025最新】浏览器插件开发选型建议:WXT、Plasmo、原生TS/JS
  • 融合为体,AI为用:数据库在智能时代的破局之道
  • Maven之依赖管理
  • 《Java 程序设计》第 6 章 - 字符串
  • 智慧城市多目标追踪精度↑32%:陌讯动态融合算法实战解析
  • 【Canvas与旗帜】条纹版大明三辰旗
  • 神经网络中的反向传播原理:驱动智能的核心引擎
  • k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库
  • 电子电气架构 --- 高阶智能驾驶对E/E架构的新要求
  • Java操作Excel文档
  • Spring的深入浅出(6)--使用AOP的思想改造转账案例
  • 人形机器人指南(八)操作
  • 手动开发一个串口调试工具(二):Qt 串口类基本认识与使用
  • 基于 ThinkPHP 开发的垂直化网址导航
  • Linux进程地址空间:深入探索其结构与机制
  • 元宇宙新基建:重塑数字市场的“超大陆”边界
  • 【Android】内容提供器
  • 7️⃣ 递归函数
  • 【AcWing 835题解】滑动窗口
  • 数据结构 双向链表
  • greenhills编译出错问题
  • C++学习之深入学习模板(进阶)
  • SAPUI5 树形表格TreeTable示例
  • Spring AI(14)——文本分块优化
  • java之23种设计模式
  • 设计模式:Memento 模式详解
  • 简单实现支付密码的页面及输入效果
  • 面条式代码(Spaghetti Code)
  • Java高级之基于Java Attach与Byte-Buddy实现SQL语句增强
  • JWT安全机制与最佳实践详解