【剑指 Java】第 3 弹:纯干货,计算机网络面试知识点总结

分组在路由器的输入和输出队列中排队等待所需时间,取决于当前网络的通信量;

  1. 处理时延

主机或路由器接收到分组时进行处理所需时间,一般这些处理包括分析首部、从分组中提取数据、进行差错校验或查找适当路由等;

  1. 传输时延

主机或路由器传输数据帧所需时间:

d e l a y = l e n g t h ( b i t ) / v ( b i t / s ) delay = length(bit)/v(bit/s) delay=length(bit)/v(bit/s)

其中 length 表示数据帧的长度,v 表示传输速率;

  1. 传播时延

电磁波在信道中传输所需时间,电磁波传播速度无限接近于光速:

d e l a y = l e n g t h ( m ) / v ( m / s ) delay = length(m)/v(m/s) delay=length(m)/v(m/s)

其中 length 表示信道的长度,v 表示电磁波在信道中的传播速度;

1.4 体系结构

| 体系结构 | 协议 |

| — | — |

| 物理层 | RJ45、CLOCK、IEEE802.3(中继器、集线器) |

| 数据链路 | PPP、FR、HDLC、VLAN、MAC(网桥、交换机) |

| 网络层 | IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器) |

| 传输层 | TCP(HTTP/S、FTP、POP3、SMTP、TENET、SSH)、UDP(BOOTP、NTP、DHCP)、SPX |

| 会话层 | NFS、SQL、NETBIOS、RPC |

| 表示层 | JPEG、MPEG、ASII |

| 应用层 | FTP、DNS、Telenet、SMTP、HTTP、WWW、NFS |

  1. OSI 七层体系结构

为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互联起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1984年形成了开放系统互连参考模型OSI/RM(Open Systems Interconnection Reference Model,简称OSI)的正式文件。

  • 物理层(Physical,PH): 传递信息需要利用一些物理传输媒体,如双绞线、同轴电缆、光纤等。物理层的任务就是为上层提供一个物理的连接,以及该物理连接表现出来的机械、电气、功能和过程特性,实现透明的比特流传输。在这一层,数据还没有组织,仅作为原始的比特流提交给上层——数据链路层。

  • 数据链路层(Data-link,D):数据链路层负责在2个相邻的结点之间的链路上实现无差错的数据帧传输。每一帧包括一定的数据和必要的控制信息,在接收方接收到数据出错时要通知发送方重发,直到这一帧无差错地到达接收结点,数据链路层就是把一条有可能出错的实际链路变成让网络层看起来像不会出错的数据链路。实现的主要功能有:帧的同步、差错控制、流量控制、寻址、帧内定界、透明比特组合传输等。

  • 网络层(Network,N):网络中通信的2个计算机之间可能要经过许多结点和链路,还可能经过几个通信子网。网络层数据传输的单位是分组(Packet)。网络层的主要任务是为要传输的分组选择一条合适的路径,使发送分组能够正确无误地按照给定的目的地址找到目的主机,交付给目的主机的传输层。

  • 传输层(Transport,T):传输层的主要任务是通过通信子网的特性,最佳地利用网络资源,并以可靠与经济的方式为2个端系统的会话层之间建立一条连接通道,以透明地传输报文。传输层向上一层提供一个可靠的端到端的服务,使会话层不知道传输层以下的数据通信的细节。传输层只存在端系统中,传输层以上各层就不再考虑信息传输的问题了。

  • 会话层(Session,S):在会话层以及以上各层中,数据的传输都以报文为单位,会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立以及维护应用之间的通信机制。如服务器验证用户登录便是由会话层完成的。

  • 表示层(Presentation,P):这一层主要解决用户信息的语法表示问题。它将要交换的数据从适合某一用户的抽象语法,转换为适合OSI内部表示使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩、加密和解密等工作都由表示层负责。

  • 应用层(Application,A):这是OSI参考模型的最高层。应用层确定进程之间通信的性质以满足用户的需求,以及提供网络与用户软件之间的接口服务。

  1. 五层协议

我们日常网络中使用的体系结构,总共可以分为 5 层,分别是:

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。

  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。

  • 网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。

  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。

  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

  1. TCP/IP

不严格遵循 OSI 分层概念,只有四层,相当于将五层协议中的数据链路层和物理层合并为网络结构层。

2. 五层协议详解


2.1 物理层

物理层上传送的数据单位是比特,其作用是实现相邻计算机节点间比特流的透明传送,尽可能屏蔽调具体传输介质和屋里设备的差异。根据信息在传输线上的传输方向,可以分为如下三种通信方式:

  • 单工通信:单向传输

  • 半双工通信:双向交替传输

  • 全双工通信:双向同时传输

2.2 链路层

两台主机之间的数据传输,总是在一段一段的链路上进行传送的,此时就需要使用专门的链路层协议。在两个相邻节点间传输数据时,数据链路层将网络层交下来的 IP 数据包组装成帧,在两个相邻节点间的链路上传送帧,每帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

2.3 网络层

互联网的核心,向上提供数据报服务,通过 IP 协议将异构的物理网络连接起来。其任务是选择合适的网间路由和交换节点,从而确保计算机通信的数据及时传送,配套使用的有如下三个协议:

  • 地址解析协议 ARP

  • 网际控制报文协议 ICMP

  • 网际组管理协议 IGMP

2.4 传输层

传输层提供了进程间的逻辑通信,负责向两台主机进程之间的通信提供通用的 数据传输服务,向高层用户屏蔽网络层的核心细节,这一层中主要涉及 UDP 和 TCP 两个协议。

2.5 应用层

应用层的任务是通过应用进程之间的交互来完成特定网络应用,应用层协议定义的是应用进程间的通信和交互的规则。

对于不同的网络应用需要不同的应用层协议,常见的有 DNS、HTTP、SMTP 协议等;

3. HTTP


3.1 HTTP 基础

  1. URI(统一资源标识符)

URI = URL + URN

URL:统一资源 定位 符,标示一个具体的资源位置

URN:统一资源名称

  1. 请求报文

主要由以下三部分构成:

  • 请求行:包括请求方法、URL、协议/版本

  • 请求头Request Header

  • 请求正文

  1. 响应报文

主要由以下三部分构成:

  • 状态行

  • 响应头

  • 响应正文

3.2 HTTP 方法

| 方法 | 说明 |

| — | — |

| GET | 请求指定页面信息,并返回实体主体 |

| POST | 传输实体主体,向指定资源提交数据进行处理请求,数据被包含在请求体中,可能会导致新资源的建立和/或已有资源的修改 |

| PUT | 从客户端向服务器传送的数据取代指定文档的内容,上传文件 ,不带验证机制,存在安全性问题 |

| DELETE | 请求服务器删除指定页面,一般是删除文件 |

| HEAD | 获取报文首部,类似于 GET,但不返回报文实体主体部分,主要用于确认 URL 的有效性以及资源更新时间等 |

| PATCH | 对资源进行部分修改 |

| OPTIONS | 查询支持的方法,查询指定的 URL 能支持的方法,返回 Allow: GET,POST,HEAD,OPTIONS 等内容 |

| CONNECT | 要求在于代理服务器通信时建立隧道,使用 SSL 和 TLS 协议将通信内容加密后经网络隧道传输 |

| TRACE | 追踪路径,服务器将通信路径返回给客户端 |

3.3 HTTP 状态码

服务器返回的响应报文中的第一行是状态行,包含状态码以及原因短语,用于告知客户端请求的结果,主要分为如下类型,常见的状态码如下:

  • 1xx - 信息型:服务器收到请求,需要请求者继续操作;

  • 2xx - 成功型:请求成功收到,理解并处理;

  • 3xx - 重定向:需要进一步操作以完成请求;

  • 4xx - 客户端错误:请求包含语法错误或无法完成请求;

  • 5xx - 服务器错误:服务器在处理请求的过程中发生了错误;

| 状态码 | 状态 | 说明 |

| — | — | — |

| 100 | Continue | 到目前为止很正常,客户端能继续发送请求或忽略该响应 |

| 200 | OK | 表示请求成功 |

| 204 | No Content | 请求已经成功处理,但返回的响应报文不含实体的主体部分,一般只需要从客户端向服务器发送信息,而无需返回数据时使用 |

| 206 | Partial Content | 表示客户端进行范围请求,响应报文包含由 Content-Range 指定范围的实体内容 |

| 301 | Moved Permanently | 永久性重定向 |

| 302 | Found | 临时性重定向 |

| 303 | See Other | 和 302 功能相同,但 303 明确要求客户端应该采用 GET 方法获取资源 |

| 304 | Not Modified | 若请求报文首部包含一些条件,如 If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since,若不满足条件,则服务器返回 304 |

| 307 | Temporary Redirect | 临时重定向,类似于 302,但 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法 |

| 400 | Bad Request | 请求报文中存在语法错误 |

| 401 | Unauthorized | 该状态码表示发送的请求需要有认证信息 |

