【计算机网络】第2章 应用层

本文涉及的产品
.cn 域名,1个 12个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【计算机网络】第2章 应用层

应用层

应用层协议原理

应用层网络应用体系结构有三种,老生常谈的东西


客户机/服务器

对等 (P2P)

客户机/服务器与P2P的混合

应用层的通信,本质是两台不同主机间进程的通信,如果两个进程在同一台主机上,进程间的通信由操作系统控制;如果是不同主机的两个进程,通过网络报文进行


套接字是应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口,是进程通信的接口


用户代理:是用户与网络应用程序之间的接口,如浏览器Web应用的用户代理



套接字识别进程的话分为两步,识别网络中的哪一个主机,它用主机的地址标识,还需要识别主机中的哪一个进程, 它用端口号标识


因特网运输层给应用层提供的服务有


传输控制协议TCP (面向连接)

过程是:建立连接(握手过程),传输报文,拆除连接

通信进程可以无差错、按适当顺序交付发送的数据,当发送方和接收方之间的网络出现拥塞时,会抑制发送进程速率

用户数据报协议UDP(面向无连接)

过程:两个进程通信前没有握手过程

不保证报文能够被接收,或收到的报文是乱序到达,发送进程可以任何速率发送数据

TCP和UPD都没有提供任何加密机制,加密层由应用程序实现,它位于应用层和传输层之间,由安全层套接字层实现(Secure Socket Layer, SSL)


下面是常见应用对应的应用层协议和传输协议





Web和HTTP

一,基本概念


HTTP超文本传输协议,是web的核心,它定义了报文的格式以及客户机和服务器交换报文的方式


一个web页面,就是一个文档,一个文档由若干对象组成,一个对象就是一个文件,对象比如说:HTML文件,JPEG图片等等


每个对象都能在网络中定位,通过url统一资源标识符



客户机和服务器的交互过程,包含 创建TCP连接→交换报文→关闭TCP连接,底层是通过TCP建立的可靠连接,但是HTTP是无状态的,客户机请求多次,服务器也会响应多次



二,HTTP连接


首先是非持续连接,基本上现在的网络中不会用,每个TCP连接只传输一个请求报文和一个响应报文,服务器返回对象后关闭,每次请求一个对象都要重新连接


TCP连接的“三次握手”过程,如下


客户机发送一个TCP连接请求报文

服务器回送一个TCP确认响应报文

客户机向服务器发送一个包含“ HTTP请求”与“TCP确认”的报文


非持续连接缺点:服务器负担重,每个对象传输时间延长(每个对象都要两个RTT时延)


持续连接


相同客户机与服务器之间的后续请求和响应报文通过相同的连接进行传送,省去了再次建立连接的过程,不过一定时间间隔未被使用,服务器会关闭连接


持续连接包含,非流水线方式和流水线方式


非流水线方式:客户机只能在前一个响应接收到之后才能发出新的请求

流水线方式:客户机可一个接一个连续产生请求(只要有引用就产生),即在前一个请求接收到响应之前可以产生新的请求


http请求的报文如下



三,用户与服务器交互:Cookie


HTTP服务器是无状态的,不保存客户信息,所以需要需要Cookie让服务器与用户相关联


在HTTP响应报文中有一个cookie 首部行

在HTTP请求报文中有一个cookie 首部行

用户主机中保留有一个 cookie 文件并由浏览器管理

Web站点的后端数据库保存cookie

工作流程:



四,Web缓存器


Web缓存器(Web cache):也叫代理服务器,它存在的意义在于加快客户机想服务器请求对象的速度,原理如下:


浏览器向缓存发送所有HTTP请求,如果在Web缓存中,就之间返回该对象,如果不在,则代理服务器替用户想原始服务器发送请求,接收后转发给客户机,和高速缓存类似,减少响应时间,减少内部和因特网的通信量




五,条件GET方法


在使用Web缓存的时候,存放在缓存中的对象拷贝可能是旧的。即保存在起始Web服务器中的对象可能已经被修改,条件GET方法可以使得缓存的对象一直是最新状态,流程如下


客户机第一次请求时候,Web服务器回发响应报文给Web缓存器,包括对象的最后修改时间Last-modified:date1,Web缓存器记录时间并且缓存对象

客户机再次请求,缓存器检查Web服务器中的该对象是否已被修改,发送一个条件GET请求报文If-modified-since: date1

若Web服务器中的该对象未被修改,则响应报文含有304 Not Modified,并且实体为空;如果修改过,再次重新发送响应报文,携带Last-modified:date2




文件传输协议FTP

本地主机上的用户,向远程主机上传或者下载文件,用户通过一个FTP用户代理与FTP服务器交互



