计算机网络期中复习笔记(自用)
复习大纲
–第一章 概述
-
计算机网络的组成

-
网络边缘:主机和网络应用程序(又称为“端系统”)
-
端系统中运行的程序之间的通信方式可划分为两大类:
-
客户/服务器方式(C/S方式)

-
对等方式(P2P方式)

-
-
网络接入方式(P22~P34)

-
-
网络核心:路由器互连、网络的网络
-
电路交换(分为建立连接、通信、释放连接三个阶段)
-
报文交换(PPT中没写,但是王道课程里面有)
-
分组交换(数据首先分成多个分组,每个分组单独传送)
-
(这里会给出时延数据、报文长度、传输速率、请求处理时间等要求计算传播时长)
-
-
-
网络性能的指标(P71)
-
协议和分层体系结构


–第二章 应用层
-
网络应用概述
-
应用层协议的特点:没有通用的协议,每个应用都有专门的协议
-
C/S、P2P、C/S和P2P混合结构(P11~P22)
-
P2P怎么查找资源?
-
集中式查找:混合P2P
-
洪泛式查找:每个peer都将查询请求转发给相邻的全部Peer
-
分层叠加网查找
-
-
进程通信
-
P2P应用既运行client进程也运行是server进程
-
不同主机间通信的接口:Sockets
-
进程标识:主机IP地址+进程端口号
-
-
传输服务
-
衡量指标:可靠性、实时性、吞吐量、安全性

-
TCP服务与UDP服务

-
-
-
DNS(一般使用UDP,服务端口号为53)
-
DNS的功能和名字空间

-
DNS服务器分为根域名服务器、顶级域名服务器、权威域名服务器、本地域名服务器(P41~43)
-
迭代查询与递归查询(简单理解一下就是迭代查询是BFS,递归查询是DFS)
-
DNS资源记录
-
DNS的消息格式:DNS包含请求(query)和应答(reply)两个消息,其消息格式相同

-
-
WWW应用和HTTP
-
WWW的体系结构
-
以C/S模式工作
-
使用URL标识分布在整个因特网上的页面
- 编址格式:协议名://主机:端口号/文件路径及文件名
-
使用HTTP协议实现通过www上的各种链接获取信息
-
使用HTML标记语言显示页面并标识超链接
-
WWW应用客户:
- 浏览器
- web服务器
-
-
网页类型
-
静态网页

-
动态网页:如CGI脚本

-
活跃网页:例如Java Applet

-
-
HTTP:操作过程、消息格式
-
持久连接与非持久连接
-
非持久连接:每次传输对象都要重新建立TCP连接,响应时间为2×RRT+文件传输时间(HTTP1.0)
- 采用非流水线机制
-
持久连接:一个TCP连接可以传输多个对象(HTTP1.1)
- 流水线机制:Client可以连续发出多个请求,而不必等待前一个请求的响应完成
-
-
Cookies和Proxy
-
HTTP有两类消息:请求(request),响应(response)
-
消息格式:ASCII
-
请求消息的格式:

-
HTTP方法

-
HTTP响应消息的格式

-
状态码

-
-
Cookie:Web服务器对于访问用户的标识信息,可用于识别用户、记录用户信息和访问情况(用于保持访问应用)
-
在HTTP响应中包含一行set-cookie头信息
-
在HTTP请求中包含一行cookie头信息
-
Client主机中保存一个cookie文件,由浏览器管理
-
Server端的后台数据库
-
应用包括:身份认证、购物车、个性化推荐信息、用户会话状态等
-

-
-
代理服务器(Proxy Server):目的用于减轻Web服务器的负担,加快访问速度
-
浏览器Caching:浏览器缓存访问过的网页,进一步减少网络负载
- 缓存更新:条件GET(P87)
-
-
-
Email应用
-
电子邮件系统的构成:用户代理(UA)、邮件服务器(mail servers)、邮件传输协议:SMTP、邮件访问协议:IMAP,POP3
-
邮件服务器采用C/S模式
-

-

-
SMTP采用C/S模式,传输层协议使用TCP,server端口号为25
- 直接传输:邮件直接从发信人的服务器传输到收信人的服务器,而不从中间服务器转发
- 命令/响应方式交互

-
邮件访问协议:POP3(端口号:110)和IMAP(端口号:143)
-
邮件格式:多媒体扩展
- SMTP不能传送可执行文件或其他的二进制对象,限于传送7为ASCII码,会拒接超过一定长度的邮件
- 通过因特网邮件扩充(MIME)