| 403 | Forbidden | 请求被拒绝 |

| 404 | Not Found | 请求的页面不存在 |

| 500 | Internal Server Error | 服务器正在执行请求时发生错误 |

| 503 | Service Unavailable | 服务器暂时处于超负载或正进行停机维护,现在无法处理请求 |

3.4 HTTP 首部

有 4 中类型的首部字段:

  • 通用首部字段

  • 请求首部字段

  • 响应首部字段

  • 实体首部字段

3.5 GET vs POST

  1. 作用不同

GET 用于获取资源,一般是查询,而 POST 用于传输实体主体,一般是提交;

  1. 参数不同

GETPOST 的请求都能使用额外参数,但 GET 的参数以查询字符串出现在 URL 中,不会对服务器中的内容产生作用,但 POST 的参数存储在实体主体中。但是 POST 的安全性也不能说很高,我们仍然可以用抓包工具来进行查看。另一方面,URL 只支持 ASCII,因此 GET 的参数中若有中文等字符时需要先进行编码,但是 POST 的参数支持标准字符集;

  1. 安全性

GET 方法是安全的,因为它不会改变服务器的状态。但是 POST 非安全,因为 POST 的目的是传送实体主体内容,内容可能是用户上传的表单数据,一旦上传成功,服务器就可能把该数据存入数据库,此时状态也就发生了改变。

安全的方法:GET、HEAD、OPTIONS

不安全的方法:POST、PUT、DELETE

  1. 幂等性

幂等的 HTTP 方法,同样的请求被执行一次和被连续执行多次的效果是一样的,服务器的状态也一样,即幂等的方法不具有副作用,因此所有安全的方法也都是幂等的。

一般来说,GET、HEAD、PUT、DELETE 等方法都是幂等的,但 POST 不是。

  1. 可缓存

若要对响应进行缓存,则应该满足一下条件:

  • 请求报文的 HTTP 方法本身是可缓存的,包括 GET、HEAD,但是 PUT、DELETE 不可缓存,POST 在大多数情况下是不可缓存的;

  • 响应报文的状态码是可缓存的,包括:200、203、204、206、300、301、404、405、410、411、501;

  • 响应报文的 Cache-Control 首部字段未指定则不进行缓存;

4. HTTP 和 HTTPS


4.1 什么是 HTTP/S 协议?

  1. HTTP

HTTP(Hyper Text Transfer Protocol),超文本传输协议,它是从 Web 服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法;

  1. HTTPS

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),以安全为目标的 HTTP 通道,通俗来讲就是 HTTP 的安全版,加入了 SSL/TLS 层,通过 SSL 证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。HTTPS 的安全基础是 SSL,其主要作用有如下两种:

  • 建立一个信息安全通道,来保证数据传输的安全;

  • 确认网站真实性;

4.2 HTTP/S 特点

  1. HTTP
  • HTTP 支持 C/S 模式,是一种 请求/响应模式 的协议;

  • 简单快速:客户向服务器请求服务时,只需要传送请求方法和路径,常用方法有 GET、POST、HEAD

  • 灵活:HTTP 允许传输任意类型的数据对象,传输数据的类型由 Content - Type 来标记;

  • 无连接:限制每次连接只处理一个请求,服务器处理完请求并受到客户的应答后,会断开连接,但是不利于客户端和服务器保持会话连接;

  • 无状态:值协议对于事务处理没有回忆,后续处理如果需要前面的信息,则必须重传;

4.2 HTTP/S 原理

  1. HTTP

HTTP 是 基于 TCP/IP 通信协议来传递数据的协议,传输的数据类型有 HTML 文件、图片文件、查询结果等。此外,HTTP 协议一般用于 B/S 架构,浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务器即 Web 服务器发送所有请求;

  1. HTTPS

如上图,使用 HTTPS 传输数据的流程如下:

  1. 首先客户端通过 URL 访问服务器建立 SSL 连接;

  2. 服务器收到客户端请求后,将网站支持的证书信息(其中包含公钥)传送一份给客户端;

  3. 客户端的服务器开始协商 SSL 连接的安全等级,即信息加密的等级;

  4. 客户端的浏览器根据双方同意的安全等级,建立会话秘钥,然后利用网站的公钥将会话秘钥加密,并传送给网站;

  5. 服务器利用自己的秘钥解密出会话秘钥;

  6. 服务器利用会话秘钥加密与客户端之间的通信;

4.3 HTTP 和 HTTPS 的区别

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-eJkxMuy1-1713544942299)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值