1、应用层协议原理
1.1、应用层协议原理
1.1.1、网络应用层体系结构
两种体系结构:客户—服务器体系结构和p2p体系结构
客户服务器体系结构特点
服务器固定,总是开着接收客户的请求。客户之间不能直接通信,需要通过服务器来通信
p2p体系结构特点
没有固定的服务器,不同客户之间可直接通信,不需要通过服务器。上传数据的主机可成为服务器,下载数据的成为客户。
1.1.2、进程通信
客户和服务器进程
定义:发起通信的成为客户,等待联系的进程称为服务器。
进程和计算机网络之间的接口是套接字
套接字由目的主机ip地址和进程端口号共同组成。
1.1.3、运输层提供的服务分类
可靠性:传输的数据没有丢失,不重复
吞吐量:发送进程向接收进程交付比特的速率
定时:时间敏感性,即实时性
安全性:传输的数据不容易被窃取,篡改
1.1.4、因特网提供的 运输服务有tcp和udp
tcp:面向连接的和可靠的传输服务。
面向连接:每次数据传输前都需要进行三次握手,再传输数据,结束发送需要断开连接。
可靠传输:数据有序,无丢失和冗余
tcp不提供安全性保障,可供过ssl加强tcp来达到安全性保障。
udp:无连接的,不可靠的数据传输服务
1.2 web应用和http协议
1.2.1、http介绍
端口号默认是80
http定义了web客户端和web服务器相互之间传递报文的方式。http使用的运输层协议是tcp。
http是无状态协议,http服务器不会保存任何关于客户的信息。
1.2.2、持续连接和非持续连接
非持续连接:每个请求/响应都通过一个单独的tcp连接发送,发送完毕后,关闭tcp连接
持续连接:所有的请求/连接都通过相同的tcp连接发送
1.2.3、http报文格式
1.2.3.1请求报文
第一行叫做请求行,后继的为首部行。
请求行有三个字段:请求方法,url,和http版本号。请求方法有get,post,head,put和delete。绝大部分使用get。
使用tcp传输。
通用格式
使用post方法提交表单的时候,表单的内容会显示在实体主体中,get方法报文中的实体主体为空。
1.2.3.2响应报文
响应报文由三部分组成,状态行,首部行和实体行。
状态行包含http版本号,状态码和响应的状态信息。
date表示服务器产生并发送响应报文的时间。
server:表示服务器的类型。
connection:close表示发送完报文后将关闭连接
last-modified:对象最后创建和修改时间
常见的状态码和含义
200:请求成功
301:请求对象已经被转移了
400:请求不能被服务器端理解
404:被请求的文档不在服务器上
505:服务器不支持http协议版本
1.2.4 用户和服务器的交互:cookie
用户首次发送请求报文给web服务器,web服务器会为用户生成一个识别码,并在数据库中存储用户的信息。
web服务器在响应报文中包含一个set cookie:识别码,发送给web浏览器。web浏览器在自己的cookie文件中
添加识别码和服务器主机名。之后浏览器每次访问服务器都会带着识别码去访问服务器,服务器会根据识别码
来获取用户的一些信息。
1.2.5 web缓存
web缓存器也叫代理服务器
工作原理:
web缓存器有自己的磁盘存储空间,用于存储最近请求过的对象的副本。
浏览器会发送一个请求到web缓存器,缓存器会检查本地是否存储了请求对象,如果有,则直接发送响应
报文,把请求对象发送给浏览器。如果没有,缓存器向服务器发出请求,获取请求对象,发送给浏览器,并在本地
存储请求对象的副本。
缓存器的优点:
大大减少请求的响应时间
减少某个机构的通信容量
1.3、ftp协议(文件传输协议)
端口号位21,ftp使用两条并行的tcp连接来传输文件,一条传输控制命令,一条传输实际的文件数据
控制命令中包含用户的标识和一些口令等,控制连接贯穿了用户的整个会话期间。
1.4smtp协议
端口号默认是25
alice通过邮件代理(运行在客户端的一些邮箱应用程序,如outlook等),用smtp协议把要发送的邮件传给alice的邮件服务器,
alice的邮件服务器和bob的邮件服务器建立连接,并把邮件传给bob的邮件服务器,bob的邮件代理再通过pop3/imap协议把
邮件从邮件服务器中读取出来。
1.5、dns 域名系统
dns运行在udp上,负责把主机名解析为ip地址。默认端口号位53。
dns工作原理概述:
用户主机的应用程序把需要解析的主机名发送给dns客户端,dns客户端向网络中发送一个查询报文,
一段时间后,dns客户端收到解析的ip地址,并返回给主机应用程序。
dns服务器的层次结构
第一层:根dns服务器
第二层:顶级域服务器
第三层:权威dns服务器
另外还有一个本地dns服务器,通常靠近主机。
dns服务器的交互
查询流程:请求主机——本地dns服务器——根dns服务器—顶级域名服务器——
权威dns服务器——本地dns服务器——请求主机。
dns的缓存
为了改善时延和网络中的通信量,可采用缓存。即每次dns服务器收到一个dns回答时,会把回答中的信息
存储在本地。当下次有同样的dns请求时,dns服务器可以直接把ip地址返回,不必再去查询其他dns服务器。