hmhm

阅前必读:文章有点基础,是我在看《图解HTTP》这本书时做的笔记,也补充了一点东西。

网站访问原理图

1.TCP/IP协议族

1.TCP/IP协议的分层

TCP/IP协议族是分层管理的,在OSI标准中可以分为7层(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,可记为:应表会传网数物),本篇博客我们采用的是TCP/IP协议族中的四层(应用层、传输层、网络层、链路层)。下方是对四层中每层的简单介绍:

  • 应用层:该层是面向用户的一层,也就是说用户可以直接操作该层,该层决定了向用户提供应用服务时的通信活动。本篇博客要聊的HTTP(HyperText Transfer Protocol:超文本传输协议)就位于该层。我们经常使用的FTP(File Transfer Protocol: 文件传输协议)和DNS (Domain Name System: 域名系统)都位于该层。FTP简单的说就是用来文件传输的。而DNS则负责域名解析的,通过DNS可以将域名(比如:www.baidu.com)与IP地址(201.33.xx.09)进行相互的转换。在7层中,又将该层分为:应用层、表示层和会话层。
  • 传输层:应用层的下方是传输层,应用层会将数据交付给传输层进行传输。TCP(Transmission Control Prococol:传输控制协议)和UDP(User Data Protocol: 用户数据协议)位于该层,当然见名知意,该层是用来提供处于网络连接中的两台计算机直接的数据传输的。TCP建立连接是需要三次握手来确认连接情况,而UDP则没有三次握手的过程。稍后会介绍。
  • 网络层:传输层的下方是网络层,网络层用来处理在网络上流动的数据包,IP(Internet Protocol: 网际协议)就位于这层。该层负责在众多网络线路中选择一条传输线路。当然这个选择传输线路的过程需要IP地址和MAC地址的支持。
  • 链路层:在7层协议中,将链路层分为数据链路层和物理层。该部分主要是用来处理网络的硬件部分,我们常说的NIC(Net Work Card),也就是网卡就位于这一部分,当然光纤也是链路层的一部分。

2.TCP/IP 通信传输流

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

我们用 HTTP 举例来说明:

1.首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。

2.在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

3.在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。

4.接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。

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

3.IP,TCP和DNS

这里我们分别针对与HTTP密不可分的这三种协议,IP,TCP和DNS

1.IP协议的概念与作用

英文为Internet Protocol,翻译成网际协议,位于网络层,几乎所有的网络都会用到IP协议。

这里可能会有人吧IP和IP地址搞混,其实是一种协议的名称。

1.IP协议

IP协议的作用是吧各种数据包传输给对方.而要保证确实传送到对方哪里,则需要满足各类条件。

其他两个重要的条件是IP地址和MAC地址(Media Access Control Address)

2.IP地址

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更换。

3.MAC地址

这里我们简单介绍下MAC地址

物理地址是一种标识符,用来标记网络中的每个设备。同现实生活中收发快递一样,网络内传输的所有数据包都会包含发送方和接收方的物理地址。

由于网络设备对物理地址的处理能力有限,物理地址只在当前局域网内有效。所以,接收方的物理地址都必须存在于当前局域网内,否则会导致发送失败。

MAC 地址是预留的

由于数据包中都会包含发送方和接收方的物理地址,数据包从起始地发送到目的地,为了能够正确地将数据包发送出去,就必须要求 MAC 地址具有唯一性。因此 MAC 地址都是由生产厂家在生产时固化在网络硬件中,是硬件预留的地址。

MAC 地址格式

硬件的 MAC 地址是厂家按照一定的规则,进行设置所产生的,因此,MAC 地址拥有自己的格式。

MAC 地址采用十六进制数表示,共 6 个字节(48 位),长度为 48bit(字节)。整个地址可以分为前 24 位和后 24 位,代表不同的含义。

  • 前 24 位称为组织唯一标识符(Organizationally Unique Identifier,OUI),是由 IEEE 的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
  • 后 24 位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中 MAC 地址后 24 位是不同的。

那我们这里简单介绍下如何查看咱们的电脑的MAC地址

1、在设置→网络和Internet→WLAN/以太网

我们点开他

下面可以看到MAC地址

4.ARP协议

1.基本概念:ARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议。

2.为什么需要ARP协议:在网络访问层中,同一局域网中的一台主机要和另一台主机进行通信,需要通过MAC地址进行定位,然后才能进行数据包的发送。而在网络层和传输层中,计算机之间是通过IP地址定位目标主机,对应的数据报文只包含目标主机的IP地址,而没有MAC地址。因此,在发送之前需要根据IP地址获取MAC地址,然后才能将数据包发送到正确的目标主机,而这个获取过程是通过ARP协议完成的。

所以我们可以看出来 ARP协议是依赖MAC地址。

2.确保可靠性的TCP协议

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

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

为了准确无误地将数据送达目标处,TCP协议采用了三次握手three-way handshaking)建立连接。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)--SYN(synchronize)ACK(acknowledgement)

发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN / ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表 “握手” 结束。

若在握手过程中某个阶段莫名终断,TCP协议会再次以相同的顺序发送相同的数据包。

除了上次三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

1.TCP

  1. TCP 是面向连接的传输控制协议。

  2. TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序。

  3. TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。(对可靠性要求高的通信系统往往使用 TCP 传输数据。比如 HTTP 运用 TCP 进行数据的传输。)

2.UDP

  1. UDP 提供了无连接的数据报服务。

  2. UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。

  3. UDP 具有较好的实时性,工作效率较 TCP 协议高。

  4. UDP 段结构比 TCP 的段结构简单,因此网络开销也小。

3.DNS服务

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

计算机即可以被赋予IP地址,也可以被赋予主机名和域名。比如:www.baidu.com

用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。

但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。

为了解决上述的问题,DNS服务因运而生。DNS协议提供通过域名查找IP,或逆向从IP地址反查域名的服务。

4.各种协议与HTTP协议的关系

4.URI和URL

1.URI

1.URI概念

URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

2.URI组成部分

URI通常由三部分组成:

①资源的命名机制;

②存放资源的主机名;

③资源自身的名称。

(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)

3.URI举例

如:https://www.cnblogs.com/hmhm/p/15440737.html

我们可以这样解释它:

①这是一个可以通过https协议访问的资源,

②位于主机cnblogs.com上,

③通过“/hmhm/p/15440737.html”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)

绝对URI格式

URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。

使用http:或https:等协议方案名获取访问资源时要指定协议类型。不区分字母大小写,最后附一个冒号(:)。也可使用data:或javascript:这类指定数据或脚本程序的方案名。

登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是类似hackr.jp这种DNS可解析的名称,或是192.168.1.1这类IPv4地址名,还可以是[0:0:0:0:0:0:0:1]这样用方括号括起来的IPv6地址名。

服务器端口号:指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。
带层次的文件路径:指定服务器上的文件路径来定位特指的资源。这与UNIX系统的文件目录结构相似。

查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。

片段标识符:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在RFC中并没有明确规定其使用方法。该项也为可选项。

2.URL

1.URL概念

URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位符”。

通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。

采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL是URI概念的一种实现方式。

2.URL格式

URL的一般格式为(带方括号[]的为可选项):

protocol

分类:

技术点:

相关文章: