图解HTTP阅读记录(一)

了解Web及网络基础

网络基础TCP/IP

    所谓TCP/IP 简单来说就是互联网相关的各种协议族的总称。

    因为在计算机与网络设备进行通信的时候是需要定义好一定的规则的,所以便出现了很多的协议,比如大家所熟知的HTTP协议就是属于TCP/IP的。

TCP/IP的分层管理

    TCP/IP协议族中比较重要的一点就是分层,分层让设计与修改变得简单起来,假如说不分层的话如果某个地方需要进行修改时,则需要进行整体替换,而进行分层的话只需要将需要变动的层替换掉即可。

自上而下分为四层 :

应用层

    应用层决定了向用户提供应用服务时通信的活动,比如文件传输协议FTP,域名系统DNS以及HTTP均属于此层。

传输层

    传输层对于上层应用层,提供处于网络连接中的两台计算机之间的数据传输。比如传输控制协议TCP和用户数据报协议UDP属于此层。

网络层

    网络层用于处理网络上流通的数据包,数据包是网络传输的最小数据单位,网络层规定了通过怎样的路径(可理解为传输路径)到达对方计算机,并把数据包传送给对方,通俗来说就是在众多线路中选择一条传输路线。

链路层

    也称数据链路层,用来处理连接网络的硬件部分,硬件上的范畴均在链路层的作用范围内。

TCP/IP通信传输流

    利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。

    发送端从应用层往下走,接收端则往应用层往上走。我们用HTTP举例来说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。接着,为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

    发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)。

IP、TCP、DNS

IP

    IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。

    使用ARP协议凭借MAC地址进行通信IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时,会采用ARP协议(Address ResolutionProtocol)。ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

TCP

    TCP位于传输层,提供可靠的字节流服务。

    字节流服务是指为了方便传输将大块数据分割成以报文段为单位的数据包进行管理。

    可靠的传输服务是指,能够将数据准确可靠的传给对方。

    一句话可概括为TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够准确确认数据最终是否送达到对方。

    三次握手

    为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。

    用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。



DNS

    DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。

    简单来讲DNS作用在于将域名转换为IP地址。

    DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。


完整的请求路径以及功能图


URI和URL

    简单来讲URI是用来标识某个互联网资源而URL表示的是资源的确切位置。

    URL为URI的子集。

    URI格式


你可能感兴趣的:(图解HTTP阅读记录(一))