首页 > 代码库 > 图解HTTP
图解HTTP
第一章
TCP/IP的分层管理
应用层:决定了向用户提供应用服务时的通信的活动。比如:FTP(文件传输协议),DNS(域名系统),HTTP
传输层:对上层应用层,提供了处于网络连接中的两台计算机之间的数据传输。TCP,UDP
网络层:用来处理在网络上流动的数据包(网络传输的最小数据单位),该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。
数据链路层:处理连接网络的硬件部分,比如,硬件的设备驱动,NIC,光纤
利用TCP/IP进行网络通信时,通过分层顺序与对方进行通信,发送端从应用层往下走,接收端则往应用层走。发送端在层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息。反之,接收层,每经过一层会把对应的首部消去。
负责传输的IP协议
IP(属于网络层),作用是把各种数据包传送给对方,保证确实传送到对方要满足的两个重要的条件是IP地址和MAC地址(网卡所属的固定地址)。IP间的通信依赖MAC地址(双方计算机通信都需要中转),路由选择就像送快递,分片(不管怎样,就是先中转)。
TCP(传输层)
提供了可靠的字节流服务。能够确认数据是否送到到对方(三次握手:用TCP协议把数据包发送后,会确认是否发送成功,握手中使用的标志:SYN和ACK,发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带SYN/ACK标志的数据包以传达确认信息,最后,发送端再回传一个带ACK标志的数据包,代表握手结束,若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包)。
负责域名解析的DNS服务(应用层)
因为人类的记忆习惯,才有的主机名或域名。DNS提供通过域名查找IP地址,或逆向查找的服务。发送端在DNS中找到相应的IP,发送端再去向此IP下的服务器发送请求
URL和URI
URL是URI的子集。URL就是地址栏输入的网址。URI就是某个协议方案表示的资源的定位标识符。采用HTTP协议是,协议方案就是http。URI用字符串标识某一互联网资源,而URL表示资源的地点。
第二章
HTTP是无状态协议,但为了实现保持状态的功能(譬如网站需要保持登录状态),于是引入了cookie。
HTTP使用URI定位互联网上的资源。因为URI,才能在互联网上的任意位置的资源都能访问到。
GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT
Cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的叫set-Cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务端接受到cookie后,会去检查从哪一个客户端发来的,然后对比服务器上的记录,得到之前的状态信息。
第三章 HTTP报文
编码提升传输速率,但是编码需要计算机完成,会消耗更多的CPU等资源。
常用的内容编码:gzip,compress,deflate,identity
分块传输编码:把实体主体分块的功能。(传输大量数据,把数据分割成多块,能够让浏览器逐步显示页面)
发送多种数据多部分对象集合,采用了MIME机制,来容纳多份不同类型的数据。相应的,HTTP协议中也采纳了多部分对象集合(需要在首部字段里加上content-type)。
获取部分内容(譬如图片下载了一半中断)的范围请求:会用到首部字段Range来指定资源的byte范围。
内容协商:包含在请求报文中的某些首部字段就是判断的基准,
第四章 返回结果的HTTP状态码
经常使用的14个状态码
200 OK
204 No Content 请求处理成功,但没有资源科返回
206 Partial Content 表示客户端进行了范围请求,服务器执行成功了,响应报文中包含了由Content-Range指定范围的实体内容。
3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently 表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
302 Found 表示请求的资源已被分配了新的URI,希望用户能使用新的URI访问。与301相似,但是区别是302状态码不是被永久移动,只是临时性质的。
303 See Other 表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。与302功能相同,但303明确表明客户端应当采用GET方法获取资源
304 Not Modified 表示客户端发送附带条件的请求时,服务端允许请求访问资源,但未满足条件的情况。304状态码返回,不包含任何响应的主体部分,与重定向没有关系。
307 Temporary Redirect 临时重定向,与302有相同的含义。
4XX 客户端错误
400 Bad Request 表示请求报文存在语法错误
401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。另外若之前已进行过一次请求,则表示用户认证失败。
403 Forbidden 表明对请求资源的访问被服务器拒绝了。
404 Not Found 表明服务器上无法找到请求的资源。
5XX 服务器错误
500 Internal Server Error 表明服务器在执行请求时发生了错误
503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
第五章
即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可假想已具有多台服务器。
第六章
图解HTTP