图解HTTP
1.HTTP:超文本传输协议
2.TCP/IP:互联网相关协议的集合。
tcp/ip分层:应用层,传输层,网络层,数据链路层。
应用层(HTTP协议):向用户提供应用服务时通信的活动。
例如:FTP:文本传输协议;DNS:域名系统。
传输层(TCP协议):对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
例如:TCP:传输控制协议;UDP:用户数据报协议。
网络层(IP【网际协议】协议):处理网络上流动的数据包。数据包是网络传输的最小单位。
链路层:用来处理连接网络的硬件部分。
例如:控制操作系统,硬件的设备驱动,NIC(网卡)及光纤。
3.IP地址和ip协议
ip 协议:把各种数据包传送给对方。
ip 地址:节点呗分配到的地址,MAC:网卡所属的固定地址。MAC地址基本不会变。
使用ARP协议凭借MAC地址进行通信。
ARP协议:解析地址的协议,根据通信的IP地址就可以反查出对应的MAC地址。
TCP协议三次握手策略:flag-SYN-ACK。
发送端首先发送一个带有SYN标识的数据包给对方。接收端收到后,回传一个带有SYN/ACK标识的数据包以示传达确认信息。最后,发送端在回传一个带有ACK标志的数据包,握手结束。
4. URI和URL
URI:统一资源标识符;URL:统一资源定位符.
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置。)可见URL是URI的子集。
URI语法示例:
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org.rfc/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
URI格式:
表示指定的URI,要使用涵盖全部必要的绝对URI,绝对URL以及相对URL。相对URL:是从浏览器中基本URI处指定的URL。
绝对URI的格式如下表格:
http | ://user:pass | @www.example.jp | :80 | /dir/index.html? | uid=1 | #ch1 |
---|---|---|---|---|---|---|
协议方案名 | 登录信息(认证) | 服务器地址 | 服务器端口号 | 带层次的文件路径 | 查询字符串 | 片段标识符 |
5.http协议用于客户端和服务器端的通信
http协议规定,请求从客户端发出,最后服务器响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接受到请求之前不会发送响应的。
1.请求报文是从请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。
GET /index.htm HTTP/1.1
Host:hackr.jp
请求报文的构成如下表格
方法 | URI | 协议版本 | 请求首部字段 | 内容实体 |
---|---|---|---|---|
POST | /from/entry | HTTP/1.1 | Host:hackr.jp Connection:keep-alive Content-Type:application/x-www-from-urlencoded | name=ueno&age=17 |
响应报文由协议版本,状态码(表示请成功或者失败的数字代码)、用以解释状态码的原因短语,可选的响应首部字段以及实体主题构成。
响应报文的构成如下表格
协议版本 | 状态码 | 状态码的原因短语 | 响应首部字段 | 实体 |
---|---|---|---|---|
HTTP/1.1 | 200 | OK | Date :tue,10 Jul 2012 06:50:15 GMT Content-Length:362 Content-Type:text/html | <html> |
6.http是不保存状态的协议
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说HTTP这个级别,协议对于发送的请求或者响应都不做持久化的处理。(若是想要保存状态,可以引入Cookie技术。)
7.请求URI定位资源
当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。
请求URI的方式:
~URI为完整的请求URI GET http://hackr.jp/index.htm HTTP/1.1
~在首部字段Host中写明网络域名或者IP地址 GET /inedx.htm HTTP/1.1 Host :hackr.jp
除此之外,如果不是访问特定资源而是对服务器本身发起请求,可以用一个*来代替请求URI. OPTIONS * HTTP/1.1
网友评论