前言算法
到这一篇我已经把TCP/IP五层模型详细的说明了一遍,大致的从物理层到最上层的应用层作了一个大概的了解,其实整体学下来东西很是的多,咱们须要常常的去系统性的去学习它。否则过一段时间就忘记了!浏览器
回顾一下前面的知识:缓存
OSI体系结构分为7层:物理层、链路层、网路层、传输层、会话层、表示层、应用层。服务器
TCP/IP5层参考模型:物理层、数据链路层、网络层、传输层、应用层网络
TCP/IP的体系结构分为4层:网络接口层(物理层、链路层)、网际层(网络层IP)、传输层(UDP/TCP)、应用层(会话层、表示层、应用层)工具
原理体系结构:物理层、链路层、网络层、传输层、应用层(会话层+表示层+应用层) 学习
OSI七层协议体系结构:优势:概念清楚,理论完整,缺点可是复杂而不实用网站
TCP/IP协议族四层,缺点:太简单,但被普遍使用spa
结合上面两个的优缺点,就有了5层协议的原理体系结构,即简洁又能把概念描述清楚。
在百度中的介绍:
位于计算机网络体系结构的最上层,前面四层作的全部事情就是为了他服务,他也是设计和创建计算机网络的最终目的,通俗的讲,就是咱们开发的应用软件,就处于这一层,
好比,QQ,浏览器访问网页,等等你看获得的应用软件都是在这一层,可是这些软件在运行的过程当中,也须要依靠一些特定的协议才能完成相应的功能,
好比浏览器经过网址访问网页,其中是如何作到的,这就是咱们所要学习的东西。
1)客户/服务器(client/server)
这种类型,就是咱们很熟悉的客户端,服务器模型,客户端请求服务器,服务器响应客户端这样的一种方式进行“交流”
2)P2P
也称为对等体系结构。P2P至关于每一个人的电脑度能够当服务器,也能够当客户端,不仅仅限制于只能客户端访问服务器,
你本身的计算机能够去访问别人的计算机上的内容,别的一样能够访问你计算机上的内容,这样达到一种共享的状态。
Domain Name System 域名系统。也能够叫作域名解析协议。在咱们在浏览器访问网页的时候,一般度是用咱们所熟悉的一连串有意义的英文字符标识,好比www.baidu.com、www.sohu.com等。
可是咱们学了前面的知识,计算机并非经过这些字符串去找到对应的计算机,而是经过32位的二进制,也就是咱们的IP地址来找。因此就有了DNS协议。他的做用就是将域名解析成对应的IP地址。
由于让咱们人去记那些IP地址,很难记得住,因此就想办法让IP地址转变为了如今的域名,在进行访问的时候,只须要将域名解析为对应的IP地址就好了,这个域名也颇有讲究,其中分为好多层域名,
是独一无二的。这里不细讲这个,只要咱们知道,域名经过DNS能找到对应的IP地址就好了。
1)经过域名访问网页
2)计算机会先将域名发送到一个解析域名的服务器上
2.1)在其服务器上有不少服务器,能解析各类各样的域名,好比有专门解析.org的,解析.com的,解析.net的。等等,最主要的有一个根域名服务器
2.2 )域名解析(在服务器上查找IP地址)的过程有两种算法,迭代查询,递归查询。通常是两种查询的结合
2.3 )本机计算机找到其中一台解析域名的服务器(多是.com),若是没有找到对应的IP地址,那么就会去找根域名服务器,根域名服务器知道全部的子服务器,
因此他确定知道该域名所对应的IP地址在那个子服务器中,因此告诉第一次查询的服务器要他去另外一台服务器上找,找到了,就将其返回给计算机,
之后在有另外一台计算机也经过这个域名访问,那么第一台服务器会有原来的域名IP地址的缓存,就不用去找根服务器了。
3)找到了,就能找到咱们要访问的服务器了。
1)超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议。全部的WWW文件都必须遵照这个标准。
2)HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。经过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。
(咱们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,好比HTML文件和图像。(咱们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,
好比代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并无规定必须使用它和(基于)它支持的层。 事实上,HTTP能够在任何其余互联网协议上,或者在其余网络上实现。
HTTP只假定(其下层协议提供)可靠的传输,任何可以提供这种保证的协议均可以被其使用。
3)一般,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP链接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,
好比"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体多是请求的文件、错误消息、或者其它一些信息。
HTTP使用TCP而不是UDP的缘由在于(打开)一个网页必须传送不少数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
4)经过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。
URL:统一资源定位符,经过下面格式,能够看出,就是用来定位咱们所须要资源在服务器上的位置。
格式:<协议>://<主机>:<端口>/<路径>
协议:http
主机:域名/IP地址,原理度同样,到头来仍是会转换为IP地址,经过这个才能找到目标服务器
端口: 在传输层须要使用的,访问目的主机的哪一个端口号。
路径:精准的定位咱们所须要的资源位置、
日常会省略协议和端口号,由于这些都是默认的,在访问主页时,路径也会省略。好比www.baidu.com这个默认进入百度的主页 完整写法 http://www.baidu.com:80/index.html 。
1)做用
怎样向服务器请求文档、服务器怎么把文档传送给浏览器,通俗点讲,就是咱们想服务器访问网页资源时,服务器如何把网页上的东西传给咱们。
客户端向服务器:请求报文 服务器向客户端:响应报文
其实就是:在经过URL访问你服务器时,就会发送一个请求报文,告诉服务器须要哪些东西,服务器知道后,返回一个响应报文给客户端,其中就会带有一些网页信息。
就是经过这个来达到传送网页资源的目的,如今来具体看看,请求报文和响应报文的格式。
格式都同样,内容不同。
请求行 响应行
请求头部 响应体
请求数据 响应数据
1)请求报文格式图
2)响应报文格式图
这个后面我会详细的写一篇文章类学习HTTP协议。