深入学习http不为别的,只为补充底层知识,打好根基,深入了解其他技术,擒贼先擒王,学好九阳神功以后,乾坤大挪移,太极剑就容易了,急于求成,就只能变周芷若。走着。。。。。。
来源于:图解HTTP
1.使用http协议访问web
web使用一种名为http(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。
协议是指规则的约定。比如:通信网络中,两台计算机或者两个硬件进行通信所必须所共同遵守的约定或规则
可以说web是建立在http协议上通信的。
最初设想的基础理念:借助多文档之间相互关联形成的超文本(HyperText),连城可相互参阅的WWW(World Wide Web,万维网)
现在已提出了WWW投建技术分别是:
①.把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记语言的HTML(HyperText MarkupLanguage,超文本标记语言)。
②.作为文档传递协议的HTTP。
③.指定文档所在地址的URL(Uniform Resource Locator,统一资源定位符)。
2.网络基础 TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP是它的一个子集。
ps:把互联网相关联的协议集合起来总成为TCP/IP
分层
TCP/IP按层次分了四层,为了分工嘛,和系统架构一样,各自干自己的事情就可以了,便于维护
(如图:)利用TCP/IP协议进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
下面一一道来,4个层都会干啥活
应用层:对协议做个选择,它主要决定向用户提供应用服务时通信的活动,没啥说的,就是TCP/IP协议簇中预存了各类通用的应用服务,比如:FTP,DNS,HTTP协议,做个选择
传输层:对上层应用层,主要是做数据传输,准确的说就是:提供处于网络连接中的两台计算机之间的数据传输。
这里面有两个不同的协议:TCP(Transmission Control Protocol 传输控制协议)和UDP(User Data Protocol 用户数据报协议)
网络层(网络互联层):就是选择一个路线把数据传过去。
处理网络上流动的数据包,数据包是网络传输的最小数据单位,这个层就是规定了用怎样的路线到达对方计算机,并把数据包传送给对方。
链路层(数据链路层,网络接口层):用来处理连接网络的硬件部分。比如:操作系统、硬件设备驱动、NIC及光纤物理课件部分。硬件上的范畴均在链路层的作用范围之内。
ps:理解下来就是顺丰发包裹根据运费的高低选择一个交通工具(应用层),是选择空运还是陆运进行运送包裹(传输层),走最近的高速还是飞机航道(网络层)把包裹送到中转站(链路层)。
TCP/IP通信传输流
先拿HTTP举例:
客户端应用层(http协议)发出查看百度页面的http请求==》
传输层(TCP协议)收到数据(http请求报文)进行分割,在各个报文上打上记号及端口号==》
网络层(IP协议)增加通往目的地的MAC地址后转发到==》
链路层==》
接收端服务器在链路层接收到数据,按序一直往上发==》
应用层(才算真正接收到由客户端发送过来的HTTP请求)
ps:发送端在层与层之间传输数据时,每经过一层必定会打上一个该层所属的首部信息,反之,接收端在层与层传输数据时,每经过一层时,会把对应的首部信息去掉。这种把数据包装起来的做法叫做封装(encapsulate)。
3.与http关系密切的协议:IP、TCP和DNS
负责传输的IP协议
作用:把各种数据包传输给对方。处于网络层。
前提:满足各种条件,两个重要的:IP地址和MAC(Media Access Control Address)
IP间的通信依赖MAC地址。在网络上,通信的双方通常是经过多台计算机和网络设备中转才能连接到对方,中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时,会采用ARP协议(Address Resolution Protocal)
ps:ARP是一中解析地址的协议,根据通信双方的IP地址就可以反查出对应的MAC地址。就是个中介。
IP地址指明节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可以改变,MAC地址一般不会改变。
确保可靠性的TCP协议
作用:提供可靠的字节流服务(Byte Stream Service),位于网络层。
啥意思呢,就是TCP协议为了更容易传输大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
ps:就是盖房子要拉水泥,一车拉不完,要一车一车,并且能送到工地使用。
为了数据准确达到目的,采用三次握手(three-way handshaking)策略。只要是要有反馈信息的,一般都会有标记,不然怎么知道成不成,握手过程就使用了TCP的标志(flag)-SYN(synchronize,使同步)和ACK(acknowledgement,确认)。
ps:若中间过程中某个阶段莫名中断,TCP协议会再次以相同的数据发送相同的数据包。除了TCP协议还有其他各种手段来保证通信的可靠性。
负责域名解析的DNS
作用:提供域名到IP地址之间的解析服务,位于应用层。
产生原因:计算机可以被赋予IP地址,也可以赋予主机名和域名,用户通常选择后者来访问计算机,为啥呢,因为好记呗,而计算机更擅长处理数字,为了解决这个问题,DNS服务就出来了。怎么感觉像理财师,帮你理财呢,你不懂财经,理财师懂打理金钱。
DNS通过域名查找IP地址,也可以逆向从IP地址反查域名。
4.各种协议与http协议的关系
看这个总结图:
5.URI和URL
URI用字符串标示一互联网资源,而URL表示资源的地点,课件URL是URI的子集。
表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL以及相对URL。相对URL,是指从浏览器中基本的URI处指定的URL。
绝对URI格式如图: