Java 3.1 - 计算机网络

目录

OSI 七层协议是什么?每一层的作用是什么?

TCP / IP 四层模型是什么?每一层的作用是什么?

应用层(Application Layer)

传输层(Transport Layer)

网络层(Network Layer)

网络接口层(Network Interface Layer)

为什么网络需要进行分层?

TCP 和 UDP 之间的区别?

什么时候选择 TCP 什么时候选择 UDP?

使用 TCP 的协议有哪些?使用 UDP 的有哪些?

TCP 三次握手和四次挥手(非常重要!)

为什么要进行三次握手?

第二次握手传回了 ACK,为什么还要传回 SYN?

三次握手过程中可以携带数据吗?

断开连接 - TCP 四次挥手

为什么需要四次挥手?

为什么不能把服务端发送的 ACK 和 FIN 合并起来变成三次挥手?

如果第二次挥手时服务端的 ACK 没有送达客户端会怎么样?

为什么第四次挥手客户端需要等待 2 * MSL(报文段最长寿命)时间后才能进入 CLOSED 状态?

TCP 如何保证传输的可靠性?(重要)

TCP 如何实现流量控制?

TCP 的拥塞控制是怎么实现的?

ARQ 协议了解吗?

停止等待 ARQ 协议

连续 ARQ 协议

超时重传如何实现?超时重传时间如何确定?

从输入 URL 到页面展示发生了什么事情?(重要!)

HTTP 状态码有哪些?

HTTP 和 HTTPS 有什么区别?(重要!)

HTTP 1.0 和 HTTP 1.1 有什么区别?

HTTP 是不保存状态的协议,如何保存用户状态?

Session 机制

如果 Cookie 被禁用怎么办?

URI 和 URL 的区别是什么?


OSI 七层协议是什么?每一层的作用是什么?

OSI 七层模型 是国际标准化组织提出的一个网络分层模型,其大体结构以及每一层提供的功能如下图所示:

每一层专注于一件事件,并且每一层都需要使用下一层提供的功能,比如传输层需要使用网络层提供的路由和寻址功能,这样传输层才知道把数据传输到哪里去。

OSI 七层体系结构概念清晰,理论完整,但层数过多过于复杂且不实用,而且有些功能在多个层中重复出现。

OSI 七层模型一直被大公司甚至政府支持,但最终失败!原因有如下:

1、OSI 专家缺乏实际经验,他们在完成 OSI 标准时缺乏商业驱动力

2、OSI 协议实现过于复杂,运行效率低

3、OSI 指定标准的周期太长,因而使得按照 OSI 标准生成的设备无法及时进入市场(TCP / IP 已经提前抢占市场了)

4、层次划分不合理,相同功能在多个层中出现

TCP / IP 四层模型是什么?每一层的作用是什么?

TCP / IP 模型分为四层:

1、应用层

2、传输层

3、网络层

4、网络接口层(数据链路层 物理层)

应用层(Application Layer)

应用层位于传输层之上,它的作用是终端之间应用程序之间的信息通信,它定义了信息交换的格式,消息会交给下一层传输层来传输。应用层交互的数据单元为报文。

应用层协议定义了网络通信规则,对于不同的网络应用需要使用不同的应用层协议。例如支持 Web 应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。

传输层(Transport Layer)

传输层的主要任务是负责两台终端设备之间的通信。应用程序利用该服务传送应用层报文。

传输层主要使用以下两种协议:

1、传输控制协议 TCP(Transmission Control Protocol) -- 提供 面向连接的可靠的数据传输服务。

2、用户数据协议 UDP(User Datagram Protocol) -- 提供 无连接的,尽最大努力的数据传输服务(不保证可靠性)。

网络层(Network Layer)

网络层负责在分组交换网络中的不同主机之间提供通信服务,它还有一个任务就是选择合适的路由,使得传输层传下来的分组可以通过网络层找到目的主机。

在 TCP / IP 体系结构中,网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。

互联网是通过大量的异构网络和路由器进行连接的,互联网使用的网络层协议是无连接的网际协议和许多路由选择协议,因此互联网的网络层也被叫做网际层或 IP 层。

网络层常见协议:

1、IP(网际协议):TCP / IP 协议中最重要的协议之一,网络层最重要的协议之一,IP 协议的作用包括寻址、定义数据包格式等。包括 IPv4 和 IPv6,这两种协议同时使用。

2、ARP 协议:全称地址解析协议,解决网络层和链路层地址之间的转换问题,IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 解决了 IP 转 MAC 的一些问题。

网络接口层(Network Interface Layer)

数据链路层 和 物理层 的集合

1、数据链路层的作用是将网络层的 IP 数据包组装成帧,在两个相邻节点之间的链路上传递帧。帧包括数据和必要的控制信息。

2、物理层的作用是传输比特流(相邻计算机节点),尽可能屏蔽掉具体传输介质和物理设备的差异。

为什么网络需要进行分层?

分层的原因:每一层专注于做一件事情

1、各层之间相互独立:各层只需要专注于自己的事情,而不需要关心其它层的具体实现

2、提高了整体灵活性:每一层都可以用最适合的技术进行实现,只需要保证提供的服务和暴露的接口不变即可

3、大问题化小:功能问题分解

TCP 和 UDP 之间的区别?

TCP 传输控制协议:面向连接的 可靠的

UDP 用户数据协议:不面向连接 不可靠的

其他区别:

1、TCP 传输是有状态的,TCP 会去记录自己发送消息的状态;UDP 是无状态服务,不管发送后的事情。

2、传输效率:UDP > TCP

3、传输形式:TCP 字节流,UDP 报文

4、头部开销:TCP 20-60bytes UDP 8bytes

5、是否提供广播:TCP 不提供;UDP 提供

什么时候选择 TCP 什么时候选择 UDP?

UDP 用于即时通信

TCP 用于对传输准确度较高的场景,文件、邮件等

使用 TCP 的协议有哪些?使用 UDP 的有哪些?

TCP:

1、HTTP:用于 Web 浏览器和 Web 服务器之间的通信

2、HTTPS:身披 SSL 外衣的 HTTP 协议,更安全

3、FTP:文件传输协议

4、SMTP:邮件传输协议

5、POP3:负责邮件接收的协议

6、Telent:远程登陆协议,被 SSH 取代

7、SSH:专为远程登录会话和其他网络服务提供安全性的协议,SSH建立在可靠的传输协议 TCP 上

UDP:

1、DNS:域名系统,将人类可读的域名转换为机器可读的 IP 地址。实际上 DNS 同时支持 UDP 和 TCP。

2、DHCP:动态主机配置协议,动态配置 IP 地址

TCP 三次握手和四次挥手(非常重要!)

建立连接(三次握手):

第一次:客户端发送 SYN 到服务端

第二次:服务端发送 SYN 和 ACK 到客户端

第三次:客户端发送 ACK 到服务端

TCP 三次握手过程中,linux 内核会维护两个队列来管理:

1、半连接队列:当服务端收到来自客户端的 SYN 后,放入半连接队列

2、全连接队列:当服务端收到来自客户端的 ACK 后,放入全连接队列

为什么要进行三次握手?

总的来说就是为了建立可靠的数据传输通道

1、第一次:客户端发送 SYN,但客户端无法确认

2、第二次:客户端确认服务端接收到请求并确认,但服务端无法确认

3、第三次:客户端和服务端都可以确认

双方都需要确认对方收到了自己的序列号。

第二次握手传回了 ACK,为什么还要传回 SYN?

传 ACK:告诉对方我收到了你的信号

传 SYN:建立并确认从服务端到客户端的通信

三次握手过程中可以携带数据吗?

第三次握手可以携带数据

断开连接 - TCP 四次挥手

1、第一次客户端发送 FIN 到服务端

2、服务端接收到 FIN,发送一个 ACK 到客户端

3、服务端发送一个 FIN,请求关闭连接

4、客户端发送 ACK 到服务端,服务端收到 ACK 后关闭

只要四次挥手没有结束,客户端和服务端就可以继续传输数据。

为什么需要四次挥手?

TCP 是全双工通信,可以双向传输数据。任何一方都可以在数据传输结束后发出连接释放的通知,等待对方确认后进入半关闭状态。当另外一方也没有数据再发送的时候,则发出连接释放通知,对方确认后完全关闭 TCP 连接。

为什么不能把服务端发送的 ACK 和 FIN 合并起来变成三次挥手?

因为服务端收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复 ACK,表示接收到了断开连接的请求。等到数据发完之后再发 FIN,断开服务端到客户端的数据传送。

如果第二次挥手时服务端的 ACK 没有送达客户端会怎么样?

客户端没有收到 ACK,会再次发送 FIN 请求。

为什么第四次挥手客户端需要等待 2 * MSL(报文段最长寿命)时间后才能进入 CLOSED 状态?

第四次挥手的时候,客户端发送给服务端的 ACK 可能会丢失,此时服务端没有接收到 ACK,重新发送 FIN,如果客户端收到了 FIN,就会重新发送 ACK到服务端。发送后再等待 2 * MSL 的时间,避免服务端没有收到 ACK 而一直重发 FIN。

TCP 如何保证传输的可靠性?(重要)

TCP 如何实现流量控制?

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方的发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,影响发送效率。如果窗口字段设置为0,那么发送方不能发送数据。

TCP 的拥塞控制是怎么实现的?

流量控制是点对点通信量的控制,是个端到端的问题。而拥塞控制是一个全局性的过程,涉及到所有主机、路由器、以及与降低网络传输性能有关的所有因素。

TCP 发送方要维持一个 拥塞窗口(cwnd)的状态变量。

TCP 的拥塞控制采用了四种算法:慢开始、拥塞避免、快重传、快恢复

ARQ 协议了解吗?

ARQ(Automatic Repeat-reQuest)自动重传请求,是 OSI 模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时两个机制,在不可靠服务的基础上实现可靠的信息传输,如果发送方在发送后一段时间内没有收到 ACK,它会重新发送,直到收到确认或者重试超过一定次数。

ARQ 包括停止等待 ARQ 协议和连续 ARQ 协议。

停止等待 ARQ 协议

每发送一个分组后就停止,等待 ACK。如果一段时间没收到 ACK,认为没有发送成功,重新发送,直到收到 ACK 再发送下一个分组。

若接收方收到重复分组,丢弃之,但要发送 ACK。

连续 ARQ 协议

可提高信道利用率。发送方维持一个发送窗口,位于发送窗口内的分组可以连续发送出去,而不需要等待确认。接收方采用累计确认,对按序到达的最后一个分组发送确认,表面这个分组之前的都已经收到。

优点:利用率高,容易实现

缺点:中间只有某一分组丢失,重传时需要重传该分组及后续所有分组。(也叫 Go-Back-N GBN 回退N)

超时重传如何实现?超时重传时间如何确定?

超时重传使用超时重传计数器进行实现,如果发送端在合理的往返时延(RTT)内未收到确认消息,那么对应的数据包就被假设已丢失并进行重传。

RTT:往返时间

RTO:超时重传时间

RTO的确定是关键问题,TCP 不能直接使用 RTT 作为 RTO 的时间,因为网络存在一定程度的波动。但我们可以根据 RTT 时间的变化去估算 RTO 超时重传时间。

从输入 URL 到页面展示发生了什么事情?(重要!)

另外的问法:打开一个网页,过程使用了哪些协议?

1、DNS 解析

2、TCP 连接

3、发送 HTTP 请求

4、服务器处理 HTTP 请求并返回

5、浏览器解析渲染页面

6、连接结束

1、DNS 解析:通过 DNS 解析,将域名转换为 IP 地址进行访问

2、建立 TCP 连接:获取到 IP 地址后,浏览器向服务器 80 端口发起 TCP 连接请求。(三次握手,建立连接)

3、发送 HTTP 请求:建立连接后,浏览器向服务器发送 HTTP GET 请求;

4、服务器收到请求后,发回一个 HTTP 响应报文,内容包括相关响应头和 HTML 正文。

5、浏览器解析渲染页面:不同浏览器渲染过程不一样

6、连接结束:TCP 四次挥手

HTTP 状态码有哪些?

比较常见的 200 404 500

200 成功 404 页面找不到 500 服务器出问题了

HTTP 和 HTTPS 有什么区别?(重要!)

HTTP 和 HTTPS 最大的区别在于它们的安全性。