FTP运行在TCP之上,FTP建立了两个并行的连接控制连接和数据连接


控制连接

在21号端口上建立,用于在两主机间传输控制信息(如用户标识、口令等),它是持续连接的:在整个用户会话期间一直保持


数据连接

在20端口建立,用于准确传输文件,在该数据连接上传送一个文件并关闭连接,它是非持续连接的:会话中每进行一次文件传输,都需要建立一个新的数据连接


FTP较HTTP来说,是带外传输,是分离控制的;还有是FTP协议是有状态,会对用户行为进行追踪,并控制会话总数


电子邮件SMTP(讨论应用层)

电子邮件系统的总体结构由三部分组成:用户代理,邮件服务器,简单邮件传输协议SMTP



用户代理

即邮件阅读器,允许用户阅读、回复、发送、保存和撰写报文,用户接收和发送邮件都用通过用户代理


比如说:qq邮箱,阿里邮箱,Foxmail



邮件服务器(mail server)

邮件服务器里面由报文队列,存储要转发的邮件报文;自身并且存储了用户的所有邮件


用户访问自己邮箱时,邮件服务器对其身份进行验证(用户名和口令),若投递失败,发送方将其保存在一个报文队列中,以后每30分钟发送一次,若几天后仍未成功,将该报文删除,并通知发送方


简单邮件传送协议SMTP

SMTP使用端口为25,并且SMTP不使用中间邮件服务器发送邮件


把一封邮件从发送邮件服务器传送到接收邮件服务器的过程: 如Alice 向 Bob发送报文


SMTP较HTTP来说共同点和不同点


相同点:


都用于从一台主机向另一台主机传送文件

都是持续连接

不同点:


SMTP是推协议:发送邮件服务器把文件推向接收邮件服务器,其TCP连接是由要发送文件的机器发起。

HTTP是拉协议:用户使用HTTP从服务器拉取信息,其TCP连接是由想获取文件的机器发起。

SMTP对传输的数据有限制,只能传输7位ASCII码,对一些包含了非7位ASCII字符的报文或二进制数据(如图片、声音),需要按照7位ASCII码进行编码,再传送

HTTP数据没有该限制

SMTP所有报文对象放在一个报文中

HTTP把每个对象封装在它各自的HTTP响应报文中发送

MIME(多用途因特网邮件扩展):用于非ASCII数据传输。将非ASCII数据编码后传输,接收方再解码还原,增加新的MIME邮件首部,接收的报文还有Received字段首部行



邮件访问协议

邮件访问协议就是取邮件的协议,因为SMTP协议只能发送邮件,取邮件有其它的协议,有POP3(第三版的邮局协议),IMAP(因特网邮件访问协议),HTTP


POP3

在用户代理打开了一个到邮件服务器(服务器)端口110上的TCP连接后,身份认证后,开始工作,功能有限,取回后自动删除(这是缺陷)

IMAP

在用户的PC机上运行IMAP客户程序,然后与ISP的邮件服务器上的IMAP服务器程序建立TCP连接,是联机协议(实现复杂)

HTTP

用户使用浏览器收发电子邮件,发件人使用HTTP 将电子邮件报文从其浏览器发送到其邮件服务器上,然后收件人使用HTTP从其邮箱中取一个报文到浏览器。容易进行目录管理。

DNS(因特网的目录服务)

标识主机的方式有主机名和ip地址,主机名容易记忆,通常需要将主机名检索出对应的ip地址,DNS提供此服务,进行主机名到IP地址的转换


DNS运行在UDP协议之上,使用53端口,DNS通常直接由其他的应用层协议 (包括HTTP、SMTP 和FTP)使用,以将用户提供的主机名解析为IP地址。用户只是间接使用


DNS工作机理概述


某个应用程序调用DNS的客户端,并指明需要被转换的主机名

用户主机上的DNS接收到后,向网络中发送一个DNS查询报文

经过若干毫秒到若干秒的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文

映射结果被传递到调用DNS的应用程序

DNS设计


简单设计(集中式设计)

假设因特网上只使用一个DNS服务器,该服务器包含所有的映射

优点:设计简单

缺点:单点故障,通信容量,远距离请求导致延时长,维护困难

分布式、分层次式设计

为了处理扩展性问题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内

第一层为根DNS服务器:世界上有13台,是冗余服务器,具有可靠性

第二层为顶级域(TLD)DNS服务器:负责顶级域名如net、gov,以及所有国家的顶级域名如uk、fr、ca和jp

