前言
接着学习计算机网络
正文
主要学习应用层涉及到的几个协议。
基本概念
- 通信双方在应用层交换的协议数据单元是报文(Message).
- client-server架构:中央服务器一直在线,并且有永久的ip地址。
- p2p架构:没有一直在线的中央服务器,任意两个用户之间可以进行通信。
- 混合架构:client-server和p2p混合架构,集合二者的特点。
协议定义
- 交换的报文类型
- 报文的语法格式
- 报文中字段的语意
- 各种类型的报文的发送规则
http协议
万维网
万维网是一个超媒体系统。web文档分布在各个主机上,采用超链接的方法,讲一个web文档链接到另一个web文档,甚至是其他主机上的web文档。使用超文本标记语言(html)来组织web文档信息,使用超文本传输协议(http)来传输web文档。
超文本标记语言
html语言用来编写web文档,由特定标签定义内容。
统一资源定位符
URL是一种统一格式的信息资源地址的标识方法。最常见的就是http协议的url了。
其格式如下
<协议>://<主机>:<端口>/<路径>
url不分大小写
超文本传输协议
http是用来传输web信息的协议。广泛用来浏览器-服务器传输内容。其在运输层的协议是tcp。
RTT的定义:client端发送数据报至接收到server端回应的时间。
分类
- 非持久连接
http1.0,一个tcp连接发送一个object - 持久连接
http2.0,一个tcp连接发送多个object
连接过程
http在传输层是基于tcp的,所以必定要进行tcp连接,而http连接几次就要看一次可以发送接收多少个object。
-
非持久连接
client首先发送tcp数据报至server—>server accept了client的连接,并发出回应—>client得到server的tcp回应发送http请求报文—>server收到请求报文并且发送响应报文—>server关闭tcp连接—>client接收响应报文并做响应解析。
一个object传输总时间为:2RTT+object传输时间 -
持久连接
持久连接的不同之处在于,发送了响应报文,server并不马上关闭tcp连接,之后可以再次发送object
报文
报文分为请求报文和响应报文。
- 请求报文
格式
请求行: 方法 路径 httpversion
首部行: Host:value
·
·
·
如
GET /test/test http1.1
Host:www.host.com
User-agent: Mozilla/4.0
Connection:close
Accept-language:fr
- 响应报文
比如
HTTP1.1 200 OK
Connection:close
Date:
服务器:Apache/1.3.0 (Unix)
Last-Modified:
Content-Length:
Content-Type:
data....
一些状态码和状态短语
- 200 OK
请求成功,请求对象在报文后面 - 301 moved permanently
资源已经转移,新的url的location在首部行指定 - 400 Bad Request
不符合请求报文规则,请求报文不为服务器理解 - 404 Not found
资源不存在 - 500 Http version not supported
服务器错误
ftp协议
ftp使用20和21端口,可以在自己服务器配置ftp。详情
ftp常用的命令行
命令 | 作用 |
---|---|
? | 查看所有命令使用帮助 |
open | 打开一个ftp服务器 |
user | 切换ftp用户 |
put | 上传本地文件至ftp服务器 |
get | 下载ftp服务器文件至本地 |
邮件协议
电子邮件由四部门组成
- 用户代理
- 邮件服务器
- 邮件传输协议
- 邮件访问协议
- smtp
标准文本格式为
终端smtp交互实例,可以看这个smtp交互 - pop3
分为两个阶段
- 认证阶段
用户密码的验证 - 事物阶段
对一些邮件的基本操作
终端pop3交互实例,可以看这个pop3交互
dns系统
dns系统完成域名-ip地址的映射。
域名服务器
- 跟域名服务器
是最高层次的域名服务器,internet上有13套跟域名服务器。跟域名服务器上面存储了顶级域名服务器的IP。 - 顶级域名服务器
跟域名之下是顶级域名,负责管理的是在该顶级域名注册的所有权威域名。存储着下一步要查询的域名服务器的ip地址。 - 权威域名服务器
权威域名服务器中存储着具体要访问服务器ip - 本地域名服务器
本地域名服务器存在域名缓存,如果有要找的记录,则直接返回给本地电脑。
域名解析过程
以访问www.amazon.com为例
- 访问本地域名服务器,查询本地的域名缓存,存在直接返回,不存在就转为查询跟域名服务器。
- 查询跟域名服务器,得到
.com
的顶级域名的IP地址。 - 查询得到的顶级域名服务器,获得
amazon.com
的IP地址。 - 查询
amazon.com
域名服务器,得到IP地址。 - 本地域名服务器将查询到的IP地址返回给电脑。
dns记录格式
Name Value Type TTL
Name一般是节点主机的域名,Value是对应Name的名字,Type指出记录的类型,TTL是本记录的生存时间,一般是24hours。
Type | Name | Value |
---|---|---|
A | 主机域名 | 对应的IP地址 |
NS | 域 | 本域的服务器名称 |
CNAME | 别名对应的规范主机名 | 域名 |
MX | 邮件服务器的规范主机名 | 对应邮件服务器的名称 |
TXT | 文本 | 未解释的ASCII码文本 |
dns报文
- 首部区
标识该次域名解析是查询还是应答。 - 询问区
包括被查询的主机域名以及查询类型 - 应答区
对域名查询报文解析出的域名和资源记录 - 管理机构区
其他权威域名服务器的记录 - 附加记录区
另外包含一些其他有用的记录来配合资源记录的使用