总结一下吧。。(周末把博客的上传图片做好。拖了好久了。。)
1. 了解Web及网络基础
1.1 使用HTTP协议访问Web
Web浏览器输入指定URL,浏览器从服务器获取resource资源,然后显示页面。
一般发送请求获取服务器资源的Web浏览器叫做客户端。
Web使用HTTP(Hyper Text Transfer Protocol,超文本传输协议)作为规范。
1.2 HTTP的诞生
为了知识共享而规划Web
- 致力于借助多文档之间的关联关系形成超文本(HyperText),连成相互参阅的WWW(world wide web)
- 目前WWW包括三种:
1.将SGML(Standard Generalized Markup Language)作为页面的文本标记语言的HTML
2.作为文档传输协议的HTTP
3.指定文档所在地址的URL(uniform resource locator,同一资源定位符)
WWW是Web浏览器当年用来浏览超文本的客户端应用程序时的名称,现在表示这一系列的集合。
1.3 网络基础TCP/IP
HTTP为TCP/IP的子集。TCP/IP是互联网各个相关协议的总称
网络设备互联需要规则,即协议(protocol)
TCP/IP的分层管理
TCP/IP协议层主要使用到了七层协议中的四层:
- 应用层:决定了向用户提供应用服务时通信的活动。常见的有FTP(file transfer protocol文件传输协议)和DNS(domain name system 域名系统)
- 传输层:传输层为应用层提供网络连接中两台计算机之间的数据传输,常见的协议包括TCP和UDP
- 网络层:分配以怎样的路径到达对方的计算机,并发送数据包给对方
- 链路层:处理连接网络之间的硬件部分
使用TCP/IP协议进行网络通信时,发送端从应用层往下走,接受端相反。
客户端作为发送端,在传输层(TCP协议)将从应用层接受到的数据(HTTP响应报文)进行分割,将各个报文打上标记与端口号,然后转发给网络层。网络层(IP协议)添加通讯目的地的MAC地址,发给链路层,接收端相反。
1.4 与HTTP协议关系密切的协议:IP,TCP和DNS
IP协议(Internet Protocol)网际协议,位于网络层。作用是将各类数据包传给对方。其中,两个重要的参数是IP地址和MAC地址(media access control address)
IP地址指明了节点被分配的地址,MAC地址指网卡所属的固定的地址。IP地址可变,MAC地址一般不会变。
使用ARP协议基于MAC地址进行通信
IP间的通信基于MAC地址。在网络上,如果通信双方不在同一局域网内,则需要进行中转,中转会利用下一站中转设备的MAC地址搜索下一个中转目标。ARP(address resolution protocol)可以根据IP地址查找到对应的MAC地址。
TCP协议
TCP位于传输层,提供可靠的字节流服务–将数据分割成以报文为单位的数据包进行传输。
方法:三次握手(three-way handshaking)
若中途中断,以相同的顺序发送相同的数据包。
DNS服务:位于应用层,提供域名到IP地址的解析,或者逆向从IP地址反查域名
整体流程:
1.5 URI和URL
URI:uniform resource identifier缩写
uniform:规定统一的格式来处理多种不同类型的资源,而不用上下文环境分辨
resource:可标识的任何东西
identifier:标识符
综上,URI是由某个协议方案表示的资源的定位标识符。协议方案就是访问资源使用的协议类型名称
URI用字符串表示某一互联网资源。URL表示资源的地点,URL是URI的子集。
URI格式:
- http:/https: 表示协议方案名获取资源时指定的类型
- 登录信息:指定用户信息的必要的登录信息
- 服务器地址:使用绝对URI指定。可以是DNS解析的地址,也可以是IPV4或者IPV6地址
- 服务器端口号:没有默认
- 文件路径
- 查询字符串:查询参数
- 片段标识符:指定文档内的某个位置
RFC协议:request for comments
2.简单的HTTP协议
2.1 HTTP协议用于客户端和服务器端的通信
HTTP规定,请求先从客户端开始建立通信,服务器端在没有接受到请求之前不会发送响应
GET:表示强求服务器的类型,成为method
/ :即为 /index.htm
HTTP/1.1:表示HTTP版本
等同于:请求访问某台HTTP服务器上的/index.htm资源
请求报文由下列内容组成:请求方法,请求URI,协议版本,可选请求首部字段,内容实体
接受到请求的服务器会以下列响应返回:
响应报文包括:协议版本,状态码,解释状态码的原因,创建响应时间,空一行后为资源实体的主体
2.2 HTTP是无状态的协议
HTTP不对请求和响应之间的通信状态进行保存,就是说在HTTP协议对于发送过的请求或者响应作持久化处理。
但是为了保持状态,引入了cookie。有关cookie的稍后再说
当客户端请求访问资源而发送请求时,URI需要将请求报文中的URI包括在内。
请求URI的方法一般有:
- 完整的URI地址
- 如果对服务器本身发送请求,使用*代替URI
2.3 告知服务器意图的HTTP方法
GET
GET方法请求访问已被URI识别的资源,指定的资源经服务器解析后返回响应内容。
POST
POST用来传输实体的主体
- PUT
但是由于HTTP/1.1的PUT不带验证机制,任何人都可以上传文件,存在安全性问题,所以除了REST的架构机制外,一般不使用此方法。
- HEAD
与GET类似,不返回报文主体部分。用于确认URI的有效性和资源更新的日期时间等。
- DELETE
与PUT相反,根据URI删除指定的资源
同PUT一样,除了REST之外不带验证机制
- OPTIONS
用于查询针对请求URI指定的资源支持的方法