我是靠谱客的博主 踏实雪碧,最近开发中收集的这篇文章主要介绍计算机网络:应用层基本概念2.1 应用层协议原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(自己整理的《计算机网络》学习笔记,供自己和大家参考学习。未完待续,持续更新中…)

1.主机也称为端系统。

2.发送主机要向另一台主机发送数据,要将数据分段,并为每段加上首部字节,由此形成的信息包称为分组

3.一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和接收或其他事件方面所采取的动作。

4.电路交换

这里写图片描述

每条链路具有n条电路,因此每条链路能够支持n条电路同时连接。当两台主机要通信时,该网络在两台主机之间创建一条专用的端到端连接(end-to-end connection)。每条链路由端到端连接使用,该连接在连接期间获得该链路带宽的1/n部分。

4.1 电路交换网络中的多路复用

时分多路复用(TDM) 频分多路复用(FDM)

在电话网络中,链路在连接期间为每条连接专用一个频段,该频段的宽度被称为带宽(bandwidth)

这里写图片描述

5.分组交换

源主机将长报文划分为较小的数据块,并称之为分组。在源和目的地之间,这些分组中的每个都通过通信链路和分组交换机(主要有两类:路由器和链路交换机)传送。

这里写图片描述

输出缓存(输出队列)排队时延 分组丢失或丢包

6.对比

分组交换提供了比电路交换更好的带宽共享,比电路交换更简单、有效,实现成本更低
但因其端到端时延时变动的和不可预测的(主要是因为排队时延),故不适合实时服务(如电话和视频会议)。

分组交换更有效.

这里写图片描述
这里写图片描述
这里写图片描述

7.分组交换网中的时延概述

节点处理时延(nodal processing delay):检查分组首部和决定该分组导向何处,检查比特级差错
排队时延(queuing delay):在链路上等待传输时,经受排队时延
传输时延(transmission delay):又称存储转发时延,将所有分组的比特推向链路所需的时间。令L比特为分组长度,R为链路传输速率,传输时延即为L/R。
传播时延(propagation delay):从该链路的起点到路由器B传播所需要的时间。d/s(d为路由器A和B之间的距离,s是该链路的传播速率)。该传播速率取决于物理媒体,速率范围是 21083108m/s

区别:传输时延是路由器将分组推出所需要的时间,它是分组长度和链路传输速率的函数;传播时延是一个比特从一台路由器到另一台路由器传播所需要的时间,它是两台路由器之间距离的函数

节点总时延(total nodal delay) dnodal = dproc + dqueue + dtrans + dprop

这里写图片描述

端到端时延:节点时延累加 N(dproc + dtrans + dprop)

令a表示分组到达队列的平均速率(单位:每秒分组,pkt/s),R为传输速率,L为分组的比特数,则比特到达队列的平均速率为La bps。
比率La/R被称为流量强度。
La/R > 1 到达队列的平均速率超过从队列传输出去的速率,队列增加趋于无穷,排队时延趋向无穷大。

La/R 1

丢包:排在一条链路前的队列只有有限的容量,到达的分组发现一个满的队列,由于没有地方存储这个分组,路由器将丢弃该分组,即该分组将会丢失

吞吐量: min { Rc,Rs }

这里写图片描述

8.协议分层

这里写图片描述

第一章对应知识点的课后习题

这里写图片描述

a. 传播时延 dprop = m/s seconds

b. 传播时间 dtrans = L/R seconds

c. 端到端时延 dend-to-end = (m/s + L/R) seconds

d. t = dtrans时,最后一个比特刚好离开主机A,进入到链路中

e. dprop > dtrans t = dtrans,第一个比特还在链路中传播,仍未到达主机B

f. dprop < dtrans t = dtrans,第一个比特已经到达主机B

g. dprop = dtrans, m = Ls/R = 893km

这里写图片描述

a.电路交换,用户共享带宽。所以能支持1Mbps/100kbps = 10个用户

b.给定用户传输的概率为p = 1/10 = 0.1

c.这里写图片描述

这里写图片描述

这里写图片描述

第一个LN/R s有N个分组同时到达,由于分组长度为L比特,传输速率为R bps,所以dtrans = L/R, 第一个分组的排队时延为0,第二个分组的时延为L/R,即第一个分组的传输时间,第三个分组的时延为2L/R,即前两个分组的传输时间。依次类推,第N个分组的时延为(N-1)L/R,平均排队时延为

