应用层
运输层为应用程序提供端到端的会话,但不同的网络应用和应用进程之间,还需要不同的通信规则,因此在运输层之上还需要有应用层。
比如浏览器这个应用程序需要 HTTP、HTTPS 协议,而 XShell 应用需要 SSH 协议
常见的协议如下 :
- DNS
域名系统 DNS 是互联网使用的命名系统,用来便于人们使用的机器名字转换成 IP 地址DNS 的互联网标准是 RFC 1034, 1035
- FTP
文件传输协议 FTP 是互联网上使用的最广泛的文件传输协议
- TFTP
TCP/IP协议族还有一个简单文件传送协议 TFTP,他是一个很小且易于实现的文件传输协议
- TELNET
TELNET 是一个简单的远程终端协议
万维网 WWW
万维网并非某种特殊的计算机网络,万维网是一个很大规模的,联机式的信息储藏所,英文简称 Web
URI 和 URL
同一资源标识符 URI,统一资源定位符 URL ,URL 是 URI 的子集,URL 是用来表示从互联网上得到的资源位置和访问这些资源的方法, URL 一般由以下四部分组成
<协议>://<主机>:<端口号>/<路径>
可以简单这样理解,我们都知道马云是中国首富,但是我们不知道马云住哪,这里的 URI 相当于马云 (是要说出马云,就知道它是中国首富,根据 URI 就能标识),而 URL 就可以表示马云的所住地,具体哪条街哪栋房(根据 URL 就能准确定位)
我们经常输入的网址就属于 URL
网页的请求流程
- 浏览器先检查本机 host 文件,如果没有对应的域名 与 IP 映射
- 浏览器通过 DNS 查询域名对应的 IP 地址
- 浏览器得到服务器 IP 地址后,经过三次握手与服务器建立 TCP 连接
- 浏览器向服务器发出一个请求,包括 URL,协议版本号 (HTTP/1.1等),协议头 (请求的方法,客户端 cookie,agent 信息等等),协议内容等等
- 服务器拿到请求后, 根据请求中的内容找相应的数据, 如果不能正常拿到,返回一个错误码(例如404), 如果能正常拿到, 返回数据
- 如果服务器一个数据包无法存放需要返回的所有数据, 就会分次发送, 浏览器每接收一个数据包就会向服务器返回一个 ACK 确认报文段
- 当请求完毕后, 服务器就默认关闭了 TCP 连接, 但是如果有 Connection:keep-alive, 则不会关闭 TCP, 下次有请求的时候还是用同一个连接了
- 浏览器拿到返回的数据后,开始渲染 HTML 数据并展示给用户了
HTTP 协议
HTTP 是超文本传输协议。它定义了浏览器怎样向服务器请求页面及服务器怎样数据把传送给浏览器。 HTTP 连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
目前使用最广泛的 HTTP 版本为 1.1,它于 1997 年发布,HTTP 传送的数据一般是就是 HTML,使用的默认端口为 80
位于应用层的 HTTP 协议使用的