IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络模型(二):应用层 -> 正文阅读

[网络协议]计算机网络模型(二):应用层

计算机网络模型(二):应用层

http协议

什么是协议?就是你我规定一种方式,咱们都按照这个方式来做事。

http就是应用层最根本的协议,因为我们离不开互联网,离不开浏览器。包括你看见我的这片文章,就是http协议做了底层支持。当然,https是建立在http协议之上的。

既然http是协议,他都规定了什么规则让大家遵守呢?

http规定,每次http客户与服务器进行交互的时候,都有一个ASCII码组成的请求和一个MIME响应组成。

请求就是URL串。

http又称为“超文本传输协议”,也就是说,http是文本协议。文本长度是无限制的,因此就需要一些设定来判断谁是谁。

请求(URL统一资源定位符)

给予http的URL是最常用的资源定位符。它的基本格式为:

http://<主机>:<端口><路径>

当然,在其他协议下,前面的http就要换成相应的协议。

我们以一个最简单的例子说明一下:

www.baidu.com

  1. www.是一个www服务器最高级别的页面,也是三级域名。
  2. baidu是服务器的二级域名,它一般代表了你访问的服务器的公司或者服务名称。
  3. .com是一级域名,又叫顶级域名。

这里我们没有规定端口号,就会默认为80。也没有后面的资源定位符,也就是访问到公司提供服务的主界面。

http请求格式:
在这里插入图片描述
请求行是请求的目的信息;
请求头部是key-value格式的;
请求数据也称为请求实体(谢希仁的教材说这部分基本不用,但是这部分其实还是要用到的)。

请求方法

方法意义
GET请求读取由URL所标志的信息
POST请求读取由URL所标志的信息,同时可以携带请求实体信息给服务器
PUT在指明的URL下存储一个文档
OPTION请求服务器的性能信息等
HEAD请求读取URL的头部信息
DELETE删除URL所指的资源
TRACE用来进行回环测试的请求
CONNECT用于代理服务器

我最长用的就是POST和GET请求,当有敏感信息的时候,需要利用post请求的方法体并进行加密。

在这里插入图片描述

这是我随便找了一个网站,看了他的请求报文。
可以清楚看到,我们通过get方法对该网站进行请求,所有的请求头部信息都是以key-value的形式进行展现。但是我们看不到请求体,因为GET请求下没有请求体。

我登录了新的网站,需要用户名和密码进行登录,就出现了Request Payload,也就是post请求的请求体:
在这里插入图片描述
在这里插入图片描述
很明显这是经过加密的数据。

域名系统DNS

由于我们是自顶向下讲解,因此在这里我不过多说明IP地址是什么。大家只需要知道IP地址是一个网络系统的ID,代表着唯一的网络位置,我们通过这个位置可以找到相应主机。

但是IP地址太难记,像192.168.123.153,我们记这个名字太难了,不如baidu好记啊,所以我们又建立了域名标识IP法。然而域名不能被主机识别,我们需要一个服务将域名转换成IP。

DNS就是将域名转换成IP的服务器。

上一节我们已经说了一二三级域名,所有域名加上标点,不能超过255个字符,但是,我们可能会有www.tsinghua.edu.cn这样的情况。

因此,你可能会见到四级域名的情况。
在这里插入图片描述

回应, MIME格式

我们说了请求,现在看看回应。回应就是客户端向服务器发送了请求,服务端需要给客户端一个回应。至于什么是MIME格式,不重要,就不说了。
在这里插入图片描述
这就是响应 的格式,与请求很像。只是有些字段稍有不同。我现在截一张图,关于响应的报文:
在这里插入图片描述

还是刚刚的网站,General显示了一些基础信息,和Response Headers一起才是真正的响应。我们重点说一下状态码。不同的状态码代表了不同的信息,像这个200是最常见的信息,代表请求成功。

状态码

1xx:收到请求,需要执行者继续操作
2xx:请求成功,常用200
3xx:跳转,多个域名可以指向同一个网站。
???301:永久性跳转,域名过期,换个域名
???302:临时跳转
4xx:客户端求出错
???400:请求出错,如语法出错
???403:权限不够
???404:找不到资源
???405:求情方法出错
5xx:服务端出错
???500:服务器内部抛出异常
???503:服务器宕机

