计算机网络自顶向下方法读书笔记(一)
应用层课后习题
花了些时间进行了较为深入的阅读概述和第一章的应用层内容后发现确实受益匪浅于是决定从应用层入手通过练习题来加深对计算机网络的理解这些题目均出自原书第八版
花了些时间进行了较为深入的阅读概述和第一章的应用层内容后发现确实受益匪浅于是决定从应用层入手通过练习题来加深对计算机网络的理解这些题目均出自原书第八版
2.1网络应用原理
习题
Q1:列出5种非专用的因特网应用以及他们所使用的应用层协议
- Web:HyperText Transfer Protocol (HTTP)
- 电子邮件:Simple Message Transfer Protocol (SMTP)
- DNS(域名系统):Domain Name System (DNS)
- 对等文件分发(P2P):Peer-to-Peer (P2P) file sharing
- 视频流:Real-time data streaming protocol
Q2:网络体系结构与应用程序体系结构之间有什么区别
网络体系结构被预先确定下来,并且主要遵循OSI参考模型;同时具有较高的抽象层次,并向应用程序提供了特定的服务集合
应用架构由开发者自主决定,并划分为主要的两种类型:C/S架构和P2P架构。该体系结构注重重视用户使用体验以及系统功能。
基于应用程序的需求和功能要求而构建的网络体系结构能够提供必要的网络服务支持;依靠网络体系结构提供的各项核心功能和优质的服务资源来支撑应用程序体系结构向用户提供所需的服务
问题3:在两个进程间的通信会话中,请指出哪一个是客户端进程?哪一个是服务器端进程中
在计算机网络中,进行通信的实际是进程,进程通过套接字来收发报文。
发起通信的是客户进程,等待联系的是服务进程。
在Web中(C/S架构),浏览器是客户进程,Web服务器是服务进程
而在P2P体系下,任何一个进程都可以是客户进程或者服务器进程
第4题:对于基于协议交换资源的应用来说,请您指出‘在数据传输过程中没有明确区分客户端和服务端’这一观点是否正确,并说明您的理由是什么?
首先从整个P2P架构的角度出发,在讨论客户端与服务端时并无实际意义。
Q5:如何利用特定的信息来确保另一个主机能够正确识别和响应同一进程?
通过Ip和端口号。
首先使用Ip来标识主机,在网络环境中每个进程都在试图监听同一个指定的端口(尽管不同进程可能会试图同时登录同一个特定端口),这可能导致严重的端口冲突问题;因此利用Ip地址和对应的端口号能够定位到该主机正在登录的具体那个特定的端口。
Q6:假如你想为了加快数据传输速度而快速处理从远程客户端向服务器发送的数据,请问你应该选择UDP还是TCP?原因是什么?
TCP/IP网络为应用程序提供了两个运输层协议UDP和TCP
TCP采用面向连接的服务机制,并支持双向通信。在数据传输之前双方需进行握手操作以建立会话;在完成数据传输后必须断开该会话以释放资源。该协议通过严格的序列控制确保了数据按序准确地到达接收端;其通信可靠性显著提升但相比UDP而言其效率略低因为协议头 overhead 和相关操作开销相对较高
UDP是一种高效轻量的运输协议,并未提供不必要的服务。以牺牲可靠性的代价换取了传输速度的显著提升。
因此可以选择UDP协议作为传输方案;然而,在对数据传输可靠性有严格要求的情况下,则更适合采用TCP协议进行通信。
Q7:你能设想一个既要求数据无丢失又高度时间敏感的应用程序吗?
证券交易软件
分析一个典型的传输协议可能提供的主要四种服务类别,并指出每种服务对应的技术层(具体是基于UDP还是基于TCP实现的)?
- 稳定传输层协议(TCP)
- 传输速率由TCP实现,并且通过动态调整策略来优化传输速率。
- 精确的时间戳特性使得UDP在实时应用中表现出色。
- 安全通信机制通过结合经典的TLS协议来实现。
Q9:之前提到过TCP通过使用TLS增强了其安全性服务功能。该技术旨在提供进程间的安全通信服务,并包含加密功能。具体来说,TLS主要应用于应用层,而不仅仅局限于运输层。如果开发者希望利用TLS增强UDP的功能,则需要执行哪些操作步骤
TLS主要位于传输层,并且其主要功能是增强TCP的可靠性和高效性。然而,在某些情况下,为了进一步提升性能或稳定性(如处理特定场景下的数据传输需求),可以通过处理握手流程并封装UDP协议来实现对UDP的支持或优化。
总结
应用层是处理应用程序的网络数据交互的,对等实体是两个进程。
应用程序架构主要有两种,分别是C/S和P2P。
网络应用系统基于TCP/IP这一底层架构模式构建而成。在进程间通信方面主要依靠的是网络接口端口之间的信息传递机制。而套接字则等同于插座,在功能上具有相似性:它们都提供了物理连接点以实现数据传输。在建立连接时,则像一个请求者试图找到与之匹配的插座插入一样。
应用层的数据交换主要依赖于传输层提供的TCP和UDP协议。TCP具有高稳定性可靠且具备完善的拥塞控制机制,并支持与TSL结合以确保数据传输的安全性;而UDP则无需建立端到端的连接具有更快的传输速度但不具备预测性的延迟保证因此更适合对实时性要求较高的场景
对于协议来说,需要指出报文类型、语法、语义、发送规则。
- 消息类型(类型):协议定义了不同类型的报文消息,在每种消息中都有其特定的功能作用与应用领域。
- 信息结构(数据组织形式):信息结构决定了各数据元素之间的关系及其排列顺序,并规范数据存储与访问的方式。
- 功能作用(信息处理目的):信息处理系统通过明确的信息功能作用来实现数据的具体操作目标,并指导系统对数据进行分析与转换。
- 发送策略(传输管理方法):传输策略规定信息在网络层面上的操作流程与实现手段,并涉及何时采用该策略、具体实施方式以及频率管理等环节。
2.2-2.4HTTP、SMTP、DNS
习题
Q10:握手协议的作用是什么?
握手主要是用来确认建立连接的,因此握手协议的作用主要在于:
- 确认双方身份
- 确认传参细节
- 选择加密算法
Q11:为什么HTTP、SMTP及IMAP都在TCP而不是UDP上
它是面向连接的一种可靠传输层协议,主要通过建立连接实现了数据确认功能以及超时重传机制。该协议能够实现流量的有效管理并应对网络拥塞问题。
而UDP是一种不带连接、不可靠的传输层协议,并侧重于提高数据传输效率的同时也面临着数据丢失和顺序颠倒等问题。
HTTP协议负责浏览器与服务器之间的通信工作
SMTP和IMAP专门用于电子邮件传输,在处理这类需要可靠交付的任务时,必须保证发送方向接收方传输必要的信息包,并确保这些信息包不被丢失或损坏。
因此上述三种协议都应该选择TCP协议
在电子商务网站中,请描述如何利用Cookie技术来实现对每位客户购买记录的持久存储。详细说明Cookie机制是如何实现这一功能的具体步骤和逻辑过程。
首先HTTP属于无状态协议,因此它不会保存不同响应之间的关联信息.然而针对那些需要识别客户信息的商业网站,我们仍然有必要找到一种方法来记录相关信息以便于进行客户识别.为此可以通过设置会话标识符即会话 cookie的方式来实现身份验证功能.具体而言当用户首次访问该网站时服务器会主动发送一个唯一标识用于区分不同的访客.在下次访问时如果携带该会话 cookie即可完成身份验证过程.
随后就是服务器基于cookie从数据库中执行身份验证操作,并获取对应用户的账户信息。
该技术通过引入Web缓存机制降低接收中的被请求对象时延的技术手段进行阐述。Wbe缓存器在处理单个用户请求时是针对所有对象还是仅某些对象进行时间延迟缩减?这一设计选择背后的理论依据是什么?
在用户初次访问该资源时, 缓存机制将由服务器返回副本并完成存储操作
在后续相同的请求中,在处理之前,请首先查看资源版本的变化情况。若无变化,则直接返回缓存器中的资源;否则则需再次发起请求。
缓存仅适用于那些变动幅度较小且频率不高的一类对象。其原因在于,在对全部数据建立缓存时,则对于那些变动频繁的对象而言,并不会带来实质性的优化效果,并反会增加内存压力
Q16: 假设Alice采用基于Web的电子邮件账户向Bob传输电邮, 而Bob则利用IMAP客户端管理其个人邮箱。探讨电邮从Alice主机传递至Bob主机的具体路径, 并列出双方主机间移动电邮所涉及的具体的应用层协议
首先 Alice 通过其客户端代理 SMTP 协议将自己的 emails 发送给本地邮箱;然后 Alice 的邮箱 通过 SMTP 协议 将 emails 发送给 Bob 的邮箱;最后 Bob 使用 IMAP 协议 从其邮箱 拉取 自己需要的 emails。
Q18:什么是HTTP/1.1中的HOL阻塞问题?HTTP/2试图如何解决这个问题?
在HTTP/1.1协议中存在HOL(Head-of-Line Blocking)阻塞问题。该问题源于该协议规定:在一个请求获得响应后才允许发送下一个请求这一顺序性特点所带来的阻塞现象。具体而言,在一个请求(如请求下载一个较大文件或处理时间较长的请求)被阻塞或处理较为缓慢时:其后续的所有请求都会受到影响而无法及时处理:即使这些后续请求本身并不需要等待前面的请求完成。
HTTP/2试图通过以下方式来解决HTTP/1.1中的HOL阻塞问题:
- 多路复用(Multiplexing):HTTP/2提出了分组、消息以及数据流等新概念,在每次通信中将每个请求或响应定义为一个独立的消息,并将其拆解为若干分组进行传输。这种设计使得在同一个TCP连接中能够同时处理多个独立的请求与响应,并非必须按照顺序依次处理。因此即使某个请求被暂时阻塞也不会影响到其他请求的处理流程。
- 二进制分帧层:HTTP/2采用了二进制传输方式而非传统的文本格式传输方式,在这种架构下不仅可以提高数据解析效率还能支持更为复杂的传输机制如多路复用功能。
- 流控制:HTTP/2增加了流量控制机制允许客户端与服务器之间协同调控数据发送的速度从而防止发送端因超速导致接收端无法及时解码进而进一步减少了HOL阻塞的可能性。