第三层为权威DNS服务器:在因特网上具有公共可访问主机的组织机构用来保存将主机名映射为IP地址的DNS记录。多数大学和大公司实现和维护它们基本和辅助的权威DNS服务器

本地DNS服务器,不算DNS服务器层次结构,可以起缓存代理作用,减少访问次数,提高效率,由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息

交互过程


迭代查询


递归查询



DNS记录报文


资源记录是一个包含了下列字段的4元组**(Name,Value,Type,TTL)**


TTL决定记录生存时间


Name和Value的值取决于Type


Type=A,Name则是主机名,Value是该主机对应的IP地址。提供了标准的主机名到IP地址的映射。(relayl.bar.foo.com,145.37.93.126,A)

Type=NS,Name是一个域(如foo.com),Value是个知道如何获得该域中主机IP地址的权威DNS服务器主机名。该记录用于沿着查询链来路由DNS查询。 (foo.com,dns.foo.com,NS)

Type=CNAME,Value是别名为Name的主机对应的规范主机名。向查询的主机提供一个主机名对应的规范主机名。(foo.com,relayl.bar.foo.com,CNAME)

Type=MX,Value是别名为Name的邮件服务器的规范主机名。(foo.com,mail.bar.foo.com,MX)MX记录允许邮件服务器主机名具有简单的别名。

如果服务器不是用于某主机名的权威服务器,则该服务器会有一条类型NS记录,该记录对应于包含主机名的域;还将包含一条类型A记录


DNS报文结构



这里面的请求流程比较难懂,希望大伙能够自己琢磨一会,我花了2个小时才看明白/(ㄒoㄒ)/~~


例子:当请求www.liangyuanshao.top的时候


1.我这台主机向本地DNS服务器发请求

2.本地DNS服务器请求根域名服务器,根域名服务器返回dns.top的顶级域名服务器地址

3.本地DNS服务器请求dns.top顶级域名服务器,dns.top顶级域名服务器返回dns.liangyuanshao.top权威域名服务器的地址

4.本地DNS服务器请求上面dns.liangyuanshao.top权威域名服务器的地址,它返回服务器主机的ip地址

5.DNS根据服务器把ip地址告诉我这台主机,主机建立和服务器的TCP通信

P2P 文件共享

TCP的套接字 编程

UDP的套接字 编程

构建一个 Web 服务器

小结


相关文章
|
5月前
|
存储 分布式计算 监控
应用层---网络模型
应用层---网络模型
43 3
|
21天前
|
域名解析 网络协议 前端开发
【第四期】网络层、传输层、应用层
【第四期】网络层、传输层、应用层
22 3
|
25天前
|
XML JSON 网络协议
【网络】TCP/IP五层网络模型:应用层
【网络】TCP/IP五层网络模型:应用层
15 1
|
4月前
|
域名解析 存储 网络协议
一次读懂网络分层:应用层到物理层全解析
**网络五层模型简介:** 探索网络服务的分层结构,从应用层开始,包括HTTP(网页传输)、SMTP(邮件)、DNS(域名解析)和FTP(文件传输)协议。传输层涉及TCP(可靠数据传输)和UDP(高效但不可靠)。网络层由IP(路由数据包)、ICMP(错误报告)和路由器构成。数据链路层处理MAC地址和帧传输,物理层规定了电缆、连接器和信号标准。了解这些基础,有助于深入理解网络运作机制。
315 5
|
5月前
|
网络协议 API
【计算机网络概述】第二章:应用层:2.1 应用层原理
【计算机网络概述】第二章:应用层:2.1 应用层原理
|
5月前
|
域名解析 存储 缓存
【基础计算机网络】应用层
【基础计算机网络】应用层
|
6月前
|
传感器 数据可视化 JavaScript
物联网架构:感知层、网络层和应用层
【5月更文挑战第30天】物联网(IoT)由感知层、网络层和应用层构成。感知层利用传感器(如DHT11)收集环境数据;网络层通过ESP8266等设备将数据传输至云端;应用层提供用户服务,如Node-RED实现数据可视化。示例代码展示了Arduino读取温湿度,ESP8266连接Wi-Fi及Node-RED数据可视化流程。物联网架构为数据处理与服务提供全面支持,预示其在各领域广阔的应用前景。
416 2
|
5月前
|
网络协议
计算机网络学习记录 应用层 Day6(1)
计算机网络学习记录 应用层 Day6(1)
33 0
|
5月前
|
存储 缓存 网络协议
计算机网络网--应用层
计算机网络网--应用层
39 0
|
5月前
|
机器学习/深度学习 前端开发 JavaScript
【计算机网络】深度学习使用应用层的HTTP协议
【计算机网络】深度学习使用应用层的HTTP协议
57 0