1、端口号:HTTP 默认为 80;HTTPS 默认为 443。

2、URL 前缀:http:// https://

3、安全性和资源消耗:HTTP 协议运行在 TCP 之上,所有传输的内容基本都是明文,客户端和服务端都无法验证对方的身份。HTTPS 协议运行在 SSL / TLS 之上的 HTTP 协议,SSL / TLS 运行在 TCP 之上。所有传输的内容都会进行加密,加密采用的是对称加密,但对称加密的密钥在服务端用证书进行了非对称加密。HTTP 安全性弱于 HTTPS,但 HTTPS 比 HTTP 耗费更多资源。

HTTP 1.0 和 HTTP 1.1 有什么区别?

HTTP 是不保存状态的协议,如何保存用户状态?

HTTP 是一种无状态协议。也就是说 HTTP 协议本身不对请求和响应之间的通信状态进行保存,但我们怎么保存用户状态呢?

Session 机制

通过服务端记录用户的状态。例如购物车,因为 HTTP 是无状态的,所以我们不知道是谁将商品添加到了购物车中,但我们可以通过服务端给特定的用户创建特定的 session 之后,就可以标识这个用户并且跟踪他了。

在服务端保存 session 的方法很多,最常用的就是内存和数据库(redis)。大部分情况下,我们都是通过在 Cookie 中附加一个 Session ID 的方式来追踪。

如果 Cookie 被禁用怎么办?

利用 URL,把 Session ID 直接附加在 URL 路径后面。

URI 和 URL 的区别是什么?

一个是 identifier 标志符;一个是 locator 定位符;

一个用来唯一标识一个资源;一个用来找到这个资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/407175.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索数据结构:图(二)之图的遍历,Kruskal与Prim算法

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 图的遍历 图的遍历方式一般分为两种:深度优先遍历与广度…

XSS游戏

目录 XSS游戏-WarmupsMa Spaghet!JefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafiaOk, BoomerWW3 XSS游戏-Warmups Ma Spaghet! 1. 尝试注入&#xff0c;输入aaaaaaaa 2. 显示在<h2>标签内3. 输入标签&#xff0c;添加onmouseover属性值为alert(1337)&…

【数据库】MySql基本引擎InnoDB、MyISAM、MEMORY、CSV、ARCHIVE(详细说明)

文章目录 如何选择引擎存储引擎的作用修改引擎方式InnoDBMyISAMMEMORYCSVARCHIVE总结 更多相关内容可查看 如何选择引擎 合理选择数据库存储引擎对于系统的性能、数据完整性、维护成本等方面都具有重要影响 高并发的事务性应用&#xff1a;选择 InnoDB。以读操作为主的应用&a…

【python】Python中小巧的异步web框架Sanic快速上手实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【SQL】连续出现的数字

目录 题目 分析 代码 题目 表&#xff1a;Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | varchar | ---------------------- 在 SQL 中&#xff0c;id 是该表的主键。 id 是一个自增列。找出…

Langchain4J从AI Agent开始

前言 AI Agent是智能体的概念&#xff0c;以大模型为核心&#xff0c;集决策能力、记忆能力、工具调用能力为一体的智能体。 langchain框架是python写的&#xff0c;它是一个大语言模型智能框架&#xff0c;Langchain4J是langchain框架对应的java语言编写的。 langchain框架中…

Linux | vim编辑器的使用技巧:自动缩进、补全括号、光标定位、批量注释

文章目录 vim编辑器的使用技巧1、配置自动缩进、自动显示行号、自动补全括号2、光标定位3、批量注释、解除注释批量注释&#xff1a;批量解除注释 vim编辑器的使用技巧 1、配置自动缩进、自动显示行号、自动补全括号 打开vimrc配置文件 vim ~/.vimrc //如果没有编辑权限的&…

140页满分PPT | 一套完整的数字化转型+蓝图路线图规划项目案例

这份PPT文档是一个全面而深入的IT蓝图规划和实施路线图&#xff0c;为某大型制造企业的信息化建设和发展提供了详尽的框架和指导。 1. 业务战略与IT战略对接 在数字化转型过程中&#xff0c;应从企业的业务战略出发&#xff0c;强调了IT战略规划的重要性&#xff0c;指出IT战…

