一、了解Web及网络基础
1、使用HTTP协议访问Web
客户端在浏览器地址栏输入URL之后,信息会被送到相应的服务器处,从服务器处得到回复,内容就会显示在Web页面上。
Web使用一种名为HTTP的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定,可以说Web是建立在HTTP协议上通信的。
(HTTP:HyperText Transfer Protocol,超文本传输协议,通常这样翻译,但是严谨的说法是超文本转移协议)
2、网络基础TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。
2.1、TCP/IP协议簇
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标,由哪一边先发起通信、使用那种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们把这种规则成为协议。(protocol)
TCP/IP是互联网相关的各类协议簇的总称。例如ICMP、TCP、HTTP、FTP、UDP、SNMP、DNS、IP、PPPoE……
协议中存在格式各样的内容。从电缆的规格到IP地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及web页面需要处理的步骤,等等。
像这样吧与互联网相关的协议集合起来总成为TCP/IP。也有说法认为,TCP/IP是指TCP和IP这两种协议。还有一种说法认为,TCP/IP是在IP协议的通信过程中,使用到的协议簇的统称。
2.2、TCP/IP的分层管理
TCP/IP协议簇按层次分别分为一下4层:应用层、传输层、网络层和数据链路层。
TCP/IP协议簇各层的作用如下:
- 应用层:
应用层的任务是通过应用进程间的交互来完成特定网络应用应用层协议定义的是应用进程间通信和交互的规则。 - 传输层:
传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:
传输控制协议TCP——提供面向连接的、可的数据传输服务,其数据传输的单位是报文段
用户数据报协议UDP——提供无连接的、尽最大努力交付的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报 - 网络层:
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据报传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所引起的应用就是在众多的选项内选择一条传输路线。 - 数据链路层(链路层,网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡、光纤等物理可见部分。
2.3、TCP/IP通信传输流
应用层->传输层->网络层->链路层
||
应用层->传输层->网络层->链路层
发送端每经过一层都要增加相应的首部,接收端每通过一层,都要删除对应的首部。
3、与HTTP关系密切的协议:IP、TCP和DNS
3.1、负责传输的IP协议
IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址。
- IP地址指明了节点被分配到的地址
- MAC地址是网卡所属的固定地址。
IP地址可以和MAC地址进行配对。IP地址可以变换,但MAC地址基本不变。
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址。ARP(Address Resolution Protocol)是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
3.2、确保可靠性的TCP协议
按层次分,TCP位于传输层,提供可靠的字节流服务。
字节流服务——为了方便传输,将大块数据分割成一报文段为单位的数据包进行管理,TCP协议为了更容易传输大数据才把数据分割,而TCP协议能够确认数据最终是否送达到对方。
确保数据能到达目标
为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略。
三次握手使双方都知道彼此都具有收发消息的能力。
①A->B:B收到A的请求:B得知:A可以发送消息,B可以接收消息。
②B->A:A收到B的确认,A得知:A可以发送、接收消息;B可以发送接收消息。
③A->B:B收到A的确认:B得知:A可以接受消息,B可以发送消息。
3.3、负责域名解析的DNS服务
DNS服务是和HTTP协议一样位于应用层的协议。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。
4、URI和URL
URI:统一资源标识符
URL:统一资源定位符
uri格式
http://user:pass@www.xiaohaozi.com.con:80/weekly/index.php?id=1#ch1
http://
协议方案名
user:pass
登陆信息(认证)
www.xiaohaozi.com.cn
服务器地址
80
服务器端口号
/weekly/index.php
带层次的文件路径
id=1
查询字符串
ch1
片段标识符
HTTP是不保存状态的协议
- HTTP协议自身不具备保存之前发送过的请求或相应的功能
- 使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或相应报文的信息。这是为了更快地处理大量实物,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。
- HTTP/1.1 虽然是无状态协议,但是为了实现期望的保持状态功能,于是引入了Cookie技术。有课Cookie再用HTTP协议通信,就可以管理状态了。