Chpater 2 应用层

2.1 应用层协议原理

2.1.1 网络应用程序体系结构

client-server 结构

P2P 结构

2.1.2 进程通信

主机由IP 地址标识.

端口号用于标识主机上的特定进程或服务.

2.2 Web 和 HTTP

2.2.1 HTTP 概况

超文本传输协议(HyperText Transfer Protocol), HTTP.

URL格式:

Protocol://user:psw@host:port/path

Protocol: 协议名. user:psw: 登录名和密码. host: 主机名. port: 端口号. path: 路径.

RTT: 往返时间, 指从客户机到服务器再返回客户机的总时间.

2.2.2 非持续连接和持续连接

非持续连接:每个请求/相应都是经过一个单独的 TCP 连接发送. 每次都要三次握手建立连接.

持续连接:所有的请求和相应都是经过相同的 TCP 连接发送.

2.2.3 HTTP 报文格式

HTTP 报文分为请求报文和响应报文.

请求报文

典型的 HTTP 请求报文:

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

用普通的ASCII文本书写, 每行以回车和换行符结束.

第一行: 请求行(request line), 包括方法, 请求的URL, HTTP版本.

后续的行: 首部行(header line).

方法字段: GET, POST, HEAD, PUT, DELETE.

Host: 请求对象所在的主机.
Connection: close 表示使用非持续连接.
User-agent: Mozilla/5.0 表示用户使用的代理(浏览器).
Accept-language: fr 表示接受法语版本.


通用的请求报文格式:

实体行(entity body) 在使用GET方法时为空, 在使用POST方法时, 实体行中包含用户输入的数据.

也可以不使用POST方法, 而使用GET方法, 并在请求的URL中包含数据, 比如 www.somesite.com/animalsearch? monkey&bannas

HEAD: 和GET方法类似, 但不返回请求对象. PUT: 上传对象到服务器指定路径. DELETE: 删除服务器对象.

响应报文

典型的 HTTP 响应报文:

HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:44:04 GMT
Content-Length: 6821
Content-Type: text/html

(data data data)

Connection: close 表示使用非持续连接.
Date: 服务器发送响应报文的日期和时间.
Server: 服务器信息.
Last-Modified: 对象创建或最后修改的日期和时间.
Content-Length: 被发送对象的字节数.
Content-Type: 被发送对象的类型.

通用的响应报文格式:

状态码:

200 OK: 请求成功.
301 Moved Permanently: 请求的对象已经被移到新的位置, 由 Location 首部给出新的位置.
400 Bad Request: 通用的差错代码, 表示该请求不能被服务器理解.
404 Not Found: 请求的资源未找到.
505 HTTP Version Not Supported: 服务器不支持请求的HTTP版本.

服务器维护客户端状态.

2.2.5 Web缓存

Web缓存器(Web cache)也叫代理服务器(proxy server).