04741计算机网络原理 第2章 网络应用

2023-11-23 11:10

本文主要是介绍04741计算机网络原理 第2章 网络应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.1 计算机网络应用体系结构

计算机网络应用从体系结构角度可以分为:

  • 客户/服务器(C/S)结构:最典型、最基本的网络应用。案列:WWW应用、文件传输FTP、电子邮件等
  • 纯P2P结构:所有通信都在对等的通行方之间直接进行。案列:Gnutella、 BitTorent
  • 混合结构:存在客户与服务器之间的传统C/S结构通信,也存在客户之间的通信。 案列:IPTV

2.2 网络应用通信基本原理

网络应用的基本通信过程就是不同主机上的应用进程间以C/S方式进行通信。

在C/S结构的网络应用中,服务器端运行服务器进程,被动的等待客服请求服务;客户端运行客户端进程,主动发起通信,请求服务器进程提供服务。

典型的网络应用编程接口是套接字

TCP服务模型包括面向连接服务和可靠数据传输服务

  • 面向连接服务:在应用层报文开始传送之前,TCP客户和服务器相互交换传输层控制信息,完成握手,在客户进程与服务器进程的套接字之间建立一条逻辑的TCP连接。这条连接是双全工的,即连接双方的进程可以在此连接上同时进行报文接发。当应用结束报文发送时,必须拆除该连接
  • 可靠的数据传送服务:应用进程能够依靠TCP,实现端到端的无差错、按顺序交付所有发送数据的服务。当应用程序的一端将字节流通过本地套接字传送时,它能够依靠TCP将相同的字节流交付给套接字,而没有字节的丢失和冗余

2.3 域名系统

1. 层次化域名空间

实现将域名映射为ip地址的过程称为 域名解析

DNS为了实现域名解析,需要建立分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。

DNS为了实现域名的有效管理与高效查询,DNS服务按层次结构进行组织,并且该层次结构与域名的结构相对应。因特网采用了 层次树状结构的命名方法。

域名的结构由标号序列组成,各标号之间用隔开

各标号分别代表不同级别的域名

  • 国家顶级域名nTLD:如cn表示中国,us表示美国,uk表示英国等
  • 通用顶级域名gTLD:如com表示公司和企业、net表示网络服务机构、org表示非盈利性组织、edu表示专用的教育机构、gov表示专用的政府部门、mil表示专用的军事部门、int表示国际组织
  • 基础结构域名:这种顶级域名只有一个即arpa,用于反向域名解析,因此又称为反向域名

2. 域名服务器

DNS服务器的管辖范围不是以域为单位,而是以位单位

域名服务器分类:

  • 根域名服务器:最重要的域名服务器,因特网上共有13个不同ip地址的根域名服务器 a~m
  • 顶级域名服务器:TLD服务器,负责管理在该顶级服务器注册的所有二级域名
  • 权威域名服务器:负责一个区的域名服务器,保存该区中的所有主机的域名到IP地址的映射
  • 中间域名服务器

3. 域名解析过程

域名解析方法:

  • 递归解析:主机在进行域名查询时,本地域名服务器如果没有被查询域名的信息,则**「代理主机查询根域名服务器」**或其他服务器
  • 迭代解析:本地域名服务器如果没有被查域名的信息,则代理主机查询根域名服务器,若仍未查到域名信息,则根域名不会代理主机继续查下去,而是将查询任务交给本地域名服务器

在这里插入图片描述

2.4 万维网应用

1. HTTP概述

Web应用主要包括 Web服务器、浏览器与超文本传输协议(HTTP)

Web应用是典型的客户/服务器网络应用(C/S),客户与服务器之间的交互基于应用层协议HTTP

Web页面是有对象组成。

每个URL地址主要由两部分组成:存放对象的服务器主机域名和对象的路径名

HTTP是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如何向浏览器进行响应,HTTP使用的端口号是80。

2. HTTP连接

HTTP链接:HTTP基于传输层的TCP传输报文。浏览器向服务器发送请求之前,首先需要建立TCP连接,然后才能发送HTTP请求报文,并接收HTTP相应报文。根据HTTP在使用TCP连接的策略不同,可以分为 非持久连接的HTTP和持久连接的HTTP

  • 非持久连接:是指HTTP客户与HTTP服务器建立TCP连接后,通过该连接发送HTTP请求报文,接收HTTP响应报文,然后断开连接 。HTTP/1.0默认使用非持久连接

