图解HTTP协议读书笔记一
个人阅读《图解HTTP》的记录以及总结
HTTP协议的概念
HTTP通常被译为超文本传输协议,但这种译法并不严谨,严谨的译法应为"超文本转移协议",HTTP协议也是客户端与服务端的请求和应答一种标准,我们的WEB就是使用HTTP协议作为规范
由于WEB是建立在HTTP协议上通信的,而通常互联网是建立在TCP/IP协议族的基础上运作的,HTTP是TCP/IP的一个子集。所以要了解HTTP协议我们有必要了解下TCP/IP协议
对TCP/IP理解
1.TCP/IP协议族里重要的一点就是分层
TCP/IP分为应用层、传输层、网络层、和数据链路层
应用层:决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务
如FTP 文件传输协议 DNS域名系统
HTTP在这应用层
传输层:对上层应用层, 提供处于网络连接中的两台计算机之间数据传输
在传输层有两个性质不同的协议 :
1. TCP 传输控制协议
2. UDP 用户数据报协议
网络层(又名网络互连层)
网络层用来处理在网络上流动的数据包。数据包是网路传输的最小数据单位。
该层规定了通过怎样的的路径(所谓传输线路)到达对方计算机,并把数据包传送给对方。
链路层(又名数据链路层,网络接口层)
用来处理连接网络的硬件部分。
包括控制操作系统、硬件的设备驱动、NIC(网卡),及光纤等物理可见部分
还包括连接器等一切传输媒介。
示例:
2.IP协议
IP属于网络层
IP协议与IP地址不是一种东西。
IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两种重要的条件是IP地址和MAC地址
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会更改。
IP间的通信依赖MAC地址。此时会采用ARP协议。ARP是一种用以解析地址的协议,根基通信方的IP地址就可以反查出对应的MAC地址
3.TCP协议
按层次分,TCP位于传输层,提供可靠地字节流服务。
这是指为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠地传输协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
4.经典的TCP/IP里的三次握手
TCP采取三次握手的方式确保数据的送达。
握手过程中使用了TCP的标志 - SYN 和 ACK
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
注:若在握手过程中某个阶段莫名中断,TCO协议会再次以相同的顺序发送相同的数据包。
三次握手图示:
5.DNS
DNS服务是和HTTP协议一样位于应用层的协议。
它提供域名和IP地址之间的解析服务。
计算机既可以被赋予IP地址,也可以被赋予主机名和域名。
以用户的角度一般都是通过域名访问对方的计算机(通过浏览器访问网站),而不是通过输入IP地址来访问。域名方式更符合人类的记忆习惯。
同样的让计算机理解域名相对而言就变得困难了。因为计算机更擅长处理一长串数字。
为了解决上述的问题,DNS服务应运而生。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查询域名的服务。
6.URI和URL
URI用字符串标识某一互联网资源,而URL表示资源的地点(指的是互联网上所处的位置)。
由此可见URL识URI的子集。
初识HTTP
1.HTTP协议用于客户端和服务端之间的通信
客户端:请求访问文本或图像等资源的一端
服务端:提供资源响应的一端
注:在应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务端角色,在实际情况下,俩端角色可能互换,但是再一条通信线路中,用HTTP协议就能明确两端定位。
2.通过请求和响应的交换达成通信
请求必定由客户端发出,而服务端响应该请求并返回。
换句话说通信是从客户端开始的建立的,服务端在没有接收到请求之前不会发送响应。
3.HTTP是不保存状态的协议
即无状态协议。
4.HTTP协议以报文形式交流
请求报文是由请求方法、请求URL、协议版本、可选的请求首部字段和内容实体构成的。
(后面会深入了解)
5.HTTP/1.1 是一种无状态的协议。
为了实现期望的保持状态的功能,于是引入了Cookie技术。
有了Cookie技术再用HTTP协议通信,就可以管理状态了
(后面会深入了解)
6.当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。
图示: