【HTTP图解】1-了解Web及网络图解

TOC

了解HTTP协议访问Web

image-20200722084431699

Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的。

HTTP的诞生

诞生

  • 诞生原因:共享知识
  • 基本理念:借助超文本,连成WWW(World Wide Web,万维网)
  • 构建技术:HTML、HTTP、URL(Uniform Resource Locator,统一资源定位符)

成长

  • 1990.11——CERN成功研发了世界上第一台Web服务器和Web浏览器
  • 1994.12——网景发布Netscape Navigator 1.0
  • 1995——微软发布Internet Explorer 1.0 和2.0
  • 紧随其后,Web服务器标准之一的Apache以0.2的姿态出现,HTML也发布了2.0版本
  • 2004——Mozilla基金会发布了Firefox浏览器

HTTP

  • 0.9——1990年问世,并没有称为正式的标准被建立,含有1.0之前版本的意思
  • 1.0——1996年5月,初期标准,仍在使用
  • 1.1——1997年1月,目前主流
  • 2.0——2015年5月以RFC 7540正式发表,2015年底多数主流浏览器支持了该协议。

作为Web文档传输协议的HTTP,版本更新的次数非常少。

网络基础TCP/IP

为了理解HTTP,需要先了解TCP/IP协议族。

TCP/IP协议族

image-20200722091711979

计算机与网络设备要相互通信,双方就必须基于相同的方法。这种通信规则称为协议(protocol)。

协议中存在各种各样的内容,从电缆的规格到IP地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及Web页面显示需要处理的步骤,等等。

一般来说,TCP/IP是协议族的统称。

TCP/IP的分层管理

  • 应用层:决定了向用户提供应用服务时通信的活动,FTP、DNS、HTTP等
  • 传输层:对上层应用层提供数据传输,TCP、UDP
  • 网络层:网络层用来处理在网络上流动的数据包(数据包是网络传输的最小数据单位)。该层规定了通过怎样的路径到达对方计算机,并把数据包传送到对方。作用就是在众多的选项内选择一条传输路线。
  • 数据链路层(链路层、网络接口层):用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC、及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。

分层的好处:设计好各层之间的接口,每个层次内部的设计就能够自由改动了,便于维护。

分成七层还是四层还是五层?

参看:https://zhuanlan.zhihu.com/p/73807507

TCP/IP通信传输流

image-20200722094047244

image-20200722095658265

用HTTP举例来说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。

接着,为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记符号及端口号(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。

在接收的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才算真正接收到客户端发送过来的HTTP请求。

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)。

与HTTP关系密切的协议

IP协议

Internet Protocol 网际协议位于网络层。几乎所有使用网络的系统都会使用IP协议,非常重要。

IP的作用:把各种数据包传送给对方。确保确实传送到对方那里,则需要满足各类条件,其中两个重要的条件是IP地址MAC地址(Media Access Control Address)。

IP地址指明了节点被分配到的地址,MAC地址指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可换,但MAC地址基本不会更改。

IP间的通信依赖MAC地址,在网络上,通信的双方通常是经过多台计算机和网络设备中专才能连接对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时会采用ARP协议(Address Resolution Protocol)。ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

image-20200722101637938

TCP协议

Transmission Control Protocol 位于传输层,提供可靠字节流服务

  • 字节流服务:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。
  • 可靠的传输服务:能够把数据准确可靠地传给对方。

为了准确无误地将数据传送到目标处,TCP协议采用了三次握手(three-way handshaking)策略。握手过程中使用了TCP的标志——SYN(synchronize)和ACK(acknowledgement)。

image-20200722102256617

wrieshark抓包演示

为什么采用三次握手?而不是两次握手或者四次握手?

TCP既要保证数据可靠性传输,又要提高传输的效率,而三次恰恰可以满足以上两方面的需求。

比如说A和B进行TCP连接,保证建立连接成功的条件是:

  • A 知道自己能够给 B 发数据
  • B 知道自己能够给 A 发数据

A 怎么知道自己成功将数据发送到 B 了呢?A 通过比较A.Seq是否和接收到的B.Ack相差 1.

两次握手,服务端不能确定服务端是否能向客户端发送数据

四次握手,能满足需求,但是比三次握手浪费带宽。

负责域名解析的DNS服务

DNS(Domain Name System)位于应用层,它提供域名到IP地址之间的解析服务。

image-20200722123736217

各种协议与HTTP协议的关系

TIM截图20200722123842

URI和URL

URI: Uniform Resource Identifier 统一资源标识符

URL: Uniform Resource Locator 统一资源定位符

  • Uniform:规定统一的格式可方便处理多种不同类型资源,而不用根据上下文环境来识别资源指定的访问方式(用人话说就是:不管什么类型的资源,不管在哪里,通过URI我就能确定资源的位置,并且访问它)
  • Resource:资源的定义是“可标识的任何东西”
  • Identifier:标识符

综上所述,URI就是某种协议方案(协议类型名称)表示的资源的定位标识符。

采用HTTP协议时,协议方案就是http,除此之外,协议方案还有ftp、mailto、telnet、file等。

怎么分辨URI和URL?

URI侧重于是什么,URL侧重于怎么访问

通过一个例子解释:

https://www.cnblogs.com/realzhaijiayu/p/13359997.html

这是一个URL,同时也是一个URI。

为什么是一个URL?因为可以通过 https 协议访问到该 html 资源

为什么是一个URI?因为上面这个字符串表示它博客园里面的一个 html 资源。

如果现在将https://去掉,这就不是一个URL了,因为没有指明使用的协议,而它还是一个URI,因为它还是一个 html 资源了。

一般情况下,可以理解为所有的URL都是URI,但并不是所有的URI都是URL。

注意:如果将https://去掉,在浏览器中仍然可以访问,这是因为浏览器帮助我们自动补全了前面的协议。

更多资料:https://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn

URI格式

绝对URI:含有所有必要的信息

相对URI:只提供相对路径

image-20200722132702868

  • 登录信息:验证身份,可选
  • 服务器地址:待访问的服务器地址
  • 服务器端口号:SOCKS默认1080、HTTP默认80、HTTPS默认443(访问https://www.baidu.com:443会自动跳转到该网站,去掉端口号的显示)
  • 带层次的文件路径:与 UNIX 系统的文件目录结构相似
  • 查询字符串:可选
  • 片段标识符:可选
原文地址:https://www.cnblogs.com/realzhaijiayu/p/13360175.html