典型的优化非持久连接技术:

  • 并行连接:通过建立多条并行TCP连接,并行发送HTTP请求和冰箱接收HTTP响应
  • 持久连接:重用已建立的TCP连接发送新的hTTP请求和接收HTTP响应,从而消除新建TCP连接的时间开销

持久连接的工作方式:

  • 非流水方式持久连接:也称为非管道方式持久连接,客户端在通过持久连接接收到前一个响应报文后,才能发出对下一个对象的请求报文
  • 流水方式持久连接:也称为管道方式持久连接,客户端在通过持久连接收到前一个对象的响应报文之前,连续依次发送后续对象的请求报文,然后再通过该连接依次接收服务器发回的响应报文,HTTP/1.1 默认使用流水方式持久连接

HTTP报文组成:起始行、首部行、空白行、实体主体

HTTP报文起始行和空白行不可缺少,首部行可以是零行或多行,实体主体则根据报文类型、功能等可有可无

HTTP报文分类:请求报文、响应报文

在这里插入图片描述

请求报文与响应报文最主要的区别是起始行不同,每部分之间由空格分隔,起始行最后是CRLF:

  • 请求报文起始行为:<方法><协议版本>
  • 响应报文起始行为:<协议版本><状态码><短语>

HTTP典型的请求方法:

  • GET:请求读取由URL所标识的信息,是最常见的方法
  • HEAD:请求读取由URL所标识的信息的首部,即无须在响应报文中包含对象
  • POST:给服务器添加信息
  • OPTION:请求一些选项的信息
  • PUT:在指明的URL下存储一个文档

在这里插入图片描述

在这里插入图片描述

3. Cookie

Cookie技术主要包括4部分内容:

  • HTTP响应报文中的Cookie头行:Set-Cookie
  • 用户浏览器在本地存储、维护和管理的Cookie文件
  • HTTP请求报文中的Cookie头行:Cookie
  • 网站在后台数据库中存储、维护Cookie信息,包括已分配给用户ID、每个ID用户在本网站的访问特征

Cookie的常见用途:

  • 网站可以利用Cookie的ID来准确统计网站的实际访问人数、新访问者和重复访问者的人数对比、访问者的访问频率等数据
  • 网站可以利用Cookie限制某些特定用户的访问
  • 网站可以存储用户访问过程中的操作习惯和偏好,对不同用户呈现不同的显示内容、颜色、布局等界面元素,又针对性地为用户提供服务,提升用户体验感
  • 记录用户登录网站使用的用户名、密码等信息,当用户多次登录时,无须每次都从键盘输入这些繁琐的字符和数字
  • 电子商务网站利用 Cookie 实现“购物车”功能

Cookie分类:

  • 永久Cookie:Cookie 保存在硬盘中,有效周期可以设置,关闭浏览器不影响 Cookie 有效周期。
  • 会话Cookie:Cookie 保存在内存中。Cookie 有效周期是浏览器会话期间,关闭浏览器,Cookie 消失

2.5 Internet电子邮件

1. 电子邮件系统

电子邮件系统主要包括:

  • 邮件服务器:功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况,是电子邮件体系结构的核心。
  • 简单邮件传输协议(SMTP):是Internet电子邮件中的核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输
  • 用户代理:电子邮件应用客户端软件,为用户提供使用电子邮件的接口。功能是支持用户撰写、显示、处理和收发邮件,为用户阅读、回复、转发、保存和撰写邮件提供编辑与操作环境
  • 邮件读取协议:是支持接收邮件的用户主动连接服务器,对其邮箱中的邮件进行操作或申请向本地传输的应用层协议

2. SMTP

SMTP是Internet电子邮件中的核心应用层协议,使用邮件服务器之间或用户代理到邮件服务器的邮件传输

SMTP通过3个阶段的应用层交互完成邮件的传输,分别是:握手阶段、邮件传输阶段、关闭阶段

SMTP作为电子邮件系统的核心应用层协议,具有如下特点:

  • SMTP只能传送7位ASCII码文本内容
  • SMTP传送的邮件内容中不能包含”CRLF.CRLF“
  • SMTP是推动协议
  • SMTP使用TCP连接是持久的

3.电子邮件格式与MIME

邮件内容的基本格式:

  • 首部
  • 空白行
  • 主体

邮件中常见的首部行包括以下内容:

  • To:后面填入一个活多个收件人的电子邮件地址。必填
  • Suject:邮件的主题
  • Cc:表示应给某某人发送一个邮件副本
  • From:表示发信人的电子邮件地址
  • Date:为发信日期
  • Reply-To:是对方回信所用的地址。如果要求对方回复信件时使用不同于发信人邮件的地址,就需要填写该首部行

