了解WEB及网络基础
开始看Http图解了,上次就大概在手机上看了下,没做笔记了解的其实也不深入,先从网络基础开始学习。
使用Http协议访问WEB
- 当在浏览器输入URL后发生了什么?
在日常的操作中,输入后就会有个页面展示出来,但是这个可以再往深入一点,输入后点击请求的这边叫客户端,然后连接到另外一边的服务器,服务器再响应回来数据从而有数据展示;
这种通过发送请求获取服务器资源的 Web 浏览器等,都可称为客 户端(client)
Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协 议 1)的协议作为规范,完成从客户端到服务器端等一系列运作流
程。而协议是指规则的约定。可以说,Web 是建立在 HTTP 协议上通 信的。
HTTP 的诞生
好像不想了解,一堆历史,虽然吹水好像蛮有用,emmmm;
- HTTP/0.9
HTTP 于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。 现在的 HTTP 其实含有 HTTP1.0 之前版本的意思,因此被称为 HTTP/0.9。
- HTTP/1.0
HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今 仍被广泛使用在服务器端。
- HTTP/1.1
1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的 标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。
- 后续还有http2.0等一些新协议诞生…
TCP/IP 协议族
- 协议的定义
如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为 协议(protocol)
上图为TCP/IP 的集合,TCP/IP 实际上并不只有TCP/IP 这两种,但在日常也有一些人直接用来表示TCP/IP这两种协议;
TCP/IP 的分层管理
TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。
如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分 层之后只需把变动的层替换掉即可。(理解则是互相之间耦合度不会高,在调整和修改的过程中工作量和复杂度降低,方便操作)
- 应用层
决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name System,域 名系统)服务就是其中两类。
HTTP 协议也处于应用层。
- 传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据 传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报 协议)。
- 网络层(又名网络互连层)
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数 据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计 算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选择一条传输路线。
- 链路层(又名数据链路层,网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等 物理可见部分(还包括连接器等一切传输媒介)。
硬件上的范畴均在 链路层的作用范围之内。
TCP/IP 通信传输流
如上图,这图画的贼清楚,顺便表达了我的内心想法,哈哈哈,先从客户端出来再进去服务器,再从服务器出来再进客户端;
我们用 HTTP 举例来说明,首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。
接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端 口号后转发给网络层。
在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该 层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装(encapsulate)。
与 HTTP 关系密切的协议 : IP、TCP 和 DNS
- IP是一种协议,位于网络层;区别于平常说的IP地址,而IP传输又必须有传输需要的地址 IP地址和MAC地址,IP地址会变,MAC地址基本不变;IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定 地址。
ARP 是一种用以解析地址的协议,根据通信方 的 IP 地址就可以反查出对应的 MAC 地址,以下为ARP协议的解析图
- 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 的子集。
- URI 格式
表示指定的 URI,要使用涵盖全部必要信息的绝对 URI、绝对 URL 以 及相对 URL。相对 URL,是指从浏览器中基本 URI 处指定的 URL,形如 /image/logo.gif。