一、应用层干了啥
应用层作为网络的最上层,他提供了很多应用层协议。
这些协议嵌套在各种我们使用的应用程序中,
为用户与网络之间提供一个打交道的接口。
我们在使用各种网络应用程序时,都是内置有应用层协议的。
比如,IE浏览器,使用的是应用层的HTTP协议;
QQ使用的应用层协议是OICQ;
Outlook使用收发邮件的SMTP、POP3协议。
这里要注意一点,我们所使用的软件是应用程序,
这些软件只是软件开发者编程开发出来的,这些应用软件只是一个壳子,
而这些软件里嵌套的协议才是应用层的内容,
使用网络的程序需要集成协议才可以正常使用。
举几个OSI应用层与我们打交道的常见例子:
我们要看网页,打开IE浏览器,输入一个网址,就进入了相应的网站,那么这个IE浏览器就是我浏览网页的应用工具,也是工作在应用层的。IE浏览器是基于HTTP协议开发的,HTTP是一个应用层的协议。
我们要使用FTP上传下载一个文件,会首先打开FTP客户端,然后去连接FTP服务器,这个客户端,就是应用层的工具。FTP客户端是基于FTP协议开发的,FTP协议也是一个应用层的协议。
我要发一封E-mail,我会在电脑装一个Foxmail、Outlook等邮件客户端软件,然后编辑邮件,发送给相应的人。Outlook、Foxmail是基于SMTP和POP3协议开发的,SMTP、POP3也是应用层的协议。
总的来说:应用层对应用程序的通信提供服务。
应用层协议定义了:
1.应用进程交换的报文类型,是请求还是响应?(类型)
2.各种报文类型的语法,比如报文中各个字段及其详细描述。(语法)
3.字段的语义,即包含在字段中的信息的含义;(语义)
4.进程何时、如何发送报文,以及对报文进行响应的规则。(同步)
应用层的功能:
1.文件传输FTP与TFTP
2. 电子邮件SMTP和POP3
3.虚拟终端HTTP
4.查询服务和远程作业登录DNS
二、网络应用模型
客户端/服务器模型
服务器:
一个总是打开的主机,提供计算服务的设备。
他服务于其他称为客户机的主机请求。
工作流程:
1.服务器处于接受请求的状态;
2.客户机发出服务请求,并等待接受结果;
3.服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
客户机:
1.与服务器通信,使用服务器提供的服务
2.间歇性接入网络
3.可能使用动态IP地址
4.不与其他客户机直接通信
应用:
WEB,
文件传输FTP,
远程登陆,
电子邮件
P2P模型
任意一对计算机称为对等方。
不存在永远在线的服务器,每个主机既可以提供服务,也可以请求服务。
任意端系统/结点之间可以直接通讯。
可扩展性好,网络健壮性强。
缺点是在获取服务的同时,还要给其他结点提供服务,因此会占用较多内存,影响整机速度。
三、域名系统DNS
域名系统DNS是因特网使用的命名系统,用来把便于人们记忆的,具有特定含义的主机名,转换为便于机器处理的IP地址。
DNS服务的作用:将域名解析成IP地址。
域名服务器
1.本地域名服务器
每个因特网服务提供者ISP,或者一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。
当一台主机发送DNS查询请求时,这个查询请求报文就发给本地域名服务器。
WINDOWS系统配置中的本地连接里,填写的DNS地址就是本地域名服务器的地址。
2.根域名服务器
根域名服务器是最高层次的域名服务器,
所有的根域名服务器都知道所有的顶级域名服务器的IP地址。
不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,
只要自己无法解析,就首先要求助于根域名服务器。
因特网上根域名服务器的数量:13
这是三个服务器实际上是冗余服务器的集群,
用来管辖顶级域,
通常它不直接把带查询的域名直接转换成IP地址,
而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。
3.顶级域名服务器
负责管辖在该顶级域名服务器下所注册的所有二级域名。
4.授权域名服务器
每台主机都必须在授权域名服务器处登记。
授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
域名解析过程
1.主机向本地域名服务器的查询:递归查询
如果主机所询问的本地域名服务器不知道被查询域名的IP地址,
那么本地域名服务器就代替该主机,以DNS客户的身份,
向根域名服务器继续发出查询请求报文,而不是让主机自己查询。
后面几次查询都是以递归的方式进行的,
本地域名服务器必须给主机一个准确的IP地址。
2.本地域名服务器向根域名服务器的查询:递归与迭代结合查询
客户机还是采用递归的方式向本地域名服务器,
本地域名服务器便发送报文给根域名服务器,
如果找到了,本地域名服务器就把IP地址给主机;
如果没找到,就告诉本地域名服务器,下一步应该向哪个顶级域名服务器进行查询。
然后让本地域名服务器去查询这个指向的顶级域名服务器。
如此迭代,直到找到了目的IP地址。
四、文件传输协议FTP
TFTP:简单文件传送协议
适用于小文件传送,采用UDP协议。
重点介绍FTP。
FTP:文件传输协议,
屏蔽了各个计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。
FTP基于客户端/服务器,采用TCP协议进行传输。
(为什么需要可靠传输?举例:进行作业上传)
FTP服务器:依照FTP提供服务,进行文件传送的计算机就是FTP服务器。
FTP客户端:连接FTP服务器,遵循FTP协议,与服务器传送文件的电脑就是FTP客户端。
一个FTP服务器进程可以同时为多个客户进程提供服务。
FTP服务器进程由两大部分组成:
其中,主进程负责接收新的请求,
从属进程负责处理单个请求。
工作步骤
1.打开熟知端口21,使客户进程能够连接上。
2.等待客户进程法来连接请求。
3.启动从属进程来处理客户进程发来的请求。主进程和从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
3.回到等待状态,继续接收其他客户进程的请求。
控制连接
服务器监听21号端口,等待客户链接,建立在这个端口上的连接称为控制连接。
控制连接用来传输控制信息(如连接请求,传送请求等)。
FTP客户发来的传送请求,通过控制连接发送给服务端的控制进程,
但控制连接并不用来传送文件。
控制连接在整个会话期一直打开。
数据连接
服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传输进程”和“数据连接”。
数据连接用来连接客户端和服务器端的数据传送进程,
数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
五、电子邮件STMP和POP3
思维导图:
一封电子邮件分为信封和内容。
其中,信封里记录了接收方的邮件地址,
内容又分为首部和主体。
首部里记录了发送方的邮件地址和邮件主题,
而主题部分则是将要发送的文字。
组成结构
一个电子邮件系统应具备三个最主要的组成构件:
1.用户代理
用户与电子邮件的接口,拥有邮件处理功能,通常是一个运行在PC上的程序,如Foxmail,Thunderbird等。
2.邮件服务器
是组成电子邮件系统的核心。
功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况
采用C/S方式,但是一个邮件服务器,既可以是客户端,也可以是服务器。
当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,B就作为SMTP服务器;
反之则反。
3.邮件发送协议和读取协议
用户代理→发送方邮件服务器
发送方邮件服务器→接收方邮件服务器
均采用SMTP协议(推);
接收方用户代理→接收方邮件服务器
采用POP3协议或者IMAP协议(拉)。
SMTP协议(简单邮件传送协议)
SMTP协议规定了在两个互相通信的SMTP进程之间应如何交换信息。
负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。
1.连接建立
发件人的邮件发送到发送方邮件服务器的邮件缓存中后,
SMTP客户就每隔一定时间对邮件缓存扫描一次。
如果发现有邮件,就使用SMTP的熟知端口号25与接收方邮件服务器的SMTP服务器建立TCP连接。
连接建立后,接收方SMTP服务器发出220 service ready(服务就绪)。
然后,发送方发送hello命令,并附上发送方的主机名。
SMTP不使用中间邮件服务器,无论多远,都是发送方和接收方这两个邮件服务器之间直接建立。
如果故障,则等待。
2.邮件传送
3.连接释放
邮件发送完毕后,SMTP客户发送QUIT命令,SMTP服务器返回“221”,表示同意释放TCP连接。
SMTP的缺点:
1.不能传送可执行文件或其他二进制对象。
2.仅限于传送七位ASCII码,不能传送其他非英语国家的文字。
3.SMTP服务器会拒绝超过一定长度的邮件。
所以我们通过网际邮件扩充协议MIME。
MIME协议(网际邮件扩充协议)
他增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。
使电子邮件系统可以支持声音、图像、视频、多种国家语言等。
POP3协议(邮局协议)
邮局协议:当用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。
POP采用TCP连接,端口号为110,客户端-服务器方式。
工作方式:
IMAP协议(网际报文存取协议)
允许用户创建文件夹,还允许只读取邮件中的某一部分(比如先看正文,有WiFi时再下载附件)
基于万维网的电子邮件
六、万维网与HTTP协议
万维网WWW是一个大规模的,联机式的资料空间,是无数个网络站点和网页的集合。
万维网内核由三个标准构成:
1.统一资源定位符URL
负责标识万维网上的各种文档,并使每个文档在整个万维网范围内具有唯一的标识符URL。
2.超文本传输协议HTTP
一个应用层协议,使用TCP进行可靠传输,HTTP是万维网客户程序和服务器程序之间必须严格遵守的协议。
3.超文本标记语言HTML
一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息进行描述。
URL——统一资源定位符
URL相当于一个文件名在网络上的扩展。
通过他唯一标识资源
一般形式:
<协议>://<主机>:<端口>/<路径>
常见协议有HTTP,FTP等,
主机是存放资源的主机在因特网中的域名,也可以是IP地址,
端口和路径有事可以省略,
在URL中不区分大小写。
关于WWW
万维网以C/S方式工作,
浏览器是在用户计算机上的万维网客户程序,
而万维网文档所驻留的计算机则运行服务器程序,这台计算机称为万维网服务器。
客户程序向服务器程序发出请求,
服务器程序向客户程序送回客户所要的文档。
流程如下:
1.WEB用火狐使用浏览器输入指定的URL,与WEB服务器建立连接,并发送浏览请求。
2.WEB服务器把URL转换为文件路径,并返回信息给WEB浏览器。
3.通信完成,关闭连接。
超文本传输协议HTTP
HTTP协议定义了浏览器(万维网客户进程)如何向万维网服务器请求万维网文档,
以及服务器怎样把文档传送给浏览器。
HTTP有两类报文:
1.HTTP请求报文:从web客户端向web服务器发送服务请求。
2.HTTP响应报文:从web服务器对web客户端请求的回答。
以访问清华大学的网站为例:
1.浏览器分析URL地址
2.浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址
3.域名系统DNS解析出清华大学服务器的IP地址
4.浏览器与该服务器建立TCP连接(默认端口号为80,服务器进程会不断地监听TCP的端口80)
5.浏览器发出HTTP请求报文:GET/chn/index.htm
6.服务器通过HTTP响应报文把文件index.htm发送给浏览器。
7.TCP连接释放。
8.浏览器解释文件index.htm,并将web页显示给用户。
HTTP协议的特点
HTTP协议是无状态的,也就是说,服务器并不记得曾经访问过的某个用户,也不记得自己为该客户曾经服务过多少次。
这简化了服务器的设计,使服务器更容易处理高并发的HTTP请求。
但是在实际应用中,我们通常使用COOKIE加数据库的方式来记录用户的活动。
Cookie是一个存储在用户主机中的文本文件,里面含有一串识别码,用于WEB服务识别用户。
这可以提供个性化服务,比如在电商平台,根据用户之前浏览过的商品向其推荐新产品等。
HTTP采用TCP协议,但本身是无连接的。
也就是说,HTTP不必考虑数据在传输过程中出现的差错问题。
并且不需要在交换HTTP保温前,建立一个HTTP连接,建立TCP连接即可。
连接方式分为:
非持久连接
每个网页元素对象(如JPEG图形,FLASH等)的传输都需要单独建立一个TCP连接。
也就是说,请求一个万维网文档所需的实践是该文档的传输时间加上两倍往返时间RTT。
其中一个用于建立TCP连接,
另一个RTT用于HTTP请求报文与响应报文的接收。
持久连接
指万维网服务器在发送响应后仍然保持这条链接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求与响应报文。
非流水线方式
客户在收到前一个响应后才能发出下一个请求。
流水线方式
客户每遇到一个对象引用就立即发出一个请求。
因而客户可以逐个地连续发出对各个引用对象的请求。
如果所有的请求和响应都是连续发送的,
那么所有引用对象共计经历一个RTT延迟,而不是像非流水线一样,每个引用都必须有一个RTT延迟。
HTTP报文结构
HTTP请求报文中的常用方法:
1.GET 请求读取由URL标识的信息
2.HEAD 请求读取由URL标识的信息的首部
3.POST 给服务器添加信息(如注释)
4.CONNECT 用于代理服务器