这里写图片描述

这里写图片描述

a. R*tprop = 1Mbps * 10000km/ (2.5*10^8 m/s) = 40000bits

b. 当比特全部在链路上传播时,比特数量达最大值,即为带宽时延R*tprop

c. 带宽时延积即为链路上比特数量的最大值

d. 该链路上一个比特的宽度为10000km/40000bits = 250m/bit 比足球场大

e. 比特宽度表达式:m/(R*dprop) = m/(R*m/s) = s/R

这里写图片描述

a. R*tprop = 1Gbps * 10000km/ 2.5*10^8 m/s = 4*10^7 bits

b. 比特数量最大值为文件大小,4*10^5 bits

c. 比特宽度为10000km/4*10^8 bits = 0.25m/bit

这里写图片描述
这里写图片描述

a.从源主机到第一台分组交换机需要7.5Mb/1.5Mbps = 5s 从源主机到目的主机需要3*5=15s

b.从源主机到第一台分组交换机,移动第一个分组需要1500bits/1.5Mbps = 1ms第一个分组从第一个分组交换机到第二个分组交换机,第二个分组刚好从源主机到第一个分组交换机,它们所需的时间都为1ms。第二个分组需要1+1=2ms才能被第一个交换机全部接收到。

c.第一个分组到达目的主机需要3ms时间,在之后每隔1ms就会有一个新的分组到达。故所需时间为3+(5000-1)*1 = 5002ms = 5.002s,与a比较可知时间减少到原来的三分之一。

d.报文分段的缺点:1)每一个分组到达目的主机之后还需要按照顺序重新装配为原始报文。2) 报文头部大小往往是固定的,信息分割导致有很多的分组,因此报文头部所占的字节总数更多。

2.1 应用层协议原理

2.1.2进程通信

不同端系统的进程通过跨越计算机网络交换报文而相互通信

###1.客户机与服务器
在给定的一对进程之间的通信会话中,发起通信(即在该会话开始时与其他进程联系)的进程被标示为客户机,在会话开始时等待联系的进程是服务器

2.进程与计算机网络之间的接口

进程通过一个称为套接字(socket)的软件接口在网络上发送和接收报文。

进程类比于一座房子,而它的套接字可以类比为它的门。当一个进程想向位于另外一台主机的进程发送报文时,它要把报文推出门(套接字)。报文通过运输的基础设施抵达目的主机,再通过接收进程的门(套接字)进行传递,最后被接收进程进行相应的处理。

套接字是同一台主机内应用层与传输层之间的接口,由于其是在网络上建立网络应用程序的可编程接口,因此套接字也被称为应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)

这里写图片描述

运输层协议为调用它的应用程序提供的服务主要有四类:可靠数据传输、吞吐量、定时和安全性。

1.TCP服务包括面向连接服务和可靠数据传输服务。无差错、按 适当顺序交付发送的数据。
2.UDP服务是无连接的、提供不可靠数据传输服务。不保证报文能够被接收进程接收到,而且报文也可能是乱序到达的

这里写图片描述

2.2 HTTP协议

2.2.1 概况

超文本传输协议(HyperText Transfer Protocol, HTTP)。HTTP使用TCP作为它的支撑运输层协议

因为一个HTTP服务器并不保存关于客户机的任何信息,所以我们说HTTP是一个无状态协议(stateless protocol)。

2.2.2 非持久连接和持久连接

每个请求/响应对是经一个单独的TCP连接发送,该应用程序被称为非持久连接。
所有请求/响应对是经相同的TCP连接发送,该应用程序被称为持久连接。

默认方式下HTTP使用持久连接。

往返时间(RTT)即一个小分组从客户机到服务器再回到客户机所花费的时间。包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。

这里写图片描述

每一个对象的传输时延为两个RTT,即一个RTT用于建立TCP,另一个RTT用于请求和接受一个对象。

这里写图片描述

持久连接:服务器在发送响应后保持该TCP连接打开,在相同的客户机与服务器之间的后续请求和响应可通过相同的连接进行传送。

流水线模式的持久连接:在单个持久TCP连接上进行,对对象的请求可一个接一个地发出,而不必等待未决请求的回答。如果一个连接经过一定时间间隔仍未被使用,HTTP服务器就关闭该连接。

这里写图片描述

