计算机网络第二章知识点回顾(自顶向下)

news2024/12/24 9:08:38

第二章知识点回顾

  • 1.应用层
    • 1.1网络应用架构
      • 1.1.1客户-服务器架构
      • 1.1.2P2P架构
      • 1.1.3两种架构的对比
    • 1.2不同终端上的进程通信
    • 1.3进程与网络的接口:套接字
    • 1.4进程如何标识自己:进程编址
    • 1.5因特网提供的传输服务
      • 小结
    • 1.6Web应用画像
    • 1.7 HTTP协议
      • 1.7.1HTTP使用TCP服务
    • 1.8非持久连接和持久连接
      • 1.8.1 非持久HTTP
      • 1.8.2非持久HTTP的响应时间
    • 1.9持久HTTP
    • 1.10HTTP报文格式
    • 1.11Web缓存(代理服务器)

1.应用层

  1. 几个重要的概念:
    • 客户-服务器模式
    • 对等模式
    • 传输层服务
    • 进程与传输层接口
  2. 几个流行的应用层协议:
    • HTTP
    • FTP
    • SMTP / POP3 / IMAP
    • DNS
  3. 开发网络应用程序: socket API
  4. 创建一个网络应用的核心,是编写一个分布式程序,使其可以:
    • 运行在不同的端系统上,并能通过网络相互通信
    • 例如,web服务器软件与浏览器软件
  5. 应用程序只运行在终端上:应用程序员不需要为网络核心设备编写程序“
  6. 只在端系统上开发应用”是一个非常重要的设计决定:
    • 极大地方便了网络应用的开发和快速部署

1.1网络应用架构

  1. 在开发一个应用程序之前,首先要决定采用什么样的网络应用架构
  2. 网络应用架构规定了在各个端系统上组织应用程序的方法
  3. 目前有两种主流的网络应用架构:
    • 客户-服务器架构(Client-server)
    • 对等架构(Peer-to-peer ,P2P)

1.1.1客户-服务器架构

  1. 服务器(server):
    • 有一台总是在线的主机,上面运行着服务器程序(server)
    • 服务器主机(server machine)具有永久的、众所周知的地址
  2. 客户(client):
    • 用户终端上运行一个客户程序(client),需要时与服务器程序通信,请求服务
    • 客户机(client machine)使用动态地址,通常不会总是在线

1.1.2P2P架构

  1. 没有总是在线的服务器主机
  2. 任意一对端系统(对等方)可以直接通信
  3. 对等方多为用户自己的计算机,使用动态地址
  4. 每个对等方既可请求服务,也可提供服务
  5. 典型的P2P应用:
    • BT、迅雷
    • Skype
    • PPLive

1.1.3两种架构的对比

  1. 客户-服务器架构:
    • 资源集中:
      • 资源(服务)只在某些固定的终端上提供
    • 优点:资源发现简单
    • 缺点:
      • 集中式计算带来的问题,如服务端扩容压力、网络流量不均衡、响应延迟长
  2. P2P架构:
    • 资源分散:
      • 任何终端都可以提供资源(服务)
    • 优点:
      • 易于扩容、均衡网络流量
    • 缺点:
      -资源发现困难,社会问题(版权、安全性等)

1.2不同终端上的进程通信

  1. 进程:主机上运行的程序
  2. 在分布式应用中,不同终端上的进程需要通信
  3. 进程通信的方法:
    • 同一个主机内:进程间通信机制(OS提供)
    • 在不同主机上:通过交换报文进行通信
  4. 在一次确定的通信会话中,总能标示一方为客户进程,另一方为服务器进程:
    • 客户进程:主动发起请求的进程
    • 服务器进程:接收请求的进程

1.3进程与网络的接口:套接字

  1. 进程如何将报文送入网络,又如何从网络接收报文?
  2. 设想在应用程序和网络之间存在一扇门(套接字):
    • 发送报文:发送进程将报文推到门外
    • 门外的运输设施(因特网)将报文送到接收进程的门口
    • 接收报文:接收进程打开门,即可收到报文
  3. 套接字是应用层和传输层的接口,也是应用程序和网络之间的API

1.4进程如何标识自己:进程编址

  1. 每个进程需要一个 标识,以便其它进程能够找到它
    • Q: 可以用进程所在主机的地址来标识进程吗?
    • A: 不能,因为同一个主机上可能运行着许多进程
    • 端口号:用于区分同一个主机上的不同进程
  2. 进程标识包括:
    • 主机地址
    • 与该进程关联的端口号
    • 端口号的例子:
      • 众所周知的端口号分配给服务器,成为服务的标识
      • 比如,HTTP server使用端口80,Mail server使用端口25

1.5因特网提供的传输服务

  1. TCP service:
    • 面向连接: 保证传输顺序
    • 可靠传输:不出错
    • 流量控制: 发送进程不会“压垮”接收进程
    • 拥塞控制: 网络超载时抑制发送进程
    • 不提供: 及时性,最低带宽保证,安全性
  2. UDP service:
    • 通过因特网接收和发送报文
    • 不提供: 顺序保证,可靠传输,流量控制,拥塞控制,及时性,最低带宽保证,安全性

小结

  1. 为创建一个新的网络应用,需要:
    • 选择一种网络应用架构:客户-服务器 or P2P
    • 选择一种网络服务:TCP or UDP
    • 确定一个端口号
    • 定义应用层协议
    • 编写客户程序和服务器程序(调用套接字接口)
  2. 网络应用和应用层协议:
    • 应用层协议只是网络应用的一部分
    • 网络应用还包括客户程序、服务器程序等
  3. 要求掌握的概念:
    • 客户-服务器模型
    • 网络应用编程接口

1.6Web应用画像

  1. 应用层资源:网页(web pages)
  2. 网络应用架构:
    • 客户-服务器架构 客户:浏览器
    • 服务器:web服务器
  3. 要求的网络服务:TCP服务
  4. 端口号:80
  5. 应用层协议:HTTP(Hyper Text Transfer Protocol)

1.7 HTTP协议

  1. Web采用客户-服务器模式
    • client: 浏览器请求、接收和显示web对象
    • server: Web服务器应客户请求发送对象
  2. HTTP协议:定义了浏览器和web服务器之间的通信规则
  3. HTTP 1.0(RFC 1945)和HTTP 1.1(RFC 2068)

1.7.1HTTP使用TCP服务

  1. 客户发起到服务器 80 端口的 TCP 连接(客户端创建一个套接字)
  2. 服务器接受来自客户的TCP连接(服务器端创建一个套接字)
  3. 浏览器和服务器交换HTTP报文 (通过各自的套接字)
  4. 关闭TCP 连接(关闭各自的套接字)
  5. HTTP是“无状态的”
    • 服务器不保存有关客户请求的任何信息

1.8非持久连接和持久连接

  1. 非持久 HTTP
    • 在一个TCP连接上最多发送一个对象
    • HTTP/1.0 使用非持久连接
  2. 持久 HTTP 在
    • 一个TCP连接上可以发送多个对象
    • HTTP/1.1 缺省使用持久连接

1.8.1 非持久HTTP

在这里插入图片描述
在这里插入图片描述

1.8.2非持久HTTP的响应时间

  1. RTT (Round-Trip Time):
    一个小分组从客户发送到服务器,再返回客户的时间
  2. Response time:
    • 建立TCP连接用时一个RTT
    • 发送HTTP请求至收到响应的前几个字节用时一个RTT
    • 传输文件的时间
  3. 请求一个网页的时间:
    • 请求一个对象用时2RTT(忽略对象传输时间)
    • 请求一个完整的网页用时22RTT(11个对象)

1.9持久HTTP

  1. 非持久HTTP 的问题:
    • 获取每个对象需要2个RTT
    • 每个TCP连接需要消耗操作系统资源
    • 浏览器需要打开多个TCP连接来获取一个网页
  2. 持久HTTP
    • 服务器在发送响应后保持连接
    • 同一对客户-服务器之间的后续HTTP报文可以在该连接上传输
    • 无流水线方式:
      • 客户仅当收到前一个响应后再发送新的请求
      • 请求每个对象用时1个RTT
      • 请求一个网页用时12RTT
    • 流水线方式:
      • HTTP/1.1缺省使用该方式客户每解析到一个引用对象就可以发送请求
      • 可在一个RTT时间内请求所有引用对象
      • 请求一个网页用时约3RTT

1.10HTTP报文格式

  1. 两类HTTP报文:
    • 请求报文:客户发往服务器
    • 响应报文:服务器发往客户
  2. HTTP报文由ASCII文本构成
  3. 在这里插入图片描述

1.11Web缓存(代理服务器)

  1. 代理服务器: 代表原始服务器满足HTTP请求的网络实体,保存最近请求过的对象的拷贝。
  2. 用户设置浏览器:所有HTTP请求首先发往web 缓存
  3. 浏览器将HTTP请求发送给web缓存: 对象在web缓存中:
    • web缓存返回对象
    • 对象不在web缓存中:web缓存从原始服务器获取对象,缓存在本地,然后返回给客户
    • Q: web缓存如何知道对象的原始服务器?
      • A: HTTP请求头中的host首部行指出了原始服务器

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据技术基础实验十三:Kafka实验——订阅推送示例

大数据技术基础实验十三:Kafka实验——订阅推送示例 文章目录大数据技术基础实验十三:Kafka实验——订阅推送示例一、前言二、实验目的三、实验要求四、实验原理1、Kafka简介2、Kafka使用场景五、实验步骤1、配置各服务器之间的免密登录2、安装ZooKeeper…

【C++】优先级队列 priority_queue的使用模拟实现 | 仿函数

🌈欢迎来到C专栏~~优先级队列的使用 & 模拟实现 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞&#xff01…

聚乙二醇衍生物MAL-PEG-NH2,Maleimide-PEG-amine,CAS:1207751-12-9​

英文:MAL-PEG-NH2,Maleimide-PEG-amine 中文:马来酰亚胺-聚乙二醇-氨基 2、CAS编号:1207751-12-9 3、所属分类:Amine PEG Maleimide PEG 4、分子量:可定制,5000、2000、3400、20000、10000、…

【附源码】Python计算机毕业设计汽车租赁网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

eBPF学习笔记(一)—— eBPF介绍内核编译

eBPF学习笔记(一)—— eBPF介绍&内核编译eBPF介绍eBPF基础代码验证即时编译eBPF开发工具BCCbpftracelibbpf C/C库eBPF Go库内核编译查看内核版本下载内核源码安装依赖项安装最新版llvm和clang配置内核编译内核BPF示例程序常见问题问题一:…

C++ 堆、大顶堆、小顶堆、堆排序

目录一、什么是堆?1.1 大顶堆1.2 小顶堆1.3 自定义greater1.4 堆索引的特点1.5 堆操作添加元素删除最大元素检查序列是否是堆检查部分序列为堆对堆进行排序升序降序问题:sort()和sort_heap()有什么区别二、排序算法:堆排序2.1 堆排序原理创建…

Bootstrap框架(全)

Bootstrap中文网:点我直达 Bootstrap菜鸟教程:点我直达 目录:(一)Bootstrap标准模板:(二)CSS样式区:一、布局容器:二、栅格系统:1.列组合&#x…

<Linux> 软件包管理器yum及编辑器vim的使用

文章目录一、yum的背景知识1. 商业生态2. 开源生态3. 软件生态本土化二、yum 的基本使用1. 查看软件包2. 安装、卸载、搜索软件实现Windows下和Linux下文件互传三、vim的基本使用1. vim 的基本概念2. vim 的基本操作2.1.模式间切换2.2.插入模式2.3.命令模式2.4.底行模式四、vim…

