计算机网络(四)应用层

一、应用层

超文本http,文件ftp和邮件smtp,域名解析服务DNS都是应用层协议

有两个应用模型:

C/S模型一般有WebFTP,远程登录和邮件等,其特点是C为服务请求方,S为服务提供方,并且二者地位不平等,利于S端管理,S性能的好坏决定整个系统的性能,CC之间不能直接通信。

P2P模型使整个网络中传输内容不再存在中心服务器中,而是网络中的每个节点都具有下载和上传的功能,有点事减轻服务器压力,将任务分配到各个节点大大提高了系统效率和资源利用率,且可扩张性和网络健壮性都很好。其缺点是在获取服务时,节点也需要提供服务,会占用较多的内存,影响整机速度,并且P2P下载还有损硬盘

4.1DNS

DNS是一个命名系统,使用C/S模型,协议运行在UDP上,使用53号端口。包括层次域名空间(www三级域名.baidu二级域名.com顶级域名),域名服务器(根域名服务器,顶级域名服务器,权威域名服务器,本地域名服务器..),域名解析过程:

客户端需要解析域名时,通过本机的DNS客户端构造一个DNS请求报文,发送UDP数据报到本地域名服务器,本地域名服务器收到请求则查询本地缓存,如无则已DNS客户身份向域名服务器发送请求报文,然后域名服务器查找顶级域名服务器的ip地址返回给本地域名服务器,再由本地域名服务器向顶级域名服务器发送查询报文。一直查到完整的结果,在本地域名服务器缓存起来。

4.2文件FTP

C/S模型,使用两个并行的TCP连接:控制连接和数据连接(使用不同的端口号,使协议更简单和易于实现),控制连接监听端口号21,等待客户连接,在收到FTP客户发来的文件传输请求后建立数据连接并建立数据传送进程用于完成文件的传送。

4.3电子邮件

 

SMTP使用的通信方式,即用户代理发送邮件时,SMTP客户端主动将邮件推送到SMT服务器上,POP3orIMAP)则采用的方式,即用户读取邮件时,用户代理向邮件服务器发出请求,拉取邮件。。

 

其实现在很多邮件发送和接受使用HTTP协议,如GmailHotmail。。

4.4HTTP协议

URL是统一资源定位符,<协议>://<主机>:<端口>/<路径>

HTTP超文本HTML是超文本标记语言)传输协议,使用TCP进行可靠数据传送http本身是无状态的,即同一客户访问同一服务器的页面时,服务器的响应并不因该客户多次访问而有什么不同的响应。这也就简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求,实际应用中通过cookie存储在用户主机,包含识别码用于web服务识别用户+数据库web服务器根据cookie在服务器中查找用户活动记录,进而执行个性化工作。)的方式跟着用户活动。

 

HTTP使用TCP连接,但其本身是无连接的哈,并且一般使用非持久连接,即每个网页元素对象的传送都需要单独建立一个TCP连接,较慢啊。。当然也可以使用HTTP1.1才支持的持久连接。。(又分默认流水线和非流水线方式,即在客户收到前一个响应后才能发出下一个请求的区别)

 

两类HTTP报文:请求报文和响应报文,

在请求报文中常用的几个方法是:GET请求读取URL标志的信息,HEAD则是读取URL标志信息的首部,POST是向服务器添加信息。

 二、常见面试题:

1、HTTPHTTPS区别

(1)https协议需要到ca申请证书,一般免费证书很少,需要交费。

(2)http是超文本传输协议,信息是明文传输,https是安全超文本传输协议,具有安全性的ssl加密传输协议。HTTPS是HTTP的安全版

(3)httphttps使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443

(4)http的连接很简单,是无状态的。

(5)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。

2、HTTP请求报文

包括请求行、请求头部、空行和请求数据

1)请求行:请求方法字段、URL字段、Http协议版本3个字段,用空格隔开。Eg:GET /index.html HTTP/1.1

HTTP请求方法包括GETPOSTHEAD

GET要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。请求参数跟在URL后面,(1)传递参数长度受限制,不适合大量传送数据,(2)可以在地址栏中看到请求参数,不适合传送私密数据

例如:GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1  

POSTpost方法的请求参数封装在HTTP请求数据中,以名称/值形式出现,可传送大量数据。Post方式大多用于页面的表单中。例如:POST /search HTTP/1.1

HEAD类似GET,但服务器接收到HEAD请求后只返回响应头,不会发送响应内容。若只是查看页面的状态,使用HEAD效率高,在传输过程中省去了页面内容。

2)请求头部:关键字/值对,每行一对,形式:关键字:值。用来通知服务器有关客户端请求信息。

User-Agent:产生请求的浏览器类型

Accept:客户端可识别的内容类型列表

Host:请求的主机名

3)空行

用来隔开请求头部和请求数据

(4)请求数据

POST请求方法时使用,GET中没有请求数据。

3、HTTP响应报文

HTTP响应由三个部分组成:状态行、消息报头、响应正文

状态行:HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:服务器HTTP协议的版本

Status-Code服务器发回的响应状态代码

Reason-Phrase:状态代码的文本描述。

Status-Code状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

常见:200---客户端请求成功;400---客户端请求有语法错误,不能被服务器所理解

404--请求资源不存在,例如输入错误URL500---服务器发生不可预期错误

4、HTTP keep-alive

(1)当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接

(2)HTTP1.0HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request中增加“Connectionkeep-aliveheader才能够支持,而HTTP1.1默认支持

(3)server内存充足时,keep_alive无论是on还是off对系统性能影响不大。

 server上静态网页(HTML、图片、CSSJS)居多时,建议打开Keep_alive

 server多为动态请求(因为连接数据库,对文件系统访问较多)Keep_alive关掉,会节省一定的内存,正好作为文件系统的cache,降低I/O压力。

5、get提交和post提交的区别

(1)响应报文中请求头不同

GET请求方法会将请求参数放在URL后面,用?隔开URL和参数,多参数间用&链接

POST请求方法请求参数不放在请求头中。而是封装到HTTP的请求数据段。

(2)浏览器地址栏显示不同

GET提交的数据会在地址栏中显示出来。POST提交,地址栏不会改变

3请求参数长度

因为GET请求参数放在请求头中,所以长度受限。

POST理论上请求参数长度不受限,放在HTTP请求数据中

(4)安全性

POST安全性要比GET高,因为通过GET提交数据,请求参数会出现在浏览器地址栏中,比如用户名和密码出现在URL上,如被浏览器缓存后,就会发生隐私泄露,不安全。

6、在浏览器地址栏键入URL,按下回车之后发生的几个事件:

1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;

2)解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;

3)浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;

4)服务器给出相应,把对应的html文本发送给浏览器;

5)释放TCP连接;

6)浏览器将该文本显示出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值