计算机网络:应用层


前言

因特网的应用包括:
1970–1980,基于文本的应用,例如文本电子邮件、远程访问计算机、新闻组;
二十世纪九十年代中期的万维网(www.),例如网络冲浪、搜索、电子商务;
二十世纪末的即时讯息和P2P文件共享;
现在的IP电话,视频会议,点播电影、多人在线游戏等等,还有新一代网络社交应用,包括微信,Twitter等等。


提示:以下是本篇文章正文内容,下面案例可供参考

一、应用层协议原理

一、网络应用程序体系结构

1. 应用程序的编写的对象,是在多台端系统上运行的软件。而像路由器、链路层等网络核心设备只具有网络层及以下部分,所以网络核心设备并不在应用层上起作用。
2. C/S结构的特征:
1) 客户端之间不直接通讯,例如,Web应用中的两个浏览器不会直接通讯。
2) 服务器具有固定的,公开的地址,服务器是一直打开的,客户通过向服务器的IP地址发送分组来建立联系、
3. P2P结构的特征:
1}应用程序(进程)在间断连接的主机之间直接通讯,不需要专门的服务器。例如文件共享、对等方协助下载器(迅雷)、网络电话、视频会议。
2)尽管每个对等放在请求文件的时候会产生负载,但是对等方在向其他对等方发送文件时,也增强了系统服务能力。
3)P2P的高度非集中结构,在安全性和可靠性方面有一些问题。

二、进程通信

端的通信,本质上是进程间的通信。当多个端运行在相同的(同一个)端系统上时,可以通过进程间通信机制通信。而在两个不同端系统上的进程,通过要跨越(经过)计算机网络的报文交换来进行通信。

1.Client/Server进程

对于C/S模式,浏览器是客户进程,Web服务器是服务器进程。对于P2P模式,下载文件的是客户进程,上传文件的是服务器进程。
对于一般场景,发起通信的是客户,等待联系的是服务器。

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

进程通过叫做套接字的软件接口,向网络发送报文/从网络接收报文。如果把进程比作房子,那么套接字就可以类比作门。
套接字也是一台主机应用层和运输层的接口,把信息的处理由开发者转移给操作系统,即开发者可以控制套接字在应用层的功能,但是无法控制它的运输层部分。套接字也可以称作是应用程序与网络之间的API。

3.进程寻址

IP地址+端口号

三、应用程序可选的运输服务(四个分类标准)

1.数据传输的可靠性

发送的数据能完整的到达接收方,成为可靠数据传输;对于有些应用,它们能够承受一定量的数据损失。尤其是多媒体应用,例如交谈式的音视频,丢失部分数据会导致卡顿,掉帧,但不会影响整个通信过程。

2.吞吐量

发送进程发给接收进程的,交付比特的速率。有些进程之间的通讯要求保持一个最低发送速率,也就是要求占用一个最低带宽。例如网络电话在提供带宽小于32kb/s时,是无法完成正常的通话的。像这样具有吞吐量要求的应用称为带宽敏感应用。能够根据带宽的变化调节的叫做弹性应用。电子邮件,文件传输等等。

3.及时性/定时

4.安全性

四、因特网提供的运输服务

两个运输层协议,TCP(Transmission Control Protocol),UDP(User Datagram Protocol)

1.TCP服务

面向连接的服务------------------可靠的数据传输服务
面向连接的服务:
在报文交换之前,TCP让用户和服务器交换运输层的控制信息,然后就在两个套接字之间建立了连接(全双工),第一次握手。当报文发送结束时,如果没有多个相同收发方的报文发送,则拆除连接。

应用数据丢失带宽要求时间敏感
文件传输不能丢失弹性
电子邮件不能丢失弹性
Web文档不能丢失弹性
网络电话/视频会议容忍丢失音频:_kbps–1Mbps,视频:10kbs–5Mbps100ms
流式存储的音频/视频容忍丢失同上几秒
交互式多人游戏容忍丢失_kbps–10kbps100ms
手机短信不能丢失弹性
TCP安全

如果发送方以明文发送,那么在传输过程中的经过的所有链路,都有可能会被嗅探和发觉。SSL就是为了解决这个问题而发明的,这是一个应用层协议,而不是运输层协议。

2.UDP服务

