HTTP入门(一):了解Web及网络基础

了解Web及网络基础

1.1使用HTTP协议访问Web

  • Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的

1.2HTTP诞生

  • Web最初的理念是:借助多文档之间相互形成的超文本(HyperText),连成可相互参阅的WWW(World Wide Web,万维网)
  • 现在已经提出了3项WWW构建技术,分别是:
    • 把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记语言HTML(HyperText Markup Language,超文本标记语言)
    • 作为文档传递协议的HTTP
    • 指定文档所在地址的URL(Uniform Resource Locator,统一资源定位符)

1.3网络基础TCP/IP

  • 协议 :计算机与网络设备要相互通信,双方必须基于相同的方法,比如,如何探测到通信目标,由哪一方先发起通信、使用哪种语言进行通信,怎样结束通信等规则等需要事先确定。不同的硬件、操作系统之间的通信,所有的一切需要一种规则,我们把这种规则称为协议。
  • TCP/IP:把与互联网相关联的协议集合起来总称为TCP/IP协议族。
TCP/IP分层管理
  • TCP/IP协议族里面最重要的一点就是分层,按层次分为以下4层:应用层、传输层、网络层、数据链路层。

  • 层次化的好处:

    • 若互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可,把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。
    • 层次化之后,设计也相对简单,每个层次只需考虑本层次各自的内容即可。
  • TCP/IP协议族各层的作用如下:

    f3iP2.png

    • 应用层:决定向用户提供应用服务时通信的活动。

    预存了各类通用的应用服务,比如FTP(File Transfer Protocol)和DNS(Domain Name System,域名系统),HTTP(HTTP协议只是TCP/IP协议族的一个子集),POP3,SMTP,TELNET

    • 传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输

    TCP(Transmission Control Protocol,传输控制协议)

    UDP(User Data Protacol,用户数据报协议)

    • 网络层:用来处理在网络上流动的数据包。

    网络包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输线路)到达对方计算机,并把数据包传送给对方。

    与对方计算机之间通过多台计算机或网络设备进行传输,网络层所起的作用就是在众多的选项内选择一条传输路线。

    • 链路层(数据链路层,网络接口层)

    用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC、光纤等物理操作系统。

TCP/IP通信传输流

f5eUN.png

利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层上方走。

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

f57rX.png

发送端在层与层之间传输时,每经过一层时必定会打上一个该层所属的首部信息,反之,接收端在层与层数据传输时,每经过一层时会把对方的首部消去。

这种把数据信息包装起来的做法称为封装

1.4与HTTP关系密切的协议:IP、TCP和DNS

负责传输的IP协议
  • IP(Internet Protocol)网际协议位于网络层,其不同于IP地址,”IP”是一种协议
  • IP协议作用是把各种数据包传送给对方,而且确保确实传送到对方那里,需要满足各类条件,其中两个重要的条件是IP地址MAC地址
  • IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。 IP地址和MAC地址配对,IP地址可换,但MAC地址一般不会换。
  • 使用ARP协议凭借MAC地址进行通信
    • IP 间的通信依赖 MAC 地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC地址来搜索下一个中转目标。这时,会采用 ARP 协议(AddressResolution Protocol)。ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
确保可靠的TCP协议
  • TCP位于传输层,提供可靠的字节流服务。
  • 所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方

1.5负责域名解析的DNS服务

  • DNS服务位于应用层,提供域名到IP地址之间的解析服务
  • 计算机既可以被赋予IP地址,也可以被赋予主机名和域名,比如[www.csdn.net]
  • DNS协议能够提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

f9OxA.png

1.6各种协议与HTTP协议的关系

f9pzO.png

当输入一个网站的时候:

  • DNS域名解析,根据域名或者主机名得到对应的IP地址
  • HTTP协议生成针对目标Web服务器的HTTP请求报文
  • TCP,为了方便通信,将HTTP请求报文分割成报文段,按序号分成多个报文段,3次握手建立连接,把每个报文可靠地传给对方
  • IP协议,搜索对方的的地址,一边中转一边传送
  • TCP协议:从对方那里接收到报文段,按序号以原来的顺序重组请求报文
  • HTTP协议:对Web服务器的请求的内容进行处理
  • 请求的结果也同样利用TCP/IP通信协议向用户进行回传,客户端得到相应的请求
  • 浏览器解析HTML代码,并请求HTMl中的资源
  • 浏览器对页面进行渲染,展示在用户面前

1.7URL和URI

  • URL(Uniform Resource Locator) 统一资源定位符,即使用Web浏览器等访问Web页面时需要输入的网页地址。
  • URI(Uniform Resource Identifier) 统一资源标识符
    • Uniform
      规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文
      环境来识别资源指定的访问方式。另外,加入新增的协议方案(如
      http: 或 ftp:)也更容易。
    • Resource
      资源的定义是“可标识的任何东西”。除了文档文件、图像或服务(例如当天的天气预报)等能够区别于其他类型的,全都可作为资源。另外,资源不仅可以是单一的,也可以是多数的集合体。[这点不太理解,那么文档文件、图像等不是资源吗?]
    • Identifier
      表示可标识的对象。也称为标识符。
    • 综上所述,URI 就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。采用 HTTP 协议时,协议方案就是 http。除此之外,还有 ftp、mailto、telnet、file 等。标准的 URI 协议方案有 30 种左右。
  • URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位置)。可见 URL 是 URI 的子集。 如下URI示例:

f9ZpR.png

  • 表示指定的 URI,要使用涵盖全部必要信息的绝对 URI、绝对 URL 以及相对 URL。相对 URL,是指从浏览器中基本 URI 处指定的 URL,形如 /image/logo.gif。
  • 绝对 URI 的格式:

f9vqY.png

1.8URI和URL的区别:

在知乎回答看到了高赞,解决了我的问题,特地贴出来记录一下。

统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来
拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。
现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们能且仅能确定一个人。
那统一资源定位符URL是什么呢。也拿人做例子然后跟HTTP的URL做类比,就可以有:

动物住址协议://地球/中国/浙江省/杭州市/西湖区/某大学/14号宿舍楼/525号寝/张三.人

可以看到,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。URL是以描述人的位置来唯一确定一个人的。
在上文我们用身份证号也可以唯一确定一个人。对于这个在杭州的张三,我们也可以用:身份证号:123456789 来标识他。

所以不论是用定位的方式还是用编号的方式,我们都可以唯一确定一个人,都是URl的一种实现,而URL就是用定位的方式实现的URI。

回到Web上,假设所有的Html文档都有唯一的编号,记作html:xxxxx,xxxxx是一串数字,即Html文档的身份证号码,这个能唯一标识一个Html文档,那么这个号码就是一个URI。

而URL则通过描述是哪个主机上哪个路径上的文件来唯一确定一个资源,也就是定位的方式来实现的URI。对于现在网址我更倾向于叫它URL,毕竟它提供了资源的位置信息,如果有一天网址通过号码来标识变成http://741236985.html,那感觉叫成URI更为合适,不过这样子的话无法定位该资源了。

总结来说:URI用字符串可唯一标识某一互联网资源,而URL标识资源的地点,同样也可以唯一标识某一资源,而且起到了定位的作用,所以说,URL是URI的子集。

1.9参考

图解HTTP

HTTP 协议中 URI 和 URL 有什么区别?

猜你喜欢

转载自blog.csdn.net/endlessseaofcrow/article/details/80360350