计算机网络自顶向下第二章应用层
应用层所使用的协议
一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,当一个对等方第一次加入洪流,他没有块。随着时间流逝,他累计了越来越多的快。当他下载其他块时,他也为其他对等方上载了多个块。一个某个对等方获得了整个文件,他也许离开洪流,也许继续提供上载块。任何对等方可能在任何时候仅具有块的部分就离开洪流,并在以后继续加入洪流。即下载的同时也在上传,向其他对等方请求未得到的块,并为其他对等方上载已有的块。