无连接---------------不可靠数据传输
UDP传输不保证消息能完整地、有序的到达接收端。
UDP没有拥塞控制机制,所以可以以任意速率向网络层注入数据。

五、应用层协议

应用层协议定义了:
报文的类型、
各种报文的语法,
字段的语义(含义),
确定进程能够发送报文的时间以及如何响应报文

二、Web和HTTP

Web区别于广播,可以让用户按需操作。

一、HTTP概况

Web的应用层协议是超文本传输协议(HTTP),HTTP由两个程序实现:两个在不同端系统中的客户端和服务端通过报文交换信息。HTTP的功能就是定义报文的结构和报文交换的方式。
Web网页(文档)由一组对象组成。
Web服务器是实现了HTTP的服务器端,用于存储Web对象,每个web对象通过URL寻址。
HTTP定义了web客户向web服务器请求页面的方式,以及web服务器向客户发送web页面的方式。
HTTP的运输协议是TCP,因此客户请求的时候会先发起连接,通过套接字访问。
关于TCP,一旦客户通过套接字发出了请求报文,报文就脱离了客户的控制,进入TCP控制,因为用户能控制的只是套接字的应用层部分。
HTTP的一个显著特点是,它是一个无状态协议。服务端向客户发送被请求的文件,但不存储任何客户状态信息。

二、非持续连接和持续连接

如果用户和服务器在一段时间内通信,客户发出一系列请求要求服务器响应。如果应用程序将每个请求/响应作为单独的TCP发送,那么这种连接方式成为非持续连接。如果所有的请求和响应都经相同的TCP发送,那么叫做持续性连接。HTTP可以支持两种连接,默认持续连接。

1.采用非持续连接的HTTP

2.采用持续连接的HTTP

三、HTTP报文格式

1.HTTP请求报文

GET /somedir/page.html HTTP/1.1
Host:www.someschool.edu
Connection:close
User-agent:Mozilla/5.0
Accept-language:fr


第一行叫做请求行,后面的叫做首部行。
请求行分为方法字段(GET,POST,HEAD,PUT,DELETE),
URL字段,本例表示请求的对象是/somedir/page.html
HTTP版本字段
首部行Host:www.someschool.edu指明了对象所在的主机
首部行Connection:close表示传输完这个数据包之后,关闭连接
首部行User-agent:Mozilla/5.0表示向服务器发送请求的浏览器(用户代理)的类型
首部行Accept-language:fr表示如果有该对象的多个语言版本,则取法语版本
请求报文后面还有一个实体体,如果是GET网页的话,该体为空,如果是POST的话,这个体需要传入用户传入的数据。例如,用户提交表单时,常常用到POST方法,用户通过搜索引擎请求搜索,并要求返回查询结果的web网页时,这个体就存放查找的关键词。

2.HTTP响应报文

HTTP/1.1 200 OK
Conection:close
Data: Mon, 21 Mar 2021 23:36:22 GMT
Server: Apache /2.2.3 (CentOS)
Last-Modified: Mon, 21 Mar 2021 23:36:22 GMT
Content-Length: 6821
Content-Type: text/html
(data data data ...)

报文的组成:一个初始状态行,6个首部行,然后是实体体(entity body)
状态行:协议版本、状态码、状态信息。
大致功能和请求报文类似,要注意的是Data首部行表示的是该响应报文发送的时间,而不是对象最后被修改的时间。
Last-Modified对于本地缓存网页的更新非常重要。
Content-Type表示传输的对象是html文本
关于一些状态码:
200 OK :请求成功,信息在返回的报文中。
301 Moved Permanently:请求的对象被永久的转移了。新的URL会在响应报文的Location中,客户端会在接收时获取新的URL。
400 Bad Request:服务器无法理解你的请求。
404 Not Found:你请求的文档不在服务器上
505 HTTP version not supported:服务器不支持豹纹的http版本

四、用户与服务器的交互:cookie

cookie允许站点对用户进行跟踪。
组成部件:
1.在HTTP响应报文中有一个首部行。
2.在HTTP请求报文中有一个首部行。
3.在用户端系统中保留一个cookie文件,并由浏览器进行管理。
4.Web站点的后端数据库中。
首部行可能是Set-cookie:1678,那么接受到的浏览器就会在cookie文件中增加一行。
如果发往服务器的每个HTTP报文请求都包含首部行cookie:1678的话,服务器就可以知道1678用户做了什么,到过哪里。例如,提供购物车服务,服务器维护用户1678的购物车,在最后由客户一起付费;再例如,当第一次购买选择收货地址之后,以后就不必再输入了(第4点)。
cookie可以用于标识一个用户:在首次访问一个节点时,可能需要一个用户标识;而在后继对话中,通过浏览器向服务器传递的cookie,让服务器标识该用户,把这个用户的相关操作和信息 保存到后台。因此,cookie建立了无状态的HTTP上的一个用户会话层。

五、Web缓存

Web缓存,也叫代理服务器,Web缓存有自己的磁盘空间,用于存储最近请求过的对象的副本。通过配置用户的浏览器,可以使用户的HTTP请求首先指向Web缓存器,
例如用户请求访问百度,那么(1)浏览器会先建立到Web缓存器的TCP连接,(2)Web缓存检查,有的话直接返回,没有的话,Web缓存打开一个与原来要连接的服务器的TCP连接,(3)服务器的响应报文发送到Web缓存。(4)Web缓存在本地缓存保存一份该对象的副本。,并利用之前与客户端的TCP发送该副本。整个过程Web缓存同时担任C和S的身份。

1.Web缓存器优点

1.Web缓存器能够大大减少对客户的响应时间,尤其是客户与服务器的瓶颈带宽低于与Web缓存的瓶颈带宽时。
2.Web缓存器极大减少了一个机构的接入链路到因特网的通信量,避免机构不断增大自己的带宽。
3.Web缓存器整体减少了网络上的流量,改善所有应用的性能。

2.响应时间

局域网时延、接入时延(两台路由器之间的时延)、因特网时延之和。
举一个例子,传输路径上有一条链路带宽15Mbps,对象的平均长度1Mb,机构的浏览器到服务器平均每秒有15个请求,忽略HTTP的请求报文,只考虑响应报文。互联网时延定位2s
局域网的流量强度 = (15个请求/s)X(1Mb/个请求)/(100Mbps) = 0.15
而接入链路的流量强度 = (15个请求/s)X(1Mb/个请求)/(15Mbps) = 1
(结果分析待续)
时延2 X 1 = 2s
解决方法:
提高介入链路速率(成本高)
安装Web缓存器(计算命中率,乘以时间)
假设该机构缓存命中率0.4(0.2-0.7之间),因为客户和Web缓存器处于一个高速局域网上,这%40的请求时延小于10ms,剩余的流量接入链路,平均时延0.4 X 0.01 + 0.6 X 2.01 = 1.2 秒,甚至小于拓宽链路之后的时延。
现在基于Web缓存器的内容分发网络(Content Distribution Network
),利用许多地理上分散的Web缓存器,实现了流量的本地化,多个共享CDN(Akamai)和单个共享CDN(谷歌和Netflix)。

3.条件GET方法

这是对于Web缓存器中的副本过期的更新方法。
当用户向缓存器发起访问请求的时候,缓存区先向服务器发送一个条件GET执行检查,

GET /somedir/page.html HTTP/1.1
Host:www.someschool.edu
If-modified-since : Mon, 21 Mar 2021 23:36:22 GMT

向服务器询问在副本被发送之后,是否在服务器修改了这个文件,如果在这个时间之后没有修改,那么服务器向web缓存发送:(不必包含对象)

HTTP/1.1 304 Not Modified
Data:Mon, 22 Mar 2021 10:36:22 GMT
Server: Apache /1.3.0 (Unix)
(empty entity body)

如果修改了,那么这个副本就失效了,把服务器发过来的网页更新本地缓存,然后发给浏览器。

三、因特网中的电子邮件

电子邮件是一种异步通信媒介,电子邮件包括的特性有:具有附件。超链接、HTML格式文本、图片报文等
三个组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)。
用户代理用于用户阅读、回复、写、保存报文,相当于用户界面。
当Alice完成一封邮件时,它的用户代理把邮件发往邮件服务器,当Bob要阅读邮件时,它的用户代理从邮件服务器的,他的邮箱中取得邮件。
每个接收方都在某个邮件服务器上有一个邮箱。
SMTP是电子邮件主要的应用层协议。他使用可靠的TCP传输(两个SMTP服务器之间建立tcp连接)。
每台邮件服务器既运行SMTP客户端(发起会话)也运行SMTP服务端(收)。
SMTP一般不会使用中间服务器发送,即使相距很远,也会建立直接连接。但是,如果接收方的邮件服务器没有开机,那么发送文件就会在发送服务器上等待。和HTTP一样,SMTP采取的是持续连接,多个同一时间段的请求会通过同一TCP链接发送。