【计算机三级-数据库技术】数据库及数据库对象

数据库及数据库对象 第一节 创建及维护数据库 一、SQL server数据库分类 1&#xff09;系统数据库&#xff08;系统自动创建&#xff09;&#xff1a; master、msdb、tempdb、model、resource 2&#xff09;用户数据库 保存与用户业务有关的数据。 二、SQL server数据库组成…

一建证书哪个专业好?一建各专业含金量排行一览表

2024年一建考试将于9月7日、8日举行&#xff0c;距离现在已经不足五个月&#xff0c;今年一建考试大纲全新修订&#xff0c;教材也随之大改&#xff0c;加之一建考试难度较大&#xff0c;相信考生友友们都已经开启备考了吧&#xff1f; 近期也有小伙伴在跟小佑提问&#xff0c…

Is it possible to modify OpenAI environments?

题意&#xff1a;“是否可以修改 OpenAI 环境&#xff1f;” 问题背景&#xff1a; There are some things that I would like to modify in the OpenAI environments. If we use the Cartpole example then we can edit things that are in the class init function but with…

[数据集][目标检测]agvs仓储机器人检测数据集VOC+YOLO格式967张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;967 标注数量(xml文件个数)&#xff1a;967 标注数量(txt文件个数)&#xff1a;967 标注类别…

想要畅玩《黑神话:悟空》?上赞奇云工作站,仅需3步,直面天命!

全世界畅玩《黑神话&#xff1a;悟空》的时候 一批受害者们也迎来了属于他们的“九九八十一难” 这个时候&#xff0c;天命人才意识到 原来世界上最远的距离&#xff0c;不是天涯海角 而是《黑神话&#xff1a;悟空》就在我面前&#xff0c;旁边的电脑却带不动 作为被广泛视…

超维机器人在工业与能源领域的具身智能探索和应用

具身智能&#xff08;Embodied AI&#xff09;是指机器人能够通过其物理形态与环境的交互&#xff0c;进行感知、学习、决策和执行&#xff0c;从而完成复杂任务的能力。具身智能强调机器人不仅要具备感知环境和分析数据的能力&#xff0c;还要能够通过身体的行为和物理互动来适…

Cesium 视频纹理

Cesium 视频纹理 话不多说&#xff0c;直接上代码 <video id"video_dom"><source src"./video.mp4" type"video/mp4" /></video>var videoElement document.getElementById("video_dom");videoElement.play();vie…

145. 二叉树的后序遍历(递归法)

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 二&#xff1a;代码&#xff1a; /*** Definition for a bin…

多进程和多线程基础概念LINUX

进程和程序的区别 程序是静态的&#xff0c;它是保存在磁盘上的指令的有序集合&#xff0c;没有任何执行的概念进程是一个动态的概念&#xff0c;它是程序执行的过程&#xff0c;包括了动态创建、调度和销毁的整个过程 并行&#xff1a;在 cpu 多核的支持下&#xff0c;实现物…

Linux--网络层 IP协议

目录 0.往期文章 1.IP基本概念 2. IP协议报头格式 3.网段划分 两种网段划分的方式 为什么要进行网段划分 4.特殊的IP 地址 5.IP 地址的数量限制 6.私有 IP 地址和公网 IP 地址*** NAT技术 认识公网 运营商扮演的角色 7.路由 8.16位标识&#xff0c;3为标志和13位…

SpringCloud之一注册中心(Eureka)

一、Eureka概述 Eureka是Netflix公司开源的一个服务注册与发现的中间组件。 在微服务架构系统之中&#xff0c;我们经常提三个角色&#xff1a;注册中心 (Register)、服务提供者(Provider)、服务消费者(Consumer)。 1.注册中心&#xff1a;服务提供者可以将服务发布到注册中心…

ClkLog常见问题-埋点集成篇Sec. 1

本篇主要解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【指标项数据统计】 问&#xff1a;数据概览无法看到数据。 答&#xff1a;如果数据概览所有指标项都没有数据&#xff0c;则需要先检查埋点数据是否接收成功&#xff1b;如果只是会话相关数据&#xff08;访问次数…