一 基础名词
www(world wide web)万维网
3项www构建技术
-
SGML 标准通用标志语言。页面文本标记语言。比如,HTML(HyperText Markup Language)超文本标记语言
-
文档传输协议。HTTP(HyperText Transfer Protocol)超文本传输协议
-
指定文档所在地址的URL(Uniform Resource Locater),统一资源定位符
TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,而HTTP是其子集
协议(protocl)
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如如何探测目标,谁先谁后,怎么结束,电缆的规格,ip的选定方法,不同硬件、操作系统之间通信,都需要一种规则。
TCP/IP分层
优点:设计更有条理,易扩展、易维护
应用层:向用户提供应用服务时通信的活动。TCP/IP预存了各类通用的应用服务,比如HTTP、FTP、DNS
传输层:为上层提供数据传输。TCP 和 UDP
网络层:处理网络上流动的数据包。规定传输路线策略,比如IP协议
链路层:网络接口层,处理硬件部分。包括操作系统、硬件的设备驱动,网卡、光纤等。
IP协议
IP(Internet Protocol)网际协议位于网络层。几乎所有使用网络的系统都会用到。
作用:把数据包传送给对方。而要保证确实送达,需满足各种条件。最重要的两个是ip地址和MAC地址(Media Access Control Address)
ip指明了节点被分配到的地址,Mac指网卡所属的固定地址。
ip地址可以与Mac地址配对。IP可变,MAC基本不改。
没有人能够全面掌握网络传输状况,计算机和网络设备只能知道粗略路线,这种机制叫路由选择(routing)
确保可靠性的TCP
位于传输层,提供可靠的字节流服务。
为了方便传输,将大块数据分割成报文段(Segment)为单位的数据包
三次握手:为了确认对方的发送和接收能力都ok,使用TCP的标志(flag),即SYN(synchronize)和ACK(acknowledgement)。
第一次握手:server得知client发送能力ok
第二次握手:client得知,server的接收和发送能力ok
第三次握手:server得知client接收能力ok
如果只进行二次握手,如果client接收能力不ok,client第二次握手中就收不到包,而server已经建立了连接,导致client会继续发送连接请求,而server建立多个无用连接。
DNS(Domain Name System)
应用层,提供域名到IP地址的解析服务。主机名/域名,比如网址,更好记。IP地址,二进制数字。
URI
URI:uniform resource identifier 统一资源标志符,由某协议方案表示的资源的定位标志符。
URL:uniform resource locator 统一资源定位符,当协议为http时的URI。
格式:
二 简单的HTTP协议
通信时,对于单一条线路必定一客一服。
HTTP规定:请求由客户端发出,服务端响应。
请求报文组成
响应报文组成
不保存状态的http
无状态(stateless),不保留之前的一切通信信息。为了快,故意简单设计。
使用URI定位资源
请求报文需要包含URI,有3种方式
-
URI为完整的请求URI,比如GET hackr.jp HTTP/1.1
-
在首部字段Host中写明域名或ip
-
如果访问服务器本身,比如"*",查询server支持的服务器的Http方法种类。
HTTP方法
用来告知意图
-
GET:获取资源,对象是文本或者CGI(common gateway interface)通用网关接口,指向程序,返回执行结果
-
POST:传输实体主体
-
PUT:传输文件,因为http不安全,一般不开。要配合web应用程序的验证机制,或者架构设计采用REST表征状态转移标准的同类web
-
HEAD:获得报文首部,一般用来确认资源的有效性
-
TRACE:将之前的请求通信环回给客户端的方法
-
CONNECT:要求用隧道协议连接代理,通过SSL和TLS(transport layer security)
cookie状态管理
为了保留无状态协议的快速,又解决无状态的不方便,引入cookie。
client——》登录操作——》server
client《——响应+cookie《——server
client——》请求+cookie——》server
报文结构
三 HTTP状态码
-
1xx infor 接受请求正在处理
-
2xx suc 请求正常处理
-
3xx redirection 重定向,需要附加操作完成请求
-
4xx client err 客户端错误
-
5xx server err 服务端错误
常用14种
-
200 ok
-
204 no content
-
206 partial content 范围请求成功执行
-
301 moved permanently 永久重定向。资源已换新URI,不更新书签。
-
302 found 临时重定向。不更新书签
-
303 see other 使用GET重定向
-
304 not modify 客户端附带条件的资源请求未满足
-
400 bad request 请求语法错误
-
401 unauth 需要HTTP认证
-
403 forbidden 权限问题
-
404 not found 没有或拒绝
-
500 internal server err 服务端错误
-
503 service unavailable server暂时超载或正在停机维护
四 http的协作web服务器
代理
中间人,设计代理的目的
-
利用缓存技术减少网络贷款流量
-
针对特定网站的访问控制
-
获取访问日志
网关
转发其他服务器通信数据的服务器,能够接收请求并响应。
目的
-
提升通信的安全性,通信线路加密
-
可对接数据库
隧道
在相隔甚远的两者之间中传输,使用ssl等加密手段,并保持通信连接的应用程序。隧道不会解析报文,保持原样传输。
缓存
代理服务器或客户端本地磁盘保存的资源副本,以减少访问,节省时间。
五 HTTPS
HTTPS是在HTTP基础上增加加密认证机制。可以说,身披ssl外壳的HTTP,没有改动HTTP,而是增加中间ssl层。
使用的加密认证机制:
-
防窃听:对通信加密,使用ssl(secure socket layer)或tls(transport layer security)
-
防伪装:使用证书,由值得信任的第三方颁发,要钱。对付大量恶意请求DOS(denial of service)攻击
-
防篡改:使用独立密钥+报文摘要来验证。折中的使用MD5和sha等散列值来验证,但防不住自己网页被改。
非对称加密
对称加密:双方同一套锁和钥匙,速度快
非对称加密:双方各有一套锁和钥匙,都把锁给对方,自己保留钥匙,这样对方用自己的锁加密,然后自己接收后再解密。速度慢,消耗资源多
HTTPS使用混合加密,先用非对称加密建立连接,然后用对称加密
六 HTML
超文本标记语言
超文本:一种文档系统,可将文档中任意位置的信息与其他信息建立关联
标记语言:在文档中穿插特别的字符串标签,用来修饰文档。被<>包围的就是标签,在标签的作用下,文字改变样式。
css
cascading style sheets 层叠样式表,可以指定如何展现网页中的各种元素,属于样式标准之一。
理念:将文档的结构与设计分离,达到解耦目的。
七 动态HTML
在客户端将静态HTML内容变成动态的总称
工具:
-
客户端脚本语言,JavaScript,动态改造
-
DOM(document object Model 文档对象模型),用以操作HTML和XML文档的API(application program interface)。
八 web应用
通过web提供的应用程序,比如购物网站,网银,搜索
原本只能返回静态内容,现在可由web程序来实现动态返回。
CGI
common gateway interface 通用网关接口,是web接受到请求转发给程序的一组机制。一般由perl、PHP、ruby和C编写。
XML
extensible markup language 可扩展标记语言,可按应用目标进行扩展的通用标记语言,让互联网分享更容易。
XML和HTML都是从标准通用标记语言SGML简化而成。
JSON
JavaScript object notation 以JavaScript的对象表示法为基础的轻量级数据标记语言。
让数据更纯粹,并且json的字符串形式可被JavaScript轻易读入。