nginx(四十二)access阶段的模块学习

一 ngx_http_access ① 基本描述 场景: 限制某些ip来源的访问;基于ip进行限制细节点: 基于$remote_addr进行判断的 ② allow deny ③ 官方案例 说明: 按照配置文件中allow|deny的先后顺序,只要匹配上则停止继续匹配 ④ 经典应用场…

Rust机器学习之ndarray

Rust机器学习之ndarray 众所周知,Python之所以能成为机器学习的首选语言,与其丰富易用的库有很大关系。某种程度上可以说是诸如numpy、pandas、scikit-learn、matplotlib、pytorch、networks…等一系列科学计算和机器学习库成就了Python今天编程语言霸主…

Vue项目实战——【基于 Vue3.x + NodeJS】实现的课程表排课系统二(week-title)

文章目录基于 Vue3.x NodeJS实现的课程表排课系统(二)初始化样式封装axios处理数据表格头部(周几)子组件写入根组件App.vue浅拿一下数据基于 Vue3.x NodeJS实现的课程表排课系统(二) 初始化样式 src/ass…

当 AI 遇上 web3,会碰撞出什么火花?

2020 年之前,Web3 的路是创造者们铺好的。但 Web3 遇上了金融,这出乎了每个创造者的意料之外,稳定币、AMM 和借贷突其来地点燃了2020年的那个夏天。之后 Web3 又遇到了 NFT、游戏和元宇宙。不过因为技术限制,除了金融之外&#xf…

AVL树详解(附带旋转步骤图,手把手带你上分)

文章目录👍 AVL树的概念先了解一下😁AVL树节点的定义😊AVL树插入节点🤞AVL树为什么要旋转😍AVL树的四种旋转左单旋右单旋左右双旋右左双旋❤️结语关于AVL树的讲解 👍 AVL树的概念先了解一下 它的左右子树…

Scala005--Scala中的数据结构【集合】之数组

Scala中的数据结构和Java中一样,都有数组,列表,集合,映射。在Scala中与Java不同的是数组可以有可变数组,而不是一旦定义就不可以进行更改。我们来认识数组,并使用相应的代码去查看具体的实现效果。 目录 …

Linux命令从入门到实战 ----进程管理

文章目录kill终止进程pstree查看进程树netstat网络状态和端口占用信息crontab定时任务进程(process): 是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源 服务(service):启动之后…

深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ

深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ 文章目录深度学习 Day 18——利用卷神经网络实现猫狗识别 Ⅱ一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据四、数据预处理1、加载数据2、检查数据3、配置数据集并进行归一化处理4、可视化数据五、构建…

xv6源码解析(三)——内存管理

01 内存管理 内存管理:通过编写物理页分配器,以链表管理所有空闲页帧, 实现了对物理页帧的回收与分配;在xv6系统sbrk内存管理方式的基础上,添加了进程用户空间非连续分区的分配。 内存管理参考链接 mmap 02 sbrk机制…

猿创征文|【Linux】Linux中的gdb调试器的使用

目录 一、什么是gdb? 二、gdb的安装 三、gdb的使用 1、只有debug版可以被调试 2、gdb的常用指令 2.1显示代码:l指令(list指令) 2.2设置断点:b指令(break指令) 2.3显示断点/禁用断点/开启…

Linux操作系统~进程fork到wait到底怎么用?

目录 1.fork() (1).概念 (2).fork的写时拷贝 (3).fork常规用法 2.进程终止 (1).进程退出场景/退出码 (2).进程常见退出方法 1).exit函数 …

类与对象(中级)

目录 1. 包 1.1 包的概念 1.2 导入包中的类 1.3 自定义包 1.4 常见的包 2. Java三大特性 -- 封装 3. Java三大特性 -- 继承 3.1 继承的概念: 3.2 继承的语法 3.3 父类成员访问 3.3.1 子类中访问父类的成员变量 3.3.2 子类中访问父类的成员方法 4. supe…