计算机网络(五)应用层
(1)作用
(a)运输层为应用进程提供了端到端的通信服务,但两台计算机通信时,有不同的进程(使用传输层的TCP或UDP协议精确定位到一个进程,使用端口号来识别进程),但一个进程在通信时,通信内容会有所不同(如,web浏览,发送email,传输文件等),所有需要有不同的通信规则(用语规范),需要有应用层协议。
(b)应用层的具体内容就是精确定义上面的通信规则,应用层协议应当定义的有:
① 应用进程交换的报文类型,如请求报文和响应报文
② 各种报文类型的语法,如报文中的各个字段及其详细描述
③ 字段的语义,即包含在字段中的信息的含义。
④ 进程何时、如何发送报文,以及对报文进行响应的规则。
(c)比如:万维网WWW的应用层协议是HTTP,它定义了在万维网与万维网服务器之间传送的报文类型,格式和序列等规则。而万维网浏览器怎么显示一个页面,是多线程还是单线程实现都不是HTTP定义的内容。
(2)应用层协议
(a)DNS(域名解析协议):按照一定的函数将互联网上的主机名字转换为IP地址
(b)FTP:传输文件
(c)SMTP:向邮件服务器发送包含电子邮件的报文
(d)HTTP(超文本传输协议)
① 在一个计算机世界里专门在两点之间传输文字,图片,音频,视频等超文本数据的约定和规范
② 万维网(浏览器有各种,百度,谷歌等)
1)一个资料空间,提供分布式服务
2)用链接的方法从互联网上的一个站点访问另一个站点,从而获取到丰富的信息
3)C/S方式工作(浏览器是客户端C,万维网文档所驻留的主机称为万维网服务器-服务端S)
4)客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面(page)
③ 统一资源定位符URL
1) 格式:<协议>://<主机>:<端口>/<路径>
2) 例如:www.youkuaiyun.com(网站主页)
④ 定义:
1)HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。
2)HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接),但采用TCP作为运输层协议,是面向连接的。
3)HTTP是无状态协议(没有记忆)。同一个用户两次访问提供完全相同的服务,服务器并不知道是否服务过这个用户,但是在实际作中一些网站常常希望能够识别用户,例如:淘宝,于是就有了cookie。
⑤ 工作流程:
1)浏览器分析URL
2)浏览器向DNS请求解析IP地址
3)DNS解析出IP地址
4)通过TCP的方式发送一个数据报,根据IP地址(同一个网络直接到达,不同网络,转路由)到达具体网络,再使用ARP协议根据IP获得MAC地址,转到(广播的方式)具体的目的主机(服务端),ARP再传送一个数据报给源主机,通知连接成功,则浏览器可以与服务器建立TCP连接。
5)浏览器发出HTTP请求(如GET/chn/index.htm)
6)服务器通过HTTP响应把文件index.htm发送给浏览器
7)释放TCP连接
8)浏览器解析文件index.htm,并通过web页面显示给用户
⑥ 请求方式
1)GET请求
1. 没有请求体
2. 数据必须在1K之内
3. get请求数据会显示在URL(地址栏)中,get请求传参是放在URL中,并且通过?参数的形式来指定key-value的。
4. HTTP默认请求方式,点击页面上的超链接一定为get请求,提交Form表单时,默认get,可为post请求
2)POST请求
1. 数据不会出现在地址栏中
2. 数据大小没有上限
3. 有请求体,请求体中如有中文,会使用URL编码
4. 如果要对服务器产生影响,那么使用post请求,post请求传参不是放在url中,是通过form data形式发送给服务器的
⑦ 请求路径:
1)先协议,再主机,路径,最后查询,片段
2)http://www.example.com:80/path/to/myfile.htmlkey1=value1&key2=value2#SomewhereInTheDocument
3)协议-http,主机-www.example.com,端口-80,路径-/path/to/myfile.html,查询-key1=value1&key2=value2(如是get请求-后面直接加参数,post请求-不会加参数),片段-#SomewhereInTheDocument(相当于书签)
⑧ HTTPS:
1)HTTP 一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS 应运而生。HTTPS 的全称为 (Hyper Text Transfer Protocol over SecureSocket Layer)
2)HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
3)HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL