应用层概述


超文本传输协议——HTTP

万维网的工作过程  
用户确定要访问网页的URL,并将其输入到浏览器的地址栏中。  
浏览器向DNS服务器发出请求,获取Web服务器域名所对应的IP地址。  
浏览器向指定IP地址的Web服务器发出与端口80建立一条TCP连接的请求。80端口是Web服务器提供Web服务的端口。  
在得到Web服务器确认并且TCP连接建立成功后,浏览器再向Web服务器发出一条请求传输网页的HTTP命令。  
当Web服务器收到请求后,向浏览器发送其所需的网页文件。  
网页文件发送完成后,由Web服务器主动关闭TCP连接。至此,HTTP的工作过程结束。  
浏览器显示所收到的网页文件。如果网页文件中包含图片等信息,还要再次与Web服务器建立TCP连接下载相应图片信息等。

HTTP工作原理  
首先客户机程序创建一个套接字,通过ip和端口号来定位,同时向服务器发出TCP连接请求,并通过服务器的确认建立TCP连接。  
客户机程序根据需要利用TCP连接向服务器发送相应的请求命令。HTTP服务器也可以由其他类型的网关充当代理服务器,这样,HTTP便可以允许用户访问其他因特网协议,如SMTP、FTP、Gopher等。  
服务器接收到客户机程序的请求命令后进行相应的处理,然后将处理结果以响应消息的形式通过TCP连接返回给客户机程序。  
完成本次请求/应答后,客户机程序和服务器程序都可以通过关闭套接字来结束本次的TCP连接

请求报文格式  
信息首部  
User-Agent:产生请求的浏览器类型;  
Accept:客户端可识别的响应内容类型列表;星号 “* ” 用于按范围将类型分组,用 “   /   ” 指示可接受全部类型,用“type/*”指示可接受type类型的所有子类型;  
Accept-Language:客户端可接受的自然语言;  
Accept-Encoding:客户端可接受的编码压缩格式;pAccept-Charset:可接受的应答的字符集;  
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;  
Connection:连接方式(close或keepalive);  
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie

响应报文格式  
状态码:响应类型,3位10进制数组成  
1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;  
2xx:表示服务器已成功接收到请求并进行处理;  
3xx:表示服务器要求客户端重定向;  
4xx:表示客户端的请求有非法内容;  
5xx:表示服务器未能正常处理客户端的请求而出现意外错误

cookie:使用cookie来标识状态,存在于客户端。
web缓存:代理服务器,ISP通过设置服务器来缓解初试服务器的压力,提高网速。

文件传输协议(FileTransfer Protocol,FTP)

FTP属于TCP/IP协议族的应用层协议,其传输层使用的是TCP,基于客户机/服务器模式工作,为数据传输提供了可靠保证。
FTP工作原理 
FTP的工作过程其实就是客户机程序根据用户需要发送命令,服务器程序响应命令的过程。 
需要建立两种类型的连接:控制连接和数据连接。控制连接传送客户机程序发出的命令和服务器返回的响应信息,而数据连接则负责传输文件的内容。

启动FTP服务器:由于FTP采用了客户机/服务器工作模式,因此在创建FTP会话之前,首先必须启动FTP服务器,并使其处于等待客户机程序的FTP请求状态。  
打开FTP并建立控制连接:启动FTP客户机程序,并向FTP服务器的21端口(控制连接端口)发出主动连接的请求,以期获得FTP服务器的相应权限。服务器响应请求后便在用户协议解释器和服务器协议解释器之间建立了一条TCP连接。  
建立数据连接并进行文件传输:用户通过客户机程序输入FTP命令,服务器接收命令。如果命令正确且需要进行文件传输,服务器使用TCP20端口在双方之间建立另一条TCP连接,即数据连接,并通过该连接进行文件传输。当本次命令的文件传输完毕,关闭该数据连接。  
关闭FTP:用户执行完其所需的FTP命令后,发出退出FTP命令,控制连接关闭,本次FTP服务结束。

常见的命令如下:
  • USER username :用于向服务器传送用户标识
  • PASS password:用于向服务器发送用户口令
  • LIST:用于传回当前目录的所有文件的列表
  • RETR filename:用于从远程主机的当前目录检索文件(即get)
  • STOR filename:用于在远程的主机上的当前目录存放一个文件(即put)
常见的报文如下:

331 Username OK,Password required (用户名OK,输入密码)
125  Data connection already open; transfer starting(数据连接打开,空时传输文件)
425 Can’t open data connection(无法打开数据连接)
452 Error writing file (写文件差错)

邮件传输协议

需要发送者邮件代理、发送者邮件服务器、接收者邮件服务器,接收者代理4个程序的参与。
 
在邮件传输过程中,起关键作用的是两个邮件传输协议:SMTP和POP3。
SMTP (Simple Mail Transfer Protocol)是简单邮件传输协议的缩写,是建立在传输层协议TCP上的可靠高效的邮件传输协议,采用请求/应答方式来实现。整个工作过程包括连接建立、邮件传送和连接释放3个阶段。 
连接建立:SMTP是基于客户机/服务器模式工作的,邮件服务器在TCP的25端口守候客户机的请求。当需要发送邮件时,发送主机的SMTP客户机向连接主机的SMTP服务器的TCP端口25发出建立连接请求,得到服务器确认后连接建立。此后,SMTP客户机再次向SMTP服务器发送HELO命令,并附上发送方主机名以确认SMTP服务器是否已经准备好接收邮件。如果SMTP服务器应答“250 XXXX”表示已准备好接收邮件。
邮件传送 
SMTP客户机得到SMTP服务器的肯定回答后,随即可利用MAIL命令告诉SMTP服务器新的邮件发送操作已经开始。如果SMTP服务器已经准备好接收邮件,则以250应答代码应答。 
其后SMTP客户机可以用RCPT命令发送邮件接收者的目的地址,以便SMTP服务器把邮件内容最终传送到收件人的邮箱中。如果命令被接收,则返回250应答码。 
然后SMTP客户机可利用DATA命令告诉SMTP服务器下面将要发送邮件内容。如果命令被接收,则SMTP服务器以354应答码应答,并认定以下的各行都是邮件内容。发送完毕后,再发送

DNS


域名系统(Domain Name System, DNS)是一种工作在TCP/IP的应用层的分布式网络目录服务系统,它通过一个遍布全球的分布式数据库,提供主机名称和IP地址之间的映射。
域名解析 
递归解析 
当一个DNS服务器接收到请求后,如果它本身就是授权服务器,则查询其所存储的域名空间信息并给出响应; 
如果它不是授权服务器,则将请求转发给另一个DNS服务器; 
直到请求最终被响应后,再逐级将响应信息返回给请求客户机。 
反复解析 

当一个DNS服务器接收到请求后,如果能给出解析结果则向客户机返回最终结果,否则应向客户提供其认为能够给出解析结果的DNS服务器的IP地址。 
客户机收到该IP地址后再向该IP地址对应的DNS服务器发出请求,直到获得最终结果。
DNS报文 
包括请求报文和响应报文 
12字节报文首部和4个长度可变的字段组成 
一般采用UDP传输,超过512字节采用TCP传输 
UDP和TCP中端口号均为53

Socket
当一个DNS服务器接收到请求后,如果能给出解析结果则向客户机返回最终结果,否则应向客户提供其认为能够给出解析结果的DNS服务器的IP地址。 
TCP下的socket,处于应用层和运输层之间,给出了一个接口,可以使用TCP协议进行通信。


TCP 下socket流程:






猜你喜欢

转载自blog.csdn.net/huabuxiu/article/details/79750048