1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

[docs update]计算机网络部分内容完善

This commit is contained in:
guide 2022-08-13 23:23:13 +08:00
parent bbc4ed9b56
commit 04eeee162f
4 changed files with 32 additions and 66 deletions

View File

@ -163,6 +163,7 @@ export const sidebarConfig = defineSidebarConfig({
collapsable: true, collapsable: true,
children: [ children: [
"other-network-questions", "other-network-questions",
"computer-network-xiexiren-summary",
{ {
text: "重要知识点", text: "重要知识点",
icon: "star", icon: "star",

View File

@ -1,49 +1,16 @@
--- ---
title: 谢希仁老师的《计算机网络》内容总结 title: 《计算机网络》(谢希仁)内容总结
category: 计算机基础 category: 计算机基础
tag: tag:
- 计算机网络 - 计算机网络
--- ---
本文是我在大二学习计算机网络期间整理, 大部分内容都来自于谢希仁老师的《计算机网络》这本书。 本文是我在大二学习计算机网络期间整理, 大部分内容都来自于谢希仁老师的[《计算机网络》第七版 ](https://www.elias.ltd/usr/local/etc/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%EF%BC%88%E7%AC%AC7%E7%89%88%EF%BC%89%E8%B0%A2%E5%B8%8C%E4%BB%81.pdf)这本书。为了内容更容易理解,我对之前的整理进行了一波重构,并配上了一些相关的示意图便于理解。
为了内容更容易理解,我对之前的整理进行了一波重构,并配上了一些相关的示意图便于理解。 ![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/cs-basics/network/computer-network-xiexiren.png)
![](https://img-blog.csdnimg.cn/img_convert/e7177b00248e30dc49bd6061093a0590.png)
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
- [1. 计算机网络概述](#1-计算机网络概述)
- [1.1. 基本术语](#11-基本术语)
- [1.2. 重要知识点总结](#12-重要知识点总结)
- [2. 物理层Physical Layer](#2-物理层physical-layer)
- [2.1. 基本术语](#21-基本术语)
- [2.2. 重要知识点总结](#22-重要知识点总结)
- [2.3. 补充](#23-补充)
- [2.3.1. 物理层主要做啥?](#231-物理层主要做啥)
- [2.3.2. 几种常用的信道复用技术](#232-几种常用的信道复用技术)
- [2.3.3. 几种常用的宽带接入技术,主要是 ADSL 和 FTTx](#233-几种常用的宽带接入技术主要是-adsl-和-fttx)
- [3. 数据链路层Data Link Layer](#3-数据链路层data-link-layer)
- [3.1. 基本术语](#31-基本术语)
- [3.2. 重要知识点总结](#32-重要知识点总结)
- [3.3. 补充](#33-补充)
- [4. 网络层Network Layer](#4-网络层network-layer)
- [4.1. 基本术语](#41-基本术语)
- [4.2. 重要知识点总结](#42-重要知识点总结)
- [5. 传输层Transport Layer](#5-传输层transport-layer)
- [5.1. 基本术语](#51-基本术语)
- [5.2. 重要知识点总结](#52-重要知识点总结)
- [5.3. 补充(重要)](#53-补充重要)
- [6. 应用层Application Layer](#6-应用层application-layer)
- [6.1. 基本术语](#61-基本术语)
- [6.2. 重要知识点总结](#62-重要知识点总结)
- [6.3. 补充(重要)](#63-补充重要)
<!-- /code_chunk_output -->
相关问题:[如何评价谢希仁的计算机网络(第七版)? - 知乎](https://www.zhihu.com/question/327872966) 。
## 1. 计算机网络概述 ## 1. 计算机网络概述

View File

@ -7,17 +7,13 @@ tag:
## OSI 和 TCP/IP 网络分层模型 ## OSI 和 TCP/IP 网络分层模型
### OSI 七层模型是什么?每一层的作用是什么? **相关面试题**
[ OSI 七层模型详解](./osi&tcp-ip-model.md#osi-七层模型) - OSI 七层模型是什么?每一层的作用是什么?
- TCP/IP 四层模型是什么?每一层的作用是什么?
- 为什么网络要分层?
### TCP/IP 四层模型是什么?每一层的作用是什么? **参考答案** [OSI 和 TCP/IP 网络分层模型详解(基础)](./osi&tcp-ip-model.md)。
[TCP/IP 四层模型详解](./osi&tcp-ip-model.md#tcp-ip-四层模型)
### 为什么网络要分层?
[为什么网络要分层?](./osi&tcp-ip-model.md#为什么网络要分层)
## 应用层有哪些常见的协议? ## 应用层有哪些常见的协议?
@ -158,13 +154,22 @@ FTP 是基于客户—服务器C/S模型而设计的在客户端与 FTP
### TCP 三次握手和四次挥手 ### TCP 三次握手和四次挥手
[TCP 三次握手和四次挥手(传输层)常见面试题总结](./tcp-connection-and-disconnection.md) **相关面试题**
## 在浏览器中输入 url 地址 ->> 显示主页的过程(面试常客) - 为什么要三次握手?
- 第 2 次握手传回了ACK为什么还要传回SYN
- 为什么要四次挥手?
- 为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?
- 如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
- 为什么第四次挥手客户端需要等待 2\*MSL报文段最长寿命时间后才进入 CLOSED 状态?
百度好像最喜欢问这个问题。 **参考答案** [TCP 三次握手和四次挥手(传输层)](./tcp-connection-and-disconnection.md)
> 打开一个网页,整个过程会使用哪些协议? ## HTTP
### 从输入URL 到页面展示到底发生了什么?
> 类似的问题:打开一个网页,整个过程会使用哪些协议?
图解(图片来源:《图解 HTTP》 图解(图片来源:《图解 HTTP》
@ -181,9 +186,12 @@ FTP 是基于客户—服务器C/S模型而设计的在客户端与 FTP
5. 浏览器解析渲染页面 5. 浏览器解析渲染页面
6. 连接结束 6. 连接结束
具体可以参考这篇文章:[https://segmentfault.com/a/1190000006879700](https://segmentfault.com/a/1190000006879700) 。 具体可以参考下面篇文章:
## HTTP 状态码有哪些? - [[从输入URL到页面加载发生了什么](https://segmentfault.com/a/1190000006879700)](https://segmentfault.com/a/1190000006879700)
- [浏览器从输入网址到页面展示的过程](https://cloud.tencent.com/developer/article/1879758)
### HTTP 状态码有哪些?
HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被成功处理。 HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被成功处理。
@ -191,7 +199,7 @@ HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被
关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[HTTP 常见状态码总结(应用层)](./http-status-codes.md)。 关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[HTTP 常见状态码总结(应用层)](./http-status-codes.md)。
## HTTP 和 HTTPS 有什么区别? ### HTTP 和 HTTPS 有什么区别?
- **端口号** HTTP 默认是 80HTTPS 默认是 443。 - **端口号** HTTP 默认是 80HTTPS 默认是 443。
- **URL 前缀** HTTP 的 URL 前缀是 `http://`HTTPS 的 URL 前缀是 `https://` - **URL 前缀** HTTP 的 URL 前缀是 `http://`HTTPS 的 URL 前缀是 `https://`
@ -199,7 +207,7 @@ HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被
关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[HTTP vs HTTPS应用层](./http&https.md) 。 关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[HTTP vs HTTPS应用层](./http&https.md) 。
## HTTP 1.0 和 HTTP 1.1 有什么区别? ### HTTP 1.0 和 HTTP 1.1 有什么区别?
- **连接方式** : HTTP 1.0 为短连接HTTP 1.1 支持长连接。 - **连接方式** : HTTP 1.0 为短连接HTTP 1.1 支持长连接。
- **状态响应码** : HTTP/1.1中新加入了大量的状态码光是错误响应状态码就新增了24种。比如说`100 (Continue)`——在请求大资源前的预热请求,`206 (Partial Content)`——范围请求的标识码,`409 (Conflict)`——请求与当前资源的规定冲突,`410 (Gone)`——资源已被永久转移,而且没有任何已知的转发地址。 - **状态响应码** : HTTP/1.1中新加入了大量的状态码光是错误响应状态码就新增了24种。比如说`100 (Continue)`——在请求大资源前的预热请求,`206 (Partial Content)`——范围请求的标识码,`409 (Conflict)`——请求与当前资源的规定冲突,`410 (Gone)`——资源已被永久转移,而且没有任何已知的转发地址。
@ -209,7 +217,7 @@ HTTP 状态码用于描述 HTTP 请求的结果比如2xx 就代表请求被
关于 HTTP 1.0 和 HTTP 1.1 更详细的对比总结,可以看我写的这篇文章:[HTTP 1.0 vs HTTP 1.1(应用层)](./http1.0&http1.1.md) 。 关于 HTTP 1.0 和 HTTP 1.1 更详细的对比总结,可以看我写的这篇文章:[HTTP 1.0 vs HTTP 1.1(应用层)](./http1.0&http1.1.md) 。
## HTTP 是不保存状态的协议, 如何保存用户状态? ### HTTP 是不保存状态的协议, 如何保存用户状态?
HTTP 是一种不保存状态即无状态stateless协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢Session 机制的存在就是为了解决这个问题Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session过了时间限制就会销毁这个 Session HTTP 是一种不保存状态即无状态stateless协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢Session 机制的存在就是为了解决这个问题Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session过了时间限制就会销毁这个 Session
@ -221,16 +229,6 @@ HTTP 是一种不保存状态即无状态stateless协议。也就是说
![HTTP是无状态协议](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/HTTP是无状态的.png) ![HTTP是无状态协议](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/HTTP是无状态的.png)
## Cookie 的作用是什么? 和 Session 有什么区别?
Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
**Cookie 一般用来保存用户信息** 比如 ① 我们在 Cookie 中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你把登录的一些基本信息给填了;② 一般的网站都会有保持登录,也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③ 登录一次网站后访问网站其他页面不需要重新登录。**Session 的主要作用就是通过服务端记录用户的状态。** 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
Cookie 数据保存在客户端(浏览器端)Session 数据保存在服务器端。
Cookie 存储在客户端中,而 Session 存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密,然后使用到的时候再去服务器端解密。
## URI 和 URL 的区别是什么? ## URI 和 URL 的区别是什么?
* URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。 * URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。

View File

@ -35,7 +35,7 @@ tag:
### 第2次握手传回了ACK为什么还要传回SYN ### 第2次握手传回了ACK为什么还要传回SYN
接收端传回发送端所发送的ACK是为了告诉客户端我接收到的信息确实就是你所发送的信号了,这表明从客户端到服务端的通信是正常的。回传SYN则是为了建立并确认从服务端到客户端的通信。 服务端传回发送端所发送的 ACK 是为了告诉客户端:“我接收到的信息确实就是你所发送的信号了,这表明从客户端到服务端的通信是正常的。回传 SYN 则是为了建立并确认从服务端到客户端的通信。
> SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。 > SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。