-
-
-
FTP:文件传输协议
- 用于和远程主机之间上传/下载文件
- C/S模式
- 传输协议使用TCP
- FTP两个连接
- 控制连接
- FTP client 与 FTP server(端口21)建立控制连接
- 进行身份验证
- 传输命令和响应
- 持久连接:在访问期间,控制连接一直存在
- 数据连接
- 需要传输数据时建立数据连接
- 数据传输结束后,连接关闭
- 控制连接
-
远程登录协议:Telent
-
远程登录:从一台计算机通过网络登录到远程另一台计算机上进行操作
-
Telent特性:
- C/S模型
- 基于TCP,server端口号:23
- 通用、双向、基于8位字符的通信协议
-
NVT:网络仿真终端
- 标准的数据格式
- 实现异构设备的互联
-
–第三章 传输层:实现端到端的可靠通信
-
传输层的功能及服务
-
进程-进程的逻辑通信
-
复用与解复用
- 多路复用:多个应用进程的消息在同一个网络接口上传输
- 进程标识:16位端口号
- 复用:源端传输层在应用层消息之前加上源端口号和目的端口号
- 解复用:目的端传输层根据端口号确定目的进程
-
端口号
- 熟知端口(常用端口)
- 服务器进程使用
- 开放、固定值
- 值一般是0~1023
- 短暂端口
- 客户进程使用
- 由操作系统分配,值不固定
- 值一般是49152~65535
- 熟知端口(常用端口)
-
两种服务:TCP与UDP
- TCP:可靠、按顺序交付
- 建立连接
- 流量控制
- 拥塞控制
- UDP:不可靠、无序交付
- TCP:可靠、按顺序交付
-
传输层不提供时延保障和带宽保障
-
-
可靠数据传输的原理
-
提供可靠传输服务的层次:传输层和数据链路层
-
可靠传输代表:数据不会丢失、重复、失序(P18~P50)
-

-
-
无连接传输协议:UDP
-
简单高效的传输层协议
-
提供“尽力而为”的服务
- UDP数据报可能丢失
- 接受的顺序可能与发送顺序不一致
-
无连接协议
- 在发送数据之前,发送端和接收端没有握手
- 每个UDP数据报都是独立的,与其他的数据报无关
-
相比IP:增强了多路复用/多路分解
-

-
数据格式

-


-
伪报头:只用于校验和的计算,不发送
-
-
面向连接的传输协议:TCP
- 面向连接、全双工数据传输、端到端传输
- 连接管理:三次握手建立连接,四步释放连接
- 动态滑动窗口:发送窗口不超过对端通知的接收窗口值
- 采用ARQ协议,流水线方式工作,流量控制,拥塞控制,可靠、按序的字节流传输
- TCP不能保证上层消息的边界
- TCP的报文段
- 发送序号与接收序号
- 控制字段
- 可靠数据传输:序号管理
- 流量控制:防止发送方发送过快导致接收方缓存溢出造成数据丢失
- 基本方法:接收方反馈,限制发送方的发送数据量
- RTT估值=α×RTT估值的历史值+(1-α)×RTT的测量值
- 传输效率问题:
- Nagle算法:一次尽量发送较大的数据量
- Clark算法:只有在较大缓存时,才发送窗口更新通知
-
拥塞控制的主要原理
-
拥塞即网络边缘主机发送到网络中的负载超出了网络的承载能力
-
特征包括:时延增大(数据包在缓存中排队)、数据包丢失(路由器缓存溢出)
-

-
拥塞控制是全局问题,涉及全网所有的路由器和主机
- 流量控制是局部问题,仅限于发送方和接收方之间
-
拥塞控制
-
开环方法

-
闭环方法

-
TCP拥塞控制方法

- 细节发送端限制发送速率,发送速率近似为cwnd/RTT 字节/秒
- cwnd动态变化,取决于网络拥塞情况
- 发送端感知拥塞
- 当定时器超时或收到3个重复ACK时,即认为有数据丢失
- 发送端随即降低发送速率(降低cwnd)
- 三个机制:慢启动、AIMD、根据拥塞情况调整策略
-
慢启动:启动速率很低,按照指数级增加发送速率直至发现数据丢失(或者达到预先设定的阈值)
-
拥塞窗口达到阈值后,进入拥塞避免(CA)阶段

-
出现数据丢失的情况:MD

-
快速重传机制

-
-
相关文章:
计算机网络期中复习笔记(自用)
复习大纲 –第一章 概述 计算机网络的组成 网络边缘:主机和网络应用程序(又称为“端系统”) 端系统中运行的程序之间的通信方式可划分为两大类: 客户/服务器方式(C/S方式) 对等方式(P2P方式…...
14.Chromium指纹浏览器开发教程之WebGL指纹定制
WebGL指纹概述 当在浏览器打开的网页上浏览内容时,看到的大多是平面的、静态的图像和文字。但是有时想要在网页上看到更加生动、立体的图像,如3D游戏、虚拟现实应用等。这时,就需要用到WebGL。 简单来说,WebGL(Web G…...
GitHub SSH连接终极解决方案
GitHub SSH连接终极解决方案:443端口修改多场景故障排查指南 一、问题现象速查 当开发者执行以下命令时出现连接异常: ssh -T gitgithub.com常见报错类型: 经典端口阻塞ssh: connect to host github.com port 22: Connection refused密钥验…...
Git 中修改某个特定的commit提交内容
在 Git 中修改某个特定的提交(commit)通常需要使用 交互式变基(Interactive Rebase) 或 修改提交(Commit Amend)。以下是不同场景下的具体操作步骤: 一、修改最近的提交(最新提交&am…...
每日算法【双指针算法】(Day 1-移动零)
双指针算法 1.算法题目(移动零)2.讲解算法原理3.编写代码 1.算法题目(移动零) 2.讲解算法原理 数组划分,数组分块(快排里面最核心的一步)只需把0改为tmp 双指针算法:利用数组下标来…...
B端管理系统:企业运营的智慧大脑,精准指挥
B端管理系统的定义与核心功能 B端管理系统(Business Management System)是专门设计用于支持企业内部运作和外部业务交互的一套软件工具。它集成了多种功能模块,包括但不限于客户关系管理(CRM)、供应链管理(SCM)、人力资源管理(HRM)以及财务管…...
使用Java基于Geotools的SLD文件编程式创建与磁盘生成实战
前言 在地理信息系统(GIS)领域,地图的可视化呈现至关重要,而样式定义语言(SLD)文件为地图元素的样式配置提供了强大的支持。SLD 能够精确地定义地图图层中各类要素(如点、线、面、文本等&#x…...
Git 命令速查手册
听说用美图可以钓读者? 一、基础操作核心命令 1. 仓库初始化与克隆 命令作用示例git init创建新仓库git init my-projectgit clone克隆远程仓库git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add关联远程仓库git re…...
PKI 公钥基础设施
PKI 的全称是公钥基础设施(Public Key Infrastructure),是一个基于公钥加密技术,为网络环境中的各种应用提供安全服务的基础设施,由多个部分组成,各部分协同工作以实现数字证书的管理、密钥的生成与管理以及…...
android测试硬件工具 安卓硬件测试命令
Android开发常用ADB命令大全 在Android开发过程中,ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具,你会发现它已经集成了很多ADB功能,让调试变得…...
网络编程 - 4 ( TCP )
目录 TCP 流套接字编程 API 介绍 SeverSocket Socket 用 TCP 实现一个回显服务器 服务端 客户端 运行调试 第一个问题:PrintWriter 内置的缓冲区 - flush 刷新解决 第二个问题:上述代码中,需要进行 close 操作吗? 第三…...
OSPF综合实验(HCIP)
1,R5为ISP,其上只能配置Ip地址;R4作为企业边界路由器, 出口公网地址需要通过ppp协议获取,并进行chap认证 2,整个OSPF环境IP基于172.16.0.0/16划分; 3,所有设备均可访问R5的环回&…...
真实波幅策略思路
该策略是一种基于ATR(Average True Range)指标的交易策略,主要用于期货市场中的日内交易。策略的核心思想是利用ATR指标来识别市场的波动范围,并结合均线过滤来确定买入和卖出的时机。 交易逻辑思维 1. 数据准备与初始化 - 集合竞…...
ESB —— 企业集成架构的基石:功能、架构与应用全解析
企业服务总线(Enterprise Service Bus,ESB)是一种重要的企业级集成架构,以下为你详细介绍: 一、概念与定义 ESB 是一种基于面向服务架构(SOA)的中间件技术,它充当了企业内部不同应…...
leetcode 674. Longest Continuous Increasing Subsequence
目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析明确并理解递推公式 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这是动态规划解决子序列问题的例子。与第300题的唯一区别就是&#…...
STM32 外部中断EXTI
目录 外部中断基础知识 STM32外部中断框架 STM32外部中断机制框架 复用功能 重映射 中断嵌套控制器NVIC 外部中断按键控制LED灯 外部中断基础知识 STM32外部中断框架 中断的概念:在主程序运行过程中,出现了特点的中断触发条件,使得…...
Linux:基础IO---动静态库
文章目录 1. 动静态库前置知识1.1 动静态库知识回顾1.2 什么是动静态库 2. 动静态库2.1 站在库的制作者的角度2.2 站在库的使用者的角度2.3 动态库是怎么被加载的(原理) 序:上一篇文章我们从认识到理解,从理解到实现场景ÿ…...
深度学习-torch,全连接神经网路
3. 数据集加载案例 通过一些数据集的加载案例,真正了解数据类及数据加载器。 3.1 加载csv数据集 代码参考如下 import torch from torch.utils.data import Dataset, DataLoader import pandas as pd class MyCsvDataset(Dataset):def __init__(self, fil…...
SQL注入相关知识
一、布尔盲注 1、布尔盲简介 布尔盲注是一种SQL注入攻击技术,用于在无法直接获取数据库查询结果的情况下,通过页面的响应来判断注入语句的真假,从而获取数据库中的敏感信息 2、布尔盲注工作原理 布尔盲注的核心在于利用SQL语句的布尔逻辑…...
Codex CLI - 自然语言命令行界面
本文翻译整理自:https://github.com/microsoft/Codex-CLI 文章目录 一、关于 Codex CLI相关链接资源 二、安装系统要求安装步骤 三、基本使用1、基础操作2、多轮模式 四、命令参考五、提示工程与上下文文件自定义上下文 六、故障排查七、FAQ如何查询可用OpenAI引擎&…...
实现窗口函数
java 实现窗口函数 public class SlidingWin {public static void main(String[] args) {SlidingWin slidingWin new SlidingWin();double v slidingWin.SlidWin(2);System.out.println(v);}public double SlidWin(int k){int [] array new int[]{2,4,5,6,9,10,12,23,1,3,8…...
pycharm中怎么解决系统cuda版本高于pytorch可以支持的版本的问题?
在PyCharm中安装与系统CUDA版本不一致的PyTorch是可行的。以下是解决方案的步骤: 1. 确认系统驱动兼容性 检查NVIDIA驱动支持的CUDA版本:运行 nvidia-smi,右上角显示的CUDA版本是驱动支持的最高版本。只要该版本不低于PyTorch所需的CUDA版本…...
Day57 | 79. 单词搜索、89. 格雷编码
79. 单词搜索 题目链接:79. 单词搜索 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public boolean exist(char[][] board, String word) {char[] wordsword.toCharArray();for(int i0;i<board.lengt…...
清华《数据挖掘算法与应用》K-means聚类算法
使用k均值聚类算法对表4.1中的数据进行聚类。代码参考P281。 创建一个名为 testSet.txt 的文本文件,将以下内容复制粘贴进去保存即可: 0 0 1 2 3 1 8 8 9 10 10 7 表4.1 # -*- coding: utf-8 -*- """ Created on Thu Apr 17 16:59:58 …...
MATLAB - 小车倒立摆的非线性模型预测控制(NMPC)
系列文章目录 目录 系列文章目录 前言 一、摆锤/小车组件 二、系统方程 三、控制目标 四、控制结构 五、创建非线性 MPC 控制器 六、指定非线性设备模型 七、定义成本和约束 八、验证非线性 MPC 控制器 九、状态估计 十、MATLAB 中的闭环仿真 十一、使用 MATLAB 中…...
深入解析进程与线程:区别、联系及Java实现
引言 在现代操作系统中,进程和线程是并发编程的两大核心概念。理解它们的区别与联系对开发高性能、高可靠性的程序至关重要。本文将通过原理分析和Java代码示例,深入探讨这两个关键概念。 一、基本概念 1.1 进程(Process) 定义&…...
【Flutter深度解析】多线程编程
Flutter作为单线程模型的框架,在处理复杂计算时可能会遇到性能瓶颈。本文将全面剖析Flutter中的多线程编程方案,帮助你充分利用设备的多核性能,构建流畅的Dart应用。 一、Flutter线程模型基础 1. Dart的单线程事件循环 Flutter应用运行在单…...
HAL库配置RS485+DMA+空闲中断收发数据
前言: (1)DMA是单片机集成在芯片内部的一个数据搬运工,它可以代替单片机对数据进行传输、存储,节约CPU资源。一般应用场景,ADC多通道采集,串口收发(频繁进入接收中断)&a…...
【java实现+4种变体完整例子】排序算法中【计数排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是计数排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、计数排序基础实现 原理 通过统计每个元素的出现次数,按顺序累加得到每个元素的最终位置,并填充到结果数组中。 代码示…...
嵌入式单片机开发 - Keil MDK 编译与烧录程序
Keil MDK 编译程序 1、Keil MDK 编译按钮 Build 按钮:重新编译整个工程的所有源文件,无论它们是否被修改过 Rebuild 按钮:仅编译修改过的文件及其依赖项,未修改的文件直接使用之前的编译结果 2、Keil MDK 编译结果 linking... …...




