计算机网络自顶向下第二章应用层

应用层所使用的协议

一HTTP(超文本传输协议)

http报文格式

请求行

GET(方法) /somedir/page.html(URL字段) HTTP/1.1(HTTP版本字段)

方法包括GET,POST,HEAD,PUT,DELETE

大部分使用get和post,get更频繁,提交表单等用post

HEAD类似GET,收到HEAD方法请求,用一个HTTP报文响应,但是不返回请求对象

PUT允许用户上传对象到指定服务器的路径

DELETE允许用户或者应用程序删除web服务器上的对象

首部行

Host: www.someschool.edu(请求的主机)

Connection: close(响应后是否关闭连接, close关闭,keep-alive不关闭)

User-agent: Mozilla/5.0(浏览器类型)

Accept-language: fr(想要得到的语言版本)

http响应报文

初始状态行

HTTP/1.1 200 OK

首部行

Connection: close

Data: Tue, 09 Aug 2011 15:44:04 GMT(服务器产生并发送该响应报文的日期时间)

Server: Apache/2.2.3 (CentOS)(类似user-agent)

Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT(对象创建或最后修改日期和时间)

Content-Length: 6821(被发送对象中的字节数)

Content-Type: text/html(实体对象的内容类型)

实体行

(data data ...)

一些常见的状态码和相关短语

200  OK:请求成功,信息在返回的响应报文中。

301  Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL

400  Bad Request:一个通用差错代码,请示该请求不能被服务器理解。

404  Not Found:被请求的文档不在服务器上

505  HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本

cookie

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

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

在用户端系统保留一个cookie文件,由用户管理器管理

位于web站点的一个后端数据库

web缓存(代理服务器)

工作原理

浏览器建立一个到代理服务器的TCP连接,并向代理服务器中的对象发送一个HTTP请求

代理服务器进行检查,看看本地是否存储了该对象副本。如果有,代理服务器就向客户浏览器用HTTP响应报文返回该对象。

如果代理服务器没有该对象,它就打开一个与该对象的初始服务器的TCP连接。代理服务器则在这个缓存器到服务器的TCP连接上发送一个对该对象的HTTP请求。在收到该请求后,服务器向代理服务器发送具有该对象的HTTP响应。

当代理服务器接收到该对象,在本地存储空间存储一份副本,并向浏览器用HTTP响应报文发送该副本(通过与该浏览器之间的TCP连接)

简单的说就是,代理服务器先查找是否有该请求的副本。有的话直接发给浏览器。没有的话就向服务器请求,然后存储一份在本地,发送一份给浏览器。

代理服务器使用条件GET方法来证实它的对象是最新的

请求报文使用GET方法,并且请求报文中包括一个"If-Modified-Since:"首部行。那么这个HTTP请求报文就是一个条件GET请求报文。

简单的说,过了一段时间后代理服务器把之前响应报文的Last-Modified当做If-Modified-Since发送一个简短的HTTP请求给服务器,询问服务器请求对象是否有改动,如果有,代理服务器重新发送请求。如果没有状态行返回304 Not Modified代理服务器发送原对象。

二FTP(文件传输协议)

FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。控制连接用于在两主机之间传输控制信息,如用户标识,口令,,改变远程目录的命令以及存放和获取文件的命令。数据连接用于实际发送一个文件。

FTP会跟踪用户的状态信息。数据连接是非持续的,即完成文件的传输即关闭连接。

从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传送的。每个命令后跟回车换行符。每个命令由4个大写字母ASCII字符组成,有些还具有可选参数。

常见的命令

USER username: 用于向服务器发送用户标识

PASS password: 用于向服务器发送用户口令

LIST: 用于请求服务器会送当前远程目录中的所有文件列表。该文件列表是经一个(新建且非持续连接)数据连接传送的,而不是在控制TCP连接上传送。

RETR filename: 用于从远程主机当前目录检索文件。该命令引起远程主机发起一个数据连接,并经该数据连接发送所请求的文件。

STOR filename: 用于在远程主机的当前目录上存放文件。

每个命令对应一个回答。回答是一个3位的数字,后跟一个可选信息。

331 Username OK, Password required(用户名OK,需要口令)

125 Data connection already open; transfer starting(数据连接已经打开,开始传送)

425 Can't open data connection(无法打开数据连接)

452 Error writing file(写文件差错)

三SMTP(简单邮件传输协议)

SMTP和HTTP的区别

HTTP是拉协议SMTP是推协议,即HTTP请求文件信息,SMTP发送文件信息。SMTP要求每个报文使用7比特的ASCII码格式,HTTP不做要求。HTTP把对象封装到对象自身的http响应报文,SMTP则吧所有对象放在一个报文

四DNS(域名系统)

一个由分层的DNS服务器实现的分布式数据库

一个使得主机能够查询分布式数据库的应用层协议

DNS用来将主机名转换成ip地址

用户将请求发送给本地DNS服务器,本地DNS服务器发送根DNS服务器,根DNS服务器返回TLD DNS服务器ip,本地DNS服务器发送给TLD DNS服务器,TLD返回权威DNS服务器ip,本地DNS服务器发送给权威DNS服务器,权威DNS服务区发送ip给本地DNS服务器。使用DNS缓存可以大大减少该步骤。

P2P应用

p2p在我认为工作原理应该是这样。参与一个特定文件分发的所有对等放的集合称为洪流。在一个洪流中对等放彼此下载等长度的文件块,典型的块长度为256KB,当一个对等方第一次加入洪流,他没有块。随着时间流逝,他累计了越来越多的快。当他下载其他块时,他也为其他对等方上载了多个块。一个某个对等方获得了整个文件,他也许离开洪流,也许继续提供上载块。任何对等方可能在任何时候仅具有块的部分就离开洪流,并在以后继续加入洪流。即下载的同时也在上传,向其他对等方请求未得到的块,并为其他对等方上载已有的块。

原文地址:https://www.cnblogs.com/lgh344902118/p/6733247.html