一个面试官特别爱问的题:当我们输入了url,点击回车到得到页面的过成中,都经历了什么?

  1. 解析url是否合法
  2. 查询本地缓存,若有本地缓存,直接渲染,若无则执行第三步(需要浏览器支持)
    3.DNS解析,获取实质IP地址
  3. 发起TCP连接,三次握手(运输层协议)
  4. 连接成功,获取http资源
  5. 浏览器解析http资源
  6. 将资源存入缓存(需要浏览器支持)
  7. 浏览器渲染页面

有的地方说是11个流程、9个流程,但是其实都差不多,无非是拆开了一些变成两点说,或者增加了DNS解析的细节。大体无差。

互联网检索系统

可能我文章的技术比较老旧了,我这里提到的技术是PageRank,也就是网页排名。这是google提出的技术。

为什么要说这个技术呢?网上的资源是很多的,但是这么多资源要怎么查找?好比你想看我这篇文章,但是你又不知道我这篇文章的具体地址,只记得名字,怎么办?当然你可以在百度或者google搜索引擎上搜索,但是我们技术人员要考虑的是用户按下回车之后,怎么才能找到他想要的东西。

因此,世界上出现了搜索引擎这个工具。目前,搜索引擎一般分为两类:全文检索与分类目录。

全文检索

我们有时候记不清想要搜索的文章或者网址,但是我们依稀记得要搜索的内容。依靠内容获取全文信息的检索就是全文检索。Google是最出名的搜索引擎,也是典型的全文索引,其技术核心是PageRank。

用户搜索一个东西,不可能全部都看一遍,而是选取前几个项目。问题是,如何将质量最高的网址选取出来并呈现给用户。传统方式是统计网页中关键字出现的个数,个数多的放在前面。但是这有很大的缺陷,像一篇文章只有这个字且重复出现多次,那就回牌子啊最前面,这显然是不合理的。于是有了PageRank

一句话概括该算法,就是:将每个网站比作图论中的节点,那么入度越多的节点,得分将越高。其实还有许多细节问题,我们无法一一解释,说一个问题最多的,当一个节点出度不止一个,那么每个被该节点指向的节点,将平均得到该节点的评分。

目录搜索

代表目录搜索的是Yahoo。

我找了好多资料,也没有说明白的,我就不班门弄斧,误导大众了。

FTP协议

FTP是文本传输协议。你可能意识到,怎么全是协议,对的,计算机网络这里确实是协议,很繁琐,我们不能找到它们的共同点。但是对于从事某一个行业的人来说,比如做前后端开发的人,肯定会很熟悉这些协议。

像是FTP协议,是指文本传输协议,目的是将文件在两台主机上传输。或许觉得很简单,但是实际情况是,有些计算机存储数据的格式是不尽相同的,文件的目录结构也不同,造成了传输困难,这些困难总结一下,共有几点:

  1. 计算机存储数据的格式不同
  2. 文件的目录结构和文件命名的规定不同
  3. 访问控制方法不同
  4. 相同文件村区功能,操作系统使用的命令不同

按照理论,FTP属于客户端-服务器模式。一个FTP服务器进程可以为多个客户端提供服务。而FTP进程又分为两大类:主进程、从属进程。

主进程:负责处理新情求
从属进程:负责处理单个请求
特别像网络socket的处理。

主进程工作进程:

  1. 打开端口21,使客户端能连接上
  2. 等待客户进程发送连接请求
  3. 处理连接,开启从属进程处理文件操作
  4. 继续等待其他连接

那在不同的系统上,怎么实现相同文件的传输?比如我现在有一台Mac,一台windows,文件系统是不同的,文本文档都是不一样的。所以现在出现了两种传输模式:

ASCII传输:对于普通文本,就会将文本格式转换成接收方的文本格式。比如windows上规定\r\n代表回车,Mac上规定\r代表回车,就会自动转换。

二进制传输:文件转换成二进制进行传输,当然会出现对方打不开的情况,像.iso文件不被windows认可一样。这时候只能通过辅助工具进行使用。

其他

实际上应用层的协议还有很多,像telnet协议(远程终端协议),TFTP协议(简单文件传输协议),NFS协议(网络文件系统),电子邮件(SMTP),动态主机配置协议(DHCP)等等。

我们也可以自己封装协议,只要它合理就可以运用到各种服务。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 12:00:04  更:2021-07-25 12:00:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:34:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计