开始看Http图解了,上次就大概在手机上看了下,没做笔记了解的其实也不深入,先从网络基础开始学习。

使用Http协议访问WEB

  1. 当在浏览器输入URL后发生了什么?

在日常的操作中,输入后就会有个页面展示出来,但是这个可以再往深入一点,输入后点击请求的这边叫客户端,然后连接到另外一边的服务器,服务器再响应回来数据从而有数据展示;

这种通过发送请求获取服务器资源的 Web 浏览器等,都可称为客 户端(client)

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

HTTP 的诞生

好像不想了解,一堆历史,虽然吹水好像蛮有用,emmmm;

  1. HTTP/0.9

HTTP 于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。 现在的 HTTP 其实含有 HTTP1.0 之前版本的意思,因此被称为 HTTP/0.9。

  1. HTTP/1.0

HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今 仍被广泛使用在服务器端。

  1. HTTP/1.1

1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的 标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。

  1. 后续还有http2.0等一些新协议诞生…

TCP/IP 协议族

  1. 协议的定义

如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为 协议(protocol)

上图为TCP/IP 的集合,TCP/IP 实际上并不只有TCP/IP 这两种,但在日常也有一些人直接用来表示TCP/IP这两种协议;

TCP/IP 的分层管理

TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。
如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分 层之后只需把变动的层替换掉即可。(理解则是互相之间耦合度不会高,在调整和修改的过程中工作量和复杂度降低,方便操作)

  1. 应用层

决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name System,域 名系统)服务就是其中两类。
HTTP 协议也处于应用层。

  1. 传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据 传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报 协议)。

  1. 网络层(又名网络互连层)

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数 据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计 算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选择一条传输路线

  1. 链路层(又名数据链路层,网络接口层)

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等 物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在 链路层的作用范围之内

TCP/IP 通信传输流

如上图,这图画的贼清楚,顺便表达了我的内心想法,哈哈哈,先从客户端出来再进去服务器,再从服务器出来再进客户端;
我们用 HTTP 举例来说明,首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。
接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端 口号后转发给网络层。
在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。

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

与 HTTP 关系密切的协议 : IP、TCP 和 DNS

  1. IP是一种协议,位于网络层;区别于平常说的IP地址,而IP传输又必须有传输需要的地址 IP地址和MAC地址,IP地址会变,MAC地址基本不变;IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定 地址。

ARP 是一种用以解析地址的协议,根据通信方 的 IP 地址就可以反查出对应的 MAC 地址,以下为ARP协议的解析图

  1. TCP 协议, TCP协议位于传输层,提供可靠的字节流服务;

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大 块数据分割成以报文段(segment)为单位的数据包进行管理。
TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够 确认数据最终是否送达到对方,采用的是 三次握手 来确认。

握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和 ACK(acknowledgement)。 发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后, 回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发 送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

负责域名解析的 DNS 服务

DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的 协议。它提供域名到 IP 地址之间的解析服务。
DNS 协议提供通过域名 查找 IP 地址,或逆向从 IP 地址反查域名的服务

URL 和URI

URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。可见 URL 是 URI 的子集。

  1. URI 格式

表示指定的 URI,要使用涵盖全部必要信息的绝对 URI、绝对 URL 以 及相对 URL。相对 URL,是指从浏览器中基本 URI 处指定的 URL,形如 /image/logo.gif。