一、HTTP对比SMTP

HTTP是从Web服务器向Web客户传送文件(也叫对象),
SMTP是从一个邮件服务器向另一个邮件服务器传输邮件报文。
HTTP是一个“拉”协议,即有人预先往Web服务器装载信息,用户通过HTTP从服务器上拉起需要的消息。TCP连接是想要接收文件的一方发起的。
SMTP是一个“推”协议,把邮件报文从发送服务器推向接受服务器。TCP是由要发送的一方发起的。
SMTP要求采用7位ASCLL码,HTTP没有这个要求。
对于包含文本和图形的文档,HTTP把每个对象封装在自己的HTTP响应报文中,SMTP把所有报文放在一个报文中。

1.邮件访问协议

2.POP3
3.IMAP

四、DNS协议:因特网的目录服务

Domain Name System,域名系统,主要功能是提供主机名到IP地址的转换目录。

DNS是一个由分层DNS服务器实现的分布式数据库。和一个使主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上。

一、DNS提供的服务

1.主机别名

应用程序可以通过主机别名来获得主机的规范主机名和IP地址。

2.邮件服务器别名

电子邮件软件可以通过调用DNS解析主机别名,获得主机规范名和IP地址。

3.负载分配

繁忙的网站站点(cnn.com)被分布在多台服务器上,这些Web服务器对应的IP地址集合和一个规范主机名(域名)联系。当用户对映射到某个地址集合的域名发出DNS请求时,该服务器会用IP地址集合来响应。DNS就会在Web服务器之间循环分配负载,来决定到底是那一台主机来响应用户请求。

二、DNS实现了因特网上的分布式数据库

1.分布式、层次数据库

DNS服务器分为三种:根DNS服务器,顶级域TLD(DNS)服务器,权威DNS服务器。
例如,假如用户访问www.amazon.com,
用户首先和根服务器联系,根服务器返回顶级域名com的TLD服务器地址,然后用户和某一TLD服务器联系,TLD服务器返回amazon.com的权威服务器地址,最后,用户和amazon.com的某以权威服务器联系,权威服务器返回www.amazon.com的IP地址。

2.DNS服务器层次结构

根DNS服务器
com DNS服务器
org DNS服务器
edu DNS服务器
facebook.com DNS服务器
amazon.com DNS服务器
pbs.org DNS服务器
nys.edu DNS服务器

层次结构图

根DNS服务器

遍布全球的四百多个根服务器,提供TLD服务器的IP地址

顶级域TLD(DNS)服务器

对于每个顶级域(com,edu等)都与各自的TLD服务器集群。每个公司维护一个顶级域的TLD服务器。TLD服务器提供了权威服务器的IP地址。

权威DNS服务器

因特网所有公共可访问的主机,都要提供DNS记录,这些记录把主机名字映射成IP地址。权威服务器收录了自己的主机名到IP地址的映射。因为一个公司的域名可能有多台IP不同的服务器连接。

3.本地DNS服务器

主机发出的所有DNS请求都会先发给本地DNS服务器,然后转发到DNS服务器层次结构中,起着代理的作用。
DNS服务器交互
如果从TLD服务器只能找到中间服务器,中间服务器依次才能知道权威服务器的地址、例如,马萨诸塞大学的大学DNS服务器是dns.umass.edu,每个系都有自己的DNS服务器,这个服务器是本系所有主机的权威服务器。则流程是,中间服务器->大学服务器->系服务器->需要连接的一台设备。这个查询是递归查询。我们一般采用上图的查询方式,从请求机到本地DNS是递归查询,其他都是迭代查询。

4.DNS缓存

当某个DNS服务器收到一个DNS请求时,会把这个主机名/IP映射保存在本地缓存中,当另一个对相同主机名的查询到达这个DNS服务器,该服务器可以直接返回IP地址,不必在访问其他DNS服务器。

5.DNS记录和报文


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星辰的野望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值