第二章:应用层

应用层协议定义了:

HTTP

使用TCP

非持续连接和持续连接

举例:一个网页有10个图片文件
非持续连接:建立10个TCP连接分别传递这10个图片
持续连接:建立1个TCP连接传递这10个图片

HTTP的默认模式:带流水线的持续连接

HTTP

HTTP 请求报文

Pasted image 20240127235633.png|450

第1行:请求行(request line),包括 3 个字段:方法字段、URL字段、HTTP版本字段。
方法字段:GET POST HEAD PUT DELETE

第2行及以后:首部行:可以包含很多信息
本例中:

使用POST方法时,下图中“实体主体”区域就是用户输入的表单中的内容

Pasted image 20240127235753.png|550

HTTP 响应报文

Pasted image 20240128000101.png|475

三部分:1个初始状态行(status line),6个首部行(header line),实体体(entity body)

其中状态行 = 协议版本 + 状态码 + 状态信息

常见的状态码

服务器响应报文中包含 Set-cookie 能设置客户端的cookie

客户端中一旦有对应网站的cookie(不一定是这次set-cookie导致的,可能是之前的浏览导致的),则会在每一次请求报文中的首部行都包含对应的cookie

Pasted image 20240128000450.png

条件 GET

什么是条件GET:在 GET 请求报文中包含一个 “If-Modified-Since:" 首部行

用途:验证web cache中的对象副本是否是最新的

用法:用户向web cache发送正常的GET,web cache向源服务器发送条件GET

Pasted image 20240128000541.png

源服务器的响应报文:(注意没有修改时entity body为空,节省带宽)

Pasted image 20240128000550.png|350

DNS

FTP

电子邮件

P2P应用