第一章概述
1.TCP/IP协议簇一共分为七层
应用层:Http Ftp 等等
表示层:
会话层:
传输层: TCP UDP
网络层:IP协议, ICMP协议, IGMP协议
链路层:设备驱动程序以及接口卡
物理层:
既然协议簇命名为:Tcp/Ip 核心就是TCP和IP
IP协议:是无连接的网络协议,主要是处于网咯层的IP协议提供传输方式不可靠的,它只承诺尽可能地将数据报发送出去,但不保证发送的数据报能够成功的抵达目的地。IP协议不可靠性还体现在它不能检测数据在传输过程中是否发生改变.
TCP协议:建立在网络层之上的传输层解决网络层这两个问题; 是基于一个连接的传输协议,数据交换双方在进行报文传输之前需要建立连接,报文传输结束之后就关闭连接。
TCP 利用"接收确认"和"超时重传"机制确保数据能够成功抵达目的地.
HTTP :"超文本传输协议"是TCP/IP协议簇一部分;这是之前分成七层处于应用层,由于在传输层之上所以HTTP自然提供可靠数据传输的保障。
IP协议利用IP地址定位数据报发送的目的地,而利用域名系统(DNS)可以实现域名与IP地址之间的转换;TCP协议利用端口(Port)标识应用程序,所以两个应用程序在使用TCP协议进行通信的时候必须确定双方的IP地址(或者域名)和端口号;
HTTP默认端口:80
HTTPS默认端口:443
2.web 资源
媒体类型:数据处理必须依赖于一种已知的格式,所以将资源的形态以一种标准化的方式确定下来显得尤为重要,这个描述资源格式的标准称为媒体类型(MIME);
几种常用的媒体类型为:
text/html:HTML格式的文本
text/xml(application/xml):XML格式的文本
text/json(application/json):JSON格式的文本
image/gif(image/jpeg,image/png):GIF(JPEG,PNG)格式的图片
audio/mp4(audio/mpeg,audio/vnd.wave):MP4(MPEG,WAVE)格式的音频文件
video/mp4(video/mpeg,video/quicktime):mp4(MPEG,QUICKTIME)格式的视频文件
MPEG:动态图像专家组
QuickTime:是一款拥有强大的多媒体技术的内置媒体播放器
URI 和URL ,URN
URI:"统一资源标识",标识可操作的资源应该具有一个或多个唯一的标识;
URL:"统一资源定位符",包含了标识符,还有具有定位的功能,可以用于描述资源的位置;一个完整的URL包含协议名称,主机名(ip地址或者域名),端口号,路径,查询字符串5个部分
URN:"统一资源定位名称",它与资源位置无关,资源位置改变了其标志符依然不改变。
HTTP 响应状态:
100-199: 信息状态码
200-299:成功状态码
300-399:重定向状态码,代表需要客户端采取进一步的操作才能完成请求
400-499:客户端错误代码,代表因客户端发生错误而妨碍了服务的处理
500-599:服务端错误状态码,代表服务器在处理请求的过程中有错误或者异常发生。
HTTP 报文
客户端和web服务器在一次HTTP事务交换的消息称为HTTP报文;报文有三部分组成:
起始行:代表HTTP报文的第一行文字,请求报文利用起始行标识采用的HTTP方法,请求URL和采用的HTTP的版本
例如: GET http://www.micosoft.com/en-us/ HTTP/1.1
HTTP方法是:GET
目标资源: http://www.micosoft.com/en-us/
协议版本:HTTP/1.1
报头集合:HTTP报头的起始行后可以包含零个或多个报头字段;每个报头表现为一个键值对。
报头获得主机名称(Host)
采用的缓存策略(Cache-ControI)
浏览器相关信息(Uscr¨Agent)
客户端支持的媒体类型(Accept)
编码方式(Accept-Encoding)
语言(AGcept-Language)
字符集(Aooept-Charset)
主体内容:代表报头集合结束标志的空行之后就是HTTP报文的主体部分;
RESTful Wen APi
REST不是一个标准,而是一个架构风格,与之对应的是传统的web service 采用的RPC架构风格。
如果说RPC是一种面向操作的架构风格的话,REST就是一种面向资源的架构风格。
使用标准的HTTP方法
GET:用于获取所需要的资源,服务器一般将对应的资源置于响应的主体部分返回客户端。
HEAD:请求一般不是为了获取目标资源本身的内容,而是希望得到描述资源的元数据信息。服务器一般将对应资源的元数据置于响应的报头集合返回给客户端,所以这样的响应一般不具有主体部分。
OPTIONS:请求一般是一种”探测“请求,其目的在于确定针对某个目标地址的只是请求应该具有这样的约束(比如应该采用怎样的HTTP方法或者必须携带怎样的自定义报头),然后根据其约束发送符合条件的请求。
POST和PUT:均可以请求添加一个新的资源,但是两者的不同之处在于:前者一般不能决定标识添加资源最终采用的URL,即服务端最终为成功添加的资源指定URI;而后者,最终标识添加资源的URI是可以由请求者控制的。如果PUT提供的资源不存在,则做添加操作,否则做修改操作。
PATCH:如果需要进行"局部"修改,因为语义上讲是打补丁的意思。
DELETE:删除
GET,HEAD,OPTIONS均被认为是安全的方法,也被视为幂等方法。
幂等性(indemoptent)是一个数学上的概念,在这里标识发送一次或多次请求引起的边界效应是一致的。