MIME主要包括三个部分:

  • 5个MIME邮件首部字段,可包含在邮件首部中。
    • MIME-Version:标识MIME的版本
    • Content-Description:可读字符串,用于对邮件内容的概括性描述,以便收件人对邮件内容的初步判断
    • Content-Id:邮件的唯一标识符
    • Content-Transfer-Encoding:说明在传送时邮件主体是如何编码的。最简单的编码就是7位的ASCII码。quoted-printable 编码适用于当所传送的数据中只有少量的非 ASCII 码;对于任意的二进制文件采用 base64 编码。
    • Content-Type:说明邮件主体内容的类型和格式,中间用/分开
  • 定义了多种邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
  • 定义了邮件传送编码,可对任何内容格式进行转换,从而适合通过SMTP进行传送

4. 邮件读取协议

邮件读取协议:

  • POP3:(第三版邮局协议):使用传输层 TCP。协议交互过程分 3 阶段:授权、事务处理和更新
    • POP3协议使用传输层TCP
    • 默认端口:110
    • 协议交互过程:
      • 授权:用户代理需要向服务器发送用户名和口令(以明文形式),服务器鉴别用户身份,授权用户访问邮箱
        • 命令:user 和 pass
      • 事务处理:用户代理向服务器发送POP3命令,实现邮件读取、为邮件做删除标记、取消邮件删除标记以及获取邮件的统计信息等操作。
      • 更新:客户发出quit命令,结束POP3会话,服务器删除那些被标记为删除的邮件
    • POP3不支持用户创建远程文件夹并为邮件指派文件夹的功能,而IMAP可以
  • IMAP:(互联网邮件访问协议):维护了 IMAP 会话的用户状态信息,允许用户代理只读邮件的部分内容。
  • HTTP:是 Web 邮件系统的邮件读取协议。注意:从浏览器发送 Web 电子邮件到邮件服务器过程中,也用 HTTP。

2.6 FTP

文件传送协议(FTP)是互联网的两个主机间实现文件互传的网络应用,其应用层协议称为FTP

FTP是典型的客服/服务器网络应用,采用C/S方式实现客户与服务器之间的双向文件传输

FTP的服务器进程由两大部分组成:

  • 主进程:负责接受新的客户请求
  • 若干从属进程:负责处理单个客户请求,与具体客户进行交互

FTP常见命令:

  • USER username:用于向服务器传送用户标识
  • PASS password:用户想服务器发送用户口令
  • LIST:用于请求服务器回送当前远程目录中的所有文件列表
  • RETR filename:用于从FTP服务器的当前目录下载文件
  • STOR filename:用于想FTP服务器的当前目录上传文件

FTP 命令对应的服务器应答(3 位数字)

  • 331 Usename OK,Password required

  • 125 Data connection already open;transfer starting

  • 425 Can’t open data connection

2.7 P2P应用

P2P 应用特点

  • P2P 体系结构对服务器的依赖很小,对于纯 P2P 来说,整个应用几乎不依赖某个集中服务器。应用都是动态地在对等方之间进行。

  • 具有很强的应用规模伸缩性。

  • 应用的对等方是用户控制的桌面计算机。

  • 应用充分聚集利用了端系统的计算能力以及网络传输宽带。

2.8 Socket编程基础

目前在Internet中应用最广泛的网络应用编程接口就是 Socket API

Socket类型:

  • 数据报类型套接字SOCK_DGRAM:面向传输层UDP接口
  • 流式套接字SOCK_STREAM:面向传输层TCP接口
  • 原始套接字SOCK_RAM:面向网络层协议接口

典型的Socket API函数

  • int socket() 创建套接字

  • int close() 关闭套接字

  • int bind() 绑定套接字的本地端点地址(一般用于服务器端)

  • int listen() 监听状态(只用于服务器端,仅用于 TCP 服务器套接字)

  • int connect() 将客户套接字与服务器连接(只用于客户端)

  • int accept() 创建新的套接字来与客户套接字建立 TCP 连接(只用于服务器端)

  • Ssize_t send() 发送数据

  • Ssize_t sendto() 发送数据(只用于UDP)

  • Ssize_t recv() 接收数据

  • Ssize_t recvfrom() 接收数据(只用于 UDP)

  • Int setsockopt() 设置套接字选项

  • Int getsockopt() 读取套接字选项

在这里插入图片描述

在这里插入图片描述

这篇关于04741计算机网络原理 第2章 网络应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417525

相关文章

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node