在得到IP地址之前,已经访问了n个服务器,故获取IP地址的总时间为 RTT1+RTT2+RTT3+...+RTTn

在获取IP地址之后,需要一个 RTT0 来建立TCP连接,需要一个 RTT1 来请求和接受该对象。所以总的响应时间是 2RTT0+RTT1+...+RTTn

这里写图片描述

a.没有并行TCP连接的非持久HTTP,引用三个对象需要额外三次TCP连接的建立。所需时间为 32RTT0

加上原来的时间,共需 6RTT0+2RTT0+RTT1+...+RTTn

b.并行TCP连接的非持久HTTP,同时打开三个TCP连接,同时取得三个对象。使用并行连接可以缩短响应时间,这里仅需 2RTT0 。故总的响应时间为 2RTT0+2RTT0+RTT1+...+RTTn

c.有流水线的持久HTTP。只要遇到一个引用对象就发送请求,对于所有的引用对象话费一个 RTT0 。故总的响应时间为 RTT0+2RTT0+RTT1+...+RTTn

2.2.3 HTTP报文格式

1.HTTP请求报文

这里写图片描述

第一行为请求行,其后继的行为首部行

请求行有3个字段:方法、URL、HTTP协议版本
方法字段可以取值:GET: 浏览器请求一个对象
         POST:用户提交表单
         HEAD: 类似于GET方法。服务器用一个HTTP报文进行响应,但并不返回请求对象
         PUT: 被应用程序用来向Web服务器上上传对象
         DELETE: 用户或应用程序可以删除Web服务器上的对象

Host: 定义目标所在的主机         
Connection: close 浏览器告诉服务器再发送完被请求的对象后就关闭连接。      
User-agent: 定义用户代理,向服务器发送请求的浏览器的类型。
Accept-language: 用户想得到该对象的语言版本(如果服务器中有这样的对象)

这里写图片描述

其中使用GET方法时实体主体为空,使用POST方法时,实体主体中包含的就是用户在表单字段中输入的值。

2.HTTP响应报文

这里写图片描述
这里写图片描述

三个部分:初始状态行、首部行、实体主体

状态行有3个字段:协议版本、状态码和相应状态信息

常见的状态码:
这里写图片描述
505 HTTP Version Not Supported: 服务器不支持请求报文使用的HTTP协议版本

首部行
Connection: close 告诉客户机在报文发送完成后关闭该TCP连接
Date:服务器检索到该对象、插入到响应报文并发送该响应报文的日期和时间
Server: 这里是由一个Apache Web服务器产生的,类似于请求报文中的User-agent
Last-Modified: 对象创建或者最后修改的日期和时间
Content-Length: 表明了被发送对象的字节数
Content-Type: 这里指示实体主体中的对象是HTML文本

这里写图片描述

下面通过两个例子来加深对HTTP报文的理解。

这里写图片描述

a. http://gaia.cs.umass.edu/cs453/index.html

b. HTTP/1.1版本

c. 持久连接。可从Connection:keep-alive看出。

d. 不能从HTTP请求报文中看出运行浏览器的主机的IP地址。

这里写图片描述

a. 可以。因为状态码为200,状态信息为OK。该文档提供的时间为2006年3月7日星期二12:39:45 GMT。查看Date首部行可知。

b. 最后一次修改是2005年12月10日星期六18:27:46 GMT。查看Last-Modified首部行可知。

c. 已被返回的文档有3874字节。查看Content-Length首部行可知。

d. 前五个字节为

2.2.4 用户与服务器的交互:cookie

这里写图片描述

cookie可以用于标示用户,用户首次访问站点时,可能需要提供一个用户标识(可能是名字)。在后继访问中,浏览器向服务器传递一个cookie首部,供服务器识别该用户,因此cookie可以在无状态的HTTP上建立一个用户会话层。例如,当用户登录一个基于Web的电子邮件系统时,浏览器向服务器发送cooki信息,允许该服务器通过用户与应用程序之间的对话对用户进行验证。

尽管cooki能简化用户的网上购物活动,但是它的使用仍有着很大的争议,因为它被看做是对用户隐私的一种侵害。结合cookie和用户提供的账户信息,web站点可以知道很多关于用户的信息,并可能将这些信息出卖给第三方。

2.2.5 Web缓存

web缓存器也叫代理服务器,能够代表初始web服务器满足HTTP请求的网络实体。它有自己的磁盘存储空间,并在其中保存最近请求过的对象的拷贝。

可以配置用户的浏览器,使得用户的所有HTTP请求首先指向web服务器。

浏览器建立一个到web缓存器的tcp连接,并向web缓存器中的对象发送一个HTTP请求
–> web缓存器检查本地是否存储了该对象的拷贝,如果有,用HTTP响应报文向客户浏览器返回该对象
–> 如果没有,web缓存器与该对象的初始服务器打开一个TCP连接,并发送该对象的HTTP请求
–> web缓存器接受到初始服务器返回的对象后,在本地存储空间存储一份拷贝,并用HTTP响应报文向客户浏览器返回该拷贝(通过已经建立在客户机浏览器和web缓存器之间的TCP连接)

当它接收浏览器的请求并发回响应时,它是服务器;当它向初始服务器发出请求并接收响应时,它是客户机。

web缓存器可以大大地减少对客户机请求的响应时间,可以大大减少一个机构内部网与因特网接入链路上的通信量。此外,web缓存器能从整体上大大降低因特网上的web流量,从而完善所有应用的性能。

这里写图片描述

局域网上强度为0.15的通信量最多导致数十毫秒的时延,因此我们可以忽略局域网时延。如果流量强度接近于1,链路上的时延会变得非常大并且无限增长。因此满足请求的平均响应时间将以分钟计。

为了改进时间响应特性,这里考虑一种解决方案。即不升级链路带宽,而是在机构网络中安装一个Web缓存器。如下图如所示:

这里写图片描述

假设机构缓存器的命中率为0.4, 因为客户机与缓存器位于同一个告诉LAN上,这40%的请求将几乎立即会得到响应,时延约在10ms以内。剩下的60%的请求需要通过访问初始服务器才能满足。流量强度从1.0减小到0.6。一般而言,在15Mbps链路上,当流量强度小于0.8时,时延很小,约为几十毫秒。因此,平均时延为 0.40.010s+0.62.01s

2.2.6 条件GET方法

HTTP协议有一种机制,允许缓存器证实它的对象是最新的,这种机制就是条件GET方法。
如果请求报文使用GET方法,且请求报文包含一个If-modified-since首部行,那么这个HTTP请求报文就是一个条件GET请求报文。

这里写图片描述

if-modified-since 首部行的值正好等于一星期前服务器发送的响应报文中的Las-modified首部行的值。该条件GET方法告诉服务器,仅当自指定日期之后修改过该对象才发送对象。如果没有被修改,web服务器向该缓存器发送一个响应报文,但并没有包含所请求的对象。

2.3文件传输协议:FTP

FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。

控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和”get”文件的命令。数据连接用于实际传输一个文件。

这里写图片描述

FTP协议使用一个分离的控制连接,所以FTP的控制信息是带外传送的。
区别:HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的,是带内发送控制信息的。

FTP服务器必须在整个会话期间保留用户的状态信息。对每个活动着的用户会话的状态进行追踪,对FTP会话总数进行限制。另一方面,HTTP是无状态的,即它不必对任何用户状态进行追踪。

2.4因特网中的电子邮件

因特网电子邮件系统的个主要组成部分:用户代理、邮件服务器、简单邮件传输协议SMTP

2.4.1 SMTP

发送方用户代理 -> 发送方邮件服务器 -> 接收方邮件服务器 -> 分发到接收方的邮箱中

2.4.2 与HTTP的对比

区别一:HTTP是一个拉协议,用户使用它从服务器拉去信息,且TCP连接是由想获取文件的机器发起的;SMTP是一个推协议,发送邮件服务器把文件推向接受邮件服务器,且TCP连接是由要发送的机器发起的。

区别二:SMTP要求每个报文都使用7为ASCII码格式

区别三:处理一个既含文本又包含图形的文档,HTTP把每个对象都封装到自己的HTTP响应报文中,而SMTP把所有报文对象放在一个报文中。

2.5 DNS: 因特网的目录服务

DNS 域名系统 是一个由分层的DNS服务器实现的分布式数据库,一个允许主机查询分布式数据库的应用层协议

这里写图片描述

这里写图片描述

最后

以上就是踏实雪碧为你收集整理的计算机网络:应用层基本概念2.1 应用层协议原理的全部内容,希望文章能够帮你解决计算机网络:应用层基本概念2.1 应用层协议原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部