1.计算机网络模型
1、OSI体系结构分为7层:物理层、链路层、网路层、传输层、会话层、表示层、应用层。
2、TCP/IP的体系结构分为4层:网络接口层(物理层、链路层)、网际层(网络层IP)、传输层(UDP/TCP)、应用层(会话层、表示层、应用层)
3、原理体系结构:物理层、链路层、网络层、传输层、应用层(会话层+表示层+应用层)
OSI七层协议体系结构:优点:概念清楚,理论完整,缺点复杂而不实用
TCP/IP协议族四层,缺点:太简单,但被广泛使用,
结合上面两个的优缺点,就有了5层协议的原理体系结构,即简洁又能把概念描述清楚。
2.应用层
1、概念
位于计算机网络体系结构的最上层,前面四层做的所有事情就是为了它服务,它也是设计和建立计算机网络的最终目的,通俗的讲,就是我们开发的应用软件,就处于这一层,比如,QQ,浏览器访问网页,等等你看得到的应用软件都是在这一层,但是这些软件在运行的过程中,也需要依靠一些特定的协议才能完成相应的功能,比如浏览器通过网址访问网页,其中是如何做到的,这就是我们所要学习的东西。
2、应用层中的应用软件分两种。客户/服务器和P2P体系结构
客户/服务器(client/server)
这种类型,就是我们很熟悉的客户端,服务器模型,客户端请求服务器,服务器响应客户端这样的一种方式进行“交流”
P2P
也称为对等体系结构。P2P相当于每个人的电脑都可以当服务器,也可以当客户端,不单单限制于只能客户端访问服务器,你自己的计算机可以去访问别人的计算机上的内容,别的同样可以访问你计算机上的内容,这样达到一种共享的状态。
应用层的协议
DNS协议
Domain Name System 域名系统。也可以叫做域名解析协议。在我们在浏览器访问网页的时候,通常都是用我们所熟悉的一连串有意义的英文字符标识,比如www.baidu.com、www.sohu.com等。 但是我们学了前面的知识,计算机并不是通过这些字符串去找到对应的计算机,而是通过32位的二进制,也就是我们的IP地址来找。所以就有了DNS协议。它的作用就是将域名解析成对应的IP地址。因为让我们人去记那些IP地址,很难记得住,所以就想办法让IP地址转变为了现在的域名,在进行访问的时候,只需要将域名解析为对应的IP地址就行了,这个域名也很有讲究,其中分为好多层域名,是独一无二的。这里不细讲这个,只要我们知道,域名通过DNS能找到对应的IP地址就行了
DNS协议是如何工作的呢?
1、通过域名访问网页
2、计算机会先将域名发送到一个解析域名的服务器上
2.1 在其服务器上有很多服务器,能解析各种各样的域名,比如有专门解析.org的,解析.com的,解析.net的。等等,最主要的有一个根域名服务器,
2.2 域名解析(在服务器上查找IP地址)的过程有两种算法,迭代查询,递归查询。一般是两种查询的结合
2.3 本机计算机找到其中一台解析域名的服务器(可能是.com),如果没有找到对应的IP地址,那么就会去找根域名服务器,根域名服务器知道所有的子服务器,所以他肯定知道该域名所对应的IP地址在那个子服务器中,所以告诉第一次查询的服务器要他去另一台服务器上找,找到了,就将其返回给计算机,以后在有另一台计算机也通过这个域名访问,那么第一台服务器会有原来的域名IP地址的缓存,就不用去找根服务器了。
HTTP协议
HTTP协议简介
HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)
- 协议
协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。 - 无状态
无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。 - 客户端/服务端模型
五层网络模型
URL构成
统一资源定位符URL。
URL:统一资源定位符,通过下面格式,可以看出,就是用来定位我们所需要资源在服务器上的位置。
格式:<协议>://<主机>:<端口>/<路径>
协议:http
主机:域名/IP地址,原理度一样,到头来还是会转换为IP地址,通过这个才能找到目标服务器
端口: 在传输层需要使用的,访问目的主机的哪个端口号。
路径:精准的定位我们所需要的资源位置、
平常会省略协议和端口号,因为这些度是默认的,在访问主页时,路径也会省略。比如www.baidu.com这个默认进入百度的主页 完整写法 http://www.baidu.com:80/index.html
超文本传送协议HTTP
作用:怎样向服务器请求资源、服务器怎么把资源传送给浏览器,通俗点讲,就是我们想服务器访问网页资源时,服务器如何把网页上的东西传给我们。
客户端向服务器:请求报文 服务器向客户端:响应报文
什么意思呢?在通过URL访问你服务器时,就会发送一个请求报文,告诉服务器需要哪些东西,服务器知道后,返回一个响应报文给客户端,其中就会带有一些网页信息。就是通过这个来达到传送网页资源的目的。
请求报文和响应报文
格式都一样,内容不一样,格式:
请求行 响应行(状态行)
请求头部(请求头) 响应头部(首部行)
请求数据(请求体) 响应数据(响应体,实体主体)
请求报文格式
请求(Request)
客户端发送一个HTTP请求到服务端的格式:
请求行
请求头
请求体
响应报文格式
响应(Response)
服务端响应客户端格式:
状态行
响应头
响应体
HTTP协议实测分析
通过访问www.sohu.com来看看我们发送的请求报文和响应报文是什么样的
1、GET /http://www.sohu.com HTTP/2 请求行,只不过这里被分开了,请求的方式 URL 版本
这里说明一下协议版本一般都是HTTP/1.1
2、Host:主机名 www.solu.com
3、User-Agent:使用什么代理服务器,这里就是FireFox,也就是火狐
4、Accept:能接收的数据类型有哪些
5、Accept-Language:表示用户希望优先想得到的版本,一次排列下去,先是中文,再是英文
6、Accept-Encoding:通知服务端可以发送的数据压缩格式
7、Cookie:浏览器端的一个技术,在服务器上记录用户信息,但是也会在浏览器中保存一份。
8、Connection:连接的方式,有两种,非持续连接和持续连接,非持续连接,一次请求/响应就对应一个TCP连接,接到了响应该连接就关闭,然后在发送请求就在建立TCP连接,持续连接就相反,这里使用的是持续连接
9、Upgrade-Insecure-Requests:该指令用于让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用,这个可以放一放,不懂没关系。
响应报文
这其中就来简单看看响应行中的状态码
状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字有分类的作用。HTTP状态码共分为5种类型:
更详细的状态码可查看 HTTP状态码
但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.
状态码由三位数字组成,可以分为5大类共33种
1xx:表示通知信息的,比如请求收到了或正在进行处理
2xx:表示成功,也就是服务器接收到了你的请求,并成功处理了,一般最喜欢看到的就是200了
200:这次请求成功了。
3xx:表示重定向,服务器告诉浏览器要完成请求你必须采取进一步的行动,也就是去访问另一个网页,
4xx:表示客户的差错,比如请求中有错误的语法或不能完成
404错误:就是找不到资源,就是你的URL写的有错误,使定位不到正确的资源
5xx:服务器的差错,如服务器失效,或者内部出现异常不能完成你的请求
500错误:就是服务器写的代码中有问题。
请求方法
截止到HTTP1.1共有下面几种方法:
请求和响应常见通用头
注意
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
常见的媒体格式类型如下:
以application开头的媒体格式类型:
常见请求头
常见响应头