计算机网络之5层网络协议

文章目录

  • 引言
  • 一、OSI七层模型
  • 二、TCP/IP参考模型
  • 三、网络协议的概念和作用
  • 四、TCP/IP参考模型每层详细介绍
    • 1.物理层
    • 2.数据链路层
      • 1. 基本概念
      • 2.MAC地址
      • 3.ARP协议
    • 3. 网络层
      • 1. 基本概念
      • 2.ip协议
      • 3.子网掩码
    • 4. 传输层
      • 1. 基本概念
      • 2. 协议
      • 3. TCP(三次握手四次挥手)
      • 4. UDP
    • 5.应用层
      • 1. 基本介绍
      • 2.URI和URL
      • 3. http协议
        • 1. 基本介绍
        • 2. 请求报文
        • 3. 响应报文
      • 4.DNS服务器
        • 1. 基本概念
        • 2. 域名
        • 3. DNS解析域名的过程
      • 5. DHCP
      • 6. 在浏览器地址栏里输入一个URL,到这个页面呈现出来,中间会发生
  • 总结

引言

计算机网络是我们日常生活中无法分割的一部分,它让我们能够实现互联互通,快速传输数据,并在各个领域取得了巨大的成就。而要实现这种高效的通信,网络协议就变得至关重要。网络协议是计算机之间进行通信的规则和约定,它们确保了数据能够在网络中顺畅传输。在网络协议中,5层网络协议被广泛使用,它是一种将整个网络通信过程分成5个层次的体系结构。每个层次负责不同的任务,相互之间相互协作,最终实现了高效的数据传输。本文将深入介绍5层网络协议的概念、功能与作用,带您一探网络协议的奥秘。

一、OSI七层模型

OSIOpen Systems Interconnection)模型是一种网络通信协议的理论参考模型,用于描述和规划计算机系统中不同层次的通信功能。它由国际标准化组织(ISO)于1984年发布,是一个标准的网络通信架构。

OSI模型将网络通信划分为七个不同的层次,每个层次都负责特定的功能和任务,并通过接口与上下层进行通信。以下是对每个层次的详细介绍:

  1. 物理层Physical Layer):物理层负责传输比特流,即通过物理媒介传输电压、电流或光信号。它定义了电缆类型、接口规范、传输距离等。

  2. 数据链路层Data Link Layer):数据链路层负责将物理层提供的比特流划分为数据帧,并处理错误检测和纠正。它定义了帧格式、MAC地址等。

  3. 网络层Network Layer):网络层负责数据的路由和转发,以及地址解析和逻辑编址。它定义了IP地址、路由协议等。

  4. 传输层Transport Layer):传输层提供端到端的可靠传输和数据分段的功能。它定义了传输协议(如TCP)和端口号等。

  5. 会话层Session Layer):会话层负责建立、管理和终止两个应用程序之间的会话连接。它定义了会话控制机制和同步规则。

  6. 表示层Presentation Layer):表示层处理数据的格式转换、加密和解密,以确保不同系统之间的数据兼容性。它定义了数据压缩、加密和格式转换等。

  7. 应用层Application Layer):应用层提供网络服务和应用程序之间的接口,以满足用户的具体需求。它定义了许多应用层协议,如HTTP、FTPSMTP等。

        +------------------------+
      7 |   Application Layer    |
        +------------------------+
          
        +------------------------+
      6 |   Presentation Layer   |
        +------------------------+
          
        +------------------------+
      5 |      Session Layer     |
        +------------------------+
          
        +------------------------+
      4 |    Transport Layer     |
        +------------------------+
          
        +------------------------+
      3 |      Network Layer     |
        +------------------------+
          
        +------------------------+
      2 |   Data Link Layer      |
        +------------------------+
          
        +------------------------+
      1 |    Physical Layer      |
        +------------------------+

每个层次独立工作,只与相邻层次交换信息,而不涉及其他层次的具体实现细节。这种分层的设计使得网络协议的开发、维护和升级更加简化和可靠。此外,由于每个层次的功能和责任明确,不同厂商可以独立开发和实现特定的层次,从而促进了网络技术的快速发展和互通性。

二、TCP/IP参考模型

TCP/IP参考模型是一种将TCP/IP协议栈划分为不同层级的模型,用于解释和描述网络通信中各个层级的功能与作用。它是互联网通信协议族的基础,也是广泛使用的网络协议。

TCP/IP参考模型一般分为五个层级,从上到下分别是应用层、传输层、网络层、数据链路层和物理层。每个层级都有不同的功能和任务,它们协同工作,以实现数据从发送端到接收端的可靠传输。

  1. 应用层:应用层是最靠近用户的一层,负责处理网络应用程序之间的通信。它定义了一系列通信的标准和协议,如HTTP、FTPSMTP等。应用层的数据称为报文。

  2. 传输层:传输层负责处理端到端的数据传输,提供可靠的数据传输服务。它使用传输层协议(如TCPUDP)将数据分割成适当的大小并在发送方和接收方之间进行传输。

  3. 网络层:网络层负责进行网络间的数据通信,通过IP协议提供寻址和路由的功能。它将数据打包成数据包,通过网络传输到目的地。

  4. 数据链路层:数据链路层负责在物理介质上传输数据包,它将数据包转换为比特流,并提供差错检测与纠正的功能。

  5. 物理层:物理层定义了如何在物理媒介上传输数据比特流,例如通过电缆、光纤或无线信号进行传输。

下图例表示数据从应用层到物理层的传输过程:

------------------------------------
|      应用层       |
------------------------------------
|              发送数据              |
------------------------------------
                |
------------------------------------
|      传输层       |
------------------------------------
|          TCP/UDP协议          |
|              分割数据              |
|              添加头部              |
|              端口号              |
|              检查差错              |
------------------------------------
                |
------------------------------------
|      网络层       |
------------------------------------
|              IP协议              |
|              寻址              |
|              路由              |
|              打包成数据包              |
------------------------------------
                |
------------------------------------
|      数据链路层       |
------------------------------------
|         数据链路协议          |
|             转换为比特流             |
|      添加帧头和帧尾(开始和结束标记)       |
|            物理层传输            |
------------------------------------

三、网络协议的概念和作用

网络协议是指计算机网络中通信设备和计算机之间进行数据通信时所遵循的规范和规则的集合。它定义了数据传输的格式、传输的步骤和控制信息等,以确保在计算机网络中的各种设备和应用程序之间进行有效的通信。

网络协议的主要作用有:

  1. 数据传输规范:网络协议定义了数据在网络中的传输格式和结构,确保不同设备之间可以正确地解析和处理数据。

  2. 网络连接管理:网络协议定义了建立、维护和断开网络连接的方式,包括握手过程、数据传输的流程控制和错误处理等。

  3. 数据安全性和验证:网络协议可以提供数据的加密、认证和校验等机制,保障数据的安全性和完整性。

  4. 网络资源管理:网络协议可以定义和管理网络资源的分配和调度,包括IP地址的分配、路由选择和带宽控制等。

  5. 服务质量保障:网络协议可以定义和管理不同应用程序和服务的优先级、带宽分配和拥塞控制等,以提供更好的服务质量。

总之,网络协议是计算机网络通信的基础,它提供了通信设备和计算机之间进行有效和可靠通信所需要的规范和规则。网络协议的正确实施和应用,可以确保网络通信的正常运行和安全传输数据。

以下是TCP/IP模型中每层对应的协议:

层级 协议
应用层 HTTP、FTP、SMTP、Telnet、DNS
传输层 TCP、UDP
网络层 IP、ICMP、ARP
链路层 Ethernet、PPP

需要注意的是,表格中只列举了每层对应的一些常见协议,实际上每个层级包含更多的协议。

四、TCP/IP参考模型每层详细介绍

1.物理层

TCP/IP模型中的物理层是网络体系结构中的最底层,负责实际的数据传输,在网络媒介上传输比特流(即0和1的电信号)。它提供了将比特流转换成可传输的信号的物理接口。

物理层的主要职责包括:

  1. 数据的编码和解码:物理层将数字信号转换为模拟信号,并且在接收端将传输的模拟信号解码为数字信号,以确保正确的数据传输。

  2. 数据的传输方式:物理层定义了用于在物理媒介上传输数据的方式,可以是串行传输或并行传输。它还定义了信号的传输速率、带宽以及电压等参数。

  3. 物理连接的建立和拆除:物理层负责在发送和接收设备之间建立和拆除物理连接,以确保有效的数据传输。

  4. 物理媒介的接口标准:物理层定义了连接设备的物理媒介(如网线、光纤等)的接口标准,以保证不同设备之间的互操作性。

  5. 基本的传输设备:物理层包括各种传输设备,如中继器、集线器等,用于放大和传输信号,并增强网络的覆盖范围。

总的来说,物理层的主要任务是提供一种可靠地传输比特流的机制,为更高层的协议提供可靠的物理连接和传输媒介。

类比实际案例解释
可以将物理层的功能类比为邮寄系统。邮寄系统负责将书信或包裹从发件人传递给收件人,并确保信件在传输过程中不损坏或遗失。在此类比中,信件或包裹就相当于数据,而发件人和收件人之间的邮寄系统就相当于物理层物理层负责将信件或包裹封装好,选择合适的包装材料和传输方式(如邮寄方式、快递方式),并确保传输过程中高效且可靠地将物品送到收件人手中,同时提供跟踪和确认服务确保准确性

2.数据链路层

1. 基本概念

数据链路层是TCP/IP模型中的第二层,主要负责将网络层传输过来的IP数据报转换为可在物理链路上传输的比特流,并确保信道传输的可靠性和数据的完整性。

数据链路层中的核心概念包括:

  1. 媒体访问控制Media Access Control,MAC):它定义了在共享介质上的多个设备之间进行数据传输的方法和规则,以及设备的地址识别方法。常见的MAC协议有以太网中的CSMA/CD(载波侦听多点接入/碰撞检测)和无线局域网中的CSMA/CA(载波侦听多点接入/碰撞避免)。

  2. 逻辑链路控制Logical Link Control,LLC):它提供了面向通信服务的接口,使得上层的网络层可以透明地访问不同的物理介质。

  3. 帧封装:数据链路层将从网络层接收到的数据报封装成帧,在每个帧的头部和尾部添加控制信息,比如同步位、帧起始与结束字符、校验码等,以便接收方正确识别并解析出数据。

类比一个实际案例,可以将数据链路层比喻为邮局的分拣与包装工作。邮局为了传递邮件,在数据链路层的角色中,它将邮件(网络层数据报)进行包装、贴上正确的地址(MAC地址)以及编号(帧序列号),然后封装成一个包裹(帧),并标注开始和结束标记以及其他控制信息。接收方的邮局会解析包裹,检查地址是否正确,然后将邮件递送给正确的收件人(上层的网络层)

数据链路层的主要目的就是确保数据能够在物理链路上准确无误地传输,并提供了一些机制来处理数据传输过程中可能出现的错误和重传的情况,以保证可靠的数据传输。

2.MAC地址

MAC地址(Media Access Control address)又称物理地址或硬件地址,是用于识别计算机网络设备的唯一标识符。每个网络设备(如计算机、路由器、交换机、网络打印机等)在制造时,都会被分配一个唯一的MAC地址。

MAC地址由48位二进制数字组成,通常以十六进制表示。它被分为6个组,每个组包含8位或者16位二进制数。例如:00-1A-2B-3C-4D-5E。

MAC地址由两部分组成:全球唯一标识符(OUI)和设备唯一标识符(NIC)。OUI是由IEEEInstitute of Electrical and Electronics Engineers)分配给每个制造商的3个字节标识符,用于表示制造商的身份。NIC是由制造商自行分配的3个字节标识符,用于标识制造商设备的唯一值。

MAC地址在计算机网络中起着至关重要的作用。在数据链路层,当网络设备收到数据包时,会使用目标MAC地址来确定数据是发送给自己的还是其他设备的,并进行相应的处理。因此,MAC地址主要用于数据包的寻址和传输控制。

MAC地址是全球范围内唯一的,这意味着不同制造商的设备在出厂时,MAC地址是不同的。并且MAC地址在设备的整个生命周期中都是固定不变的,即使在网络环境中改变物理设备的位置或连接。

尽管MAC地址是唯一的,但它仅在局域网(LAN)范围内有效。在跨越不同网络的情况下,需要使用更高层次的地址,例如IP地址

需要注意的是,MAC地址是可以被修改的,这在某些特定情况下可能是必要的,但一般情况下应该避免修改MAC地址,以免导致网络通信问题。

3.ARP协议

ARPAddress Resolution Protocol是一种用于将IP地址映射为物理MAC地址的协议。在计算机网络中,当一个主机需要发送数据给另一个主机时,它需要知道目标主机的MAC地址。然而,主机只能通过IP地址来寻址,而不能直接使用MAC地址。

ARP协议的作用就是用于解决IP地址到MAC地址的映射关系。当一个主机想要发送数据给目标主机时,首先它会检查本地的ARP缓存表(ARP Cache),这个缓存表会记录一些已知的IP地址和对应的MAC地址。

如果目标的IP地址没有在ARP缓存表中找到对应的MAC地址,发送方主机就会发送一个广播ARP请求包(ARP Request),在局域网中广播给其他主机。这个ARP请求包包含了源主机的IP地址和MAC地址,以及目的主机的IP地址。

当目标主机接收到ARP请求包后,它会检查自己的IP地址是否与目标IP地址匹配。如果匹配,目标主机会发送一个单播ARP响应包(ARP Reply)给源主机,包含自己的IP地址和MAC地址。

当源主机收到ARP响应包后,它会将目标主机的IP地址和MAC地址添加到ARP缓存表中,以便以后的通信使用。

总结来说,ARP协议就是通过广播和相应的ARP请求和响应包来确定目标主机的MAC地址,以便能够建立起IP地址与MAC地址的映射关系,从而实现数据包的正确传递。

3. 网络层

1. 基本概念

网络层是TCP/IP模型中的第三层,负责在不同网络间进行路由和转发数据包。它的主要功能包括 IP 地址分配、路由选择和数据分组的转发

类比实际案例,可以想象网络层就像是一个邮递局系统。当一个人需要向另一个城市的朋友寄信时,他首先写下朋友的地址(IP地址),然后将信交给自己当地的邮递局。邮局系统的工作就是负责将这些信件分发到不同的城市,确保它们能够按照正确的路径到达目的地

在这个例子中,网络层就扮演着邮局系统的角色。它的具体工作包括:

  1. IP 地址分配:网络层负责向每个设备分配唯一的 IP 地址。就像邮局系统会给每个人分配一个独特的地址一样,网络层为连接到网络的设备分配唯一的 IP 地址,以便它们可以互相识别和通信。

  2. 路由选择:网络层通过使用路由协议,决定数据包在不同网络之间的传输路径。就像邮局系统根据邮编系统为信件选择最佳路由一样,网络层使用路由协议确定数据包在不同网络之间传输的最佳路径。

  3. 数据分组与转发:网络层将上层传输层提供的数据分割成较小的数据包(也称为数据分组),并将它们添加到网络层头部的数据包头中。这些数据包会根据网络层中的路由表,通过合适的网络节点进行转发,以确保数据包以正确的路径到达目的地。

通过上述流程,网络层起到了连接不同网络的功能,使得整个网络理论上能够无缝通信。网络层的工作可以帮助实现数据的分发、转发和路由选择,确保数据的准确传输和到达目标的网络服务。

2.ip协议

IP协议是指互联网传输协议Internet Protocol),它是计算机网络中最为重要的协议之一。IP协议使用一种分组交换数据的方式来实现网络通信,它定义了数据在网络中传输的格式、规则和机制。

IP协议主要负责两个重要的功能:寻址和路由。寻址指的是通过IP地址来唯一标识在网络中的设备或主机,通过IP地址可以将数据发送到目标设备。路由指的是根据目标IP地址选择合适的路径将数据包传输到目标设备的过程。

IP协议采用的是无连接的通信方式,这意味着每个数据包在传输的时候是独立的,没有建立长久的连接。数据包在传输过程中可能经过多个网络节点,这些节点根据路由表来选择传输的路径。IP协议负责将数据包从源地址传输到目标地址,但不保证数据包按顺序到达、不丢失和不重复,这些问题需要在更高层的协议(如TCP)中解决

IP协议使用了32位的IP地址来标识设备或主机,IPv4采用点分十进制表示法(如192.168.0.1),而IPv6采用128位的地址空间(如2001:db8:0:1234:0:567:8:1)。除了IP地址之外,IP协议还定义了其他的字段,如版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部校验和、源IP地址和目标IP地址等。

IP版本 IP地址格式
IPv4 四个十进制数,每个数范围从0到255,用点分隔,例如192.168.0.1
IPv6 八组四位十六进制数,每组之间使用冒号分隔,例如2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv4地址由32位二进制数组成,通常以点分十进制表示。每个十进制数表示8位二进制数的值。IPv4地址分为网络部分和主机部分,其中网络部分表示网络的身份,主机部分表示特定主机的身份。

IPv6地址由128位二进制数组成。为了减少冗余,IPv6使用了缩写规则,如去除前导0、连续的0组合、使用双冒号来表示一组0等。IPv6地址的增加是为了解决IPv4地址不足的问题。

IP协议是计算机网络中的核心协议,它使得互联网的通信变得可能。通过IP协议,不同类型的设备和主机能够互相交换数据和信息,实现全球范围的互联网传输。

3.子网掩码

子网掩码是用于划分网络地址的一种方法。它以32位二进制数表示,与IP地址结构相同。子网掩码通过指示IP地址中哪些位用于网络标识,哪些位用于主机标识来划分网络

在计算机网络中,IP地址由网络地址和主机地址两部分组成。子网掩码将IP地址分成两个部分:网络标识和主机标识。网络标识用于指示IP地址所在的网络,而主机标识用于标识网络中的具体主机。子网掩码中的1位表示网络标识,0位表示主机标识。

判断两个IP地址是否在同一个局域网中,可以通过比较两个IP地址的网络标识部分是否相同来判断。具体步骤如下:

  1. 获取两个IP地址的子网掩码。
  2. 将两个IP地址和子网掩码进行逻辑与操作。
  3. 比较结果,如果两个IP地址与子网掩码进行逻辑与操作的结果相同,则表示它们在同一个局域网中,否则不在同一个局域网中。

例如,假设有两个IP地址:192.168.1.100和192.168.1.200,子网掩码为255.255.255.0。将这两个IP地址和子网掩码进行逻辑与操作,得到的结果如下:

192.168.1.100与255.255.255.0进行逻辑与操作的结果为192.168.1.0
192.168.1.200与255.255.255.0进行逻辑与操作的结果为192.168.1.0

由此可见,这两个IP地址与子网掩码进行逻辑与操作的结果相同,因此它们在同一个局域网中。

需要注意的是,如果两个IP地址的子网掩码不同,那么即使它们的网络标识部分相同,也不一定在同一个局域网中。因此,在判断两个IP地址是否在同一个局域网中时,除了比较网络标识部分,还需要考虑子网掩码是否相同。

4. 传输层

1. 基本概念

计算机网络中的传输层是网络层次结构中的一个层面,负责管理数据的传输和连接。传输层的主要功能是在源主机和目标主机之间提供端到端的通信服务

传输层的主要任务包括:

  1. 分段和重组:传输层将应用层数据分成较小的数据块(称为段),并在目标主机上重组这些段以还原原始数据。这种分段和重组的过程可以解决网络传输中的大小限制和不可靠性问题

  2. 端口标识:传输层使用端口号来标识通信中的应用程序。每个应用程序可以使用唯一的端口号,这样传输层可以将接收到的数据准确地传递给目标应用程序

  3. 传输控制:传输层通过实施差错检测和校正、流量控制和拥塞控制等机制,确保数据的可靠传输。这些机制可以保证数据的完整性、按序传输和可靠性

  4. 多路复用和多路分解:传输层可以实现多个应用程序之间共享网络连接,通过将多个应用程序的数据打包在一个传输层连接中进行传输,然后在目标主机上将数据分解给各个应用程序。

一个类比的实际应用是邮寄服务。传输层可以被类比为邮局,邮局负责管理和控制邮件的传输过程。具体而言,邮局通过将邮件分成较小的信封(分段和重组)来解决邮件尺寸限制的问题。每个信封都有一个唯一的地址(端口标识),以确保邮件准确地发送给目标收件人。此外,邮局还会提供差错检测和修复机制,以保证邮件的完整性和可靠性。当多个人同时使用邮局时,邮局可以通过多路复用和多路分解来处理不同人的邮件,确保每个人都可以收到自己的邮件

总之,传输层就像是一个承载着数据分割、传输控制和连接管理的关键服务层。它通过各种机制,确保网络传输的可靠性和可靠性。

2. 协议

在计算机网络中的传输层涉及以下网络协议:

协议 描述
TCP 传输控制协议(Transmission Control Protocol)是一种面向连接的协议,提供可靠的数据传输。它通过序列号、确认和重传机制来确保数据的可靠性,并通过滑动窗口机制来实现流量控制和拥塞控制。TCP是传输层中最常用的协议。
UDP 用户数据报协议(User Datagram Protocol)是一种无连接的协议,不提供可靠性保证。它仅提供基本的数据传输功能,并且传输效率较高。UDP适用于对实时性要求较高的应用,如视频流和音频流传输。
SCTP 流控制传输协议(Stream Control Transmission Protocol)是一种面向消息的协议,具有可靠性和消息完整性保证。SCTP支持多流传输、多宿主连接和可选有序传输。SCTP适用于要求可靠且有序数据传输的应用。

这些协议在计算机网络中的传输层发挥着不同的作用和功能,提供了不同的数据传输方式和可靠性保证。在实际应用中,根据应用程序的需求和网络环境的不同,选择合适的传输层协议来进行数据传输。

除了以上几种协议,还有一些其他的传输层协议如数据报传输协议(Datagram Congestion Control Protocol,DCCP)和传输层安全协议(Transport Layer Security,TLS)等。这些协议在计算机网络中起到了不同的作用,满足了不同应用的需求。

3. TCP(三次握手四次挥手)

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议栈中的一部分,用于在网络中传输数据

TCP协议主要作用提供可靠的数据传输。它通过以下方式来保证数据的可靠性:

  1. 为每个连接建立一个虚拟的通道,确保数据按照正确的顺序传输。
  2. 通过确认和重传机制来保证数据的可靠性。每次发送数据后,接收方会发送一个确认消息给发送方,如果发送方没有收到确认消息,则会重新发送数据。
  3. 提供流量控制机制,防止发送方发送速度过快导致接收方无法处理。

TCP协议的工作过程如下:

  1. 建立连接:在传输数据之前,发送方和接收方需要建立一个连接。连接的建立过程称为三次握手。发送方发送一个请求连接的消息,接收方收到后回复一个确认消息,发送方再回复一个最终确认消息。
  2. 数据传输:建立连接后,发送方可以开始向接收方发送数据。数据包会按照指定的顺序传输,并且接收方会发送确认消息给发送方。
  3. 关闭连接:数据传输完成后,发送方和接收方可以关闭连接。关闭连接的过程称为四次挥手。发送方发送一个请求关闭连接的消息,接收方回复一个确认消息,然后接收方发送一个请求关闭连接的消息,发送方再回复一个最终确认消息。

三次握手建立连接的过程如下:

  1. 客户端向服务器发送一个SYN(同步)报文,表示客户端请求建立连接。
  2. 服务器接收到SYN报文后,发送一个SYN + ACK(同步+确认)报文作为回应,表示可以建立连接。
  3. 客户端收到服务器的SYN + ACK报文后,再发送一个ACK(确认)报文,表示客户端确认可以建立连接。
    连接建立完成后,双方可以进行数据传输。
客户端                  服务器
  |                       |
  |     SYN报文发送        |
  |---------------------> |
  |                       |
  |  SYN + ACK报文发送    |
  | <---------------------|
  |                       |
  |     ACK报文发送        |
  |---------------------> |
  |       连接建立         |
  |                       |

四次挥手关闭连接的过程如下:

  1. 客户端发送一个FIN(结束)报文,表示客户端希望关闭连接。
  2. 服务器接收到FIN报文后,发送一个ACK报文作为回应,表示确认连接关闭请求。
  3. 服务器发送一个FIN报文,表示服务器也希望关闭连接。
  4. 客户端接收到服务器的FIN报文后,发送一个ACK报文作为回应,表示确认连接关闭。
客户端                            服务器
  |                                 |
  |  FIN报文发送                    |
  |------------------------------>  |
  |                                 |
  |      ACK报文发送                 |
  | <------------------------------- |
  |                                 |
  |  FIN报文发送                    |
  |------------------------------>  |
  |                                 |
  |      ACK报文发送                 |
  | <------------------------------- |
  |        连接关闭                 |
  |                                 |

通过三次握手建立连接和四次挥手关闭连接,TCP保证了数据传输的可靠性,以及连接的正确建立和关闭。

+--------+                     +-----------+
| 客户端 |                     | 服务器   |
+--------+                     +-----------+
     |                                 |
     |    SYN=1,seq=x                |
     |------------------------------>|
     |                                 |
     |    SYN=1,ACK=1,seq=y, ack=x+1 |
     |<------------------------------|
     |                                 |
     |    ACK=1,seq=x+1, ack=y+1      |
     |------------------------------>|
     |                                 |
     |       请求连接建立             |
     |                                 |
     |                                 |
     |    FIN=1,seq=x                |
     |------------------------------>|
     |                                 |
     |   ACK=1,seq=y, ack=x+1         |
     |<------------------------------|
     |                                 |
     |      通知结束连接              |
     |                                 |
     |    FIN=1,ACK=1,seq=y+1, ack=x |
     |<------------------------------|
     |                                 |
     |    ACK=1,seq=x, ack=y+1        |
     |------------------------------>|
     |                                 |

总结来说,TCP协议是一种可靠的传输协议,通过建立连接、确认和重传机制以及流量控制来保证数据的可靠性。它是互联网中最常用的传输协议之一。

4. UDP

UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,它用于在网络上发送数据报。与TCP不同,UDP在传输数据之前不需要建立连接,也不进行可靠性保证和数据验证。

UDP协议的工作方式如下:

  1. 应用程序将数据封装成数据包(Datagram),并指定目标IP地址和端口号。
  2. 数据包通过网络传输,但不保证数据包的顺序、完整性或是否到达目的地。
  3. 接收方应用程序通过网络接收到数据包。
  4. 接收方应用程序根据数据包的源IP地址和端口号进行处理。
  5. 应用程序提取出数据包中的数据,并进行相应的操作。

UDP协议的特点包括:

  1. 无连接性:发送方不需要和接收方事先建立连接,可以直接发送数据包。
  2. 不可靠性:发送方无法得知数据包是否到达目的地,也无法保证数据包的顺序,因此不适用于对数据传输的可靠性要求较高的场景。
  3. 快速性:由于无需建立连接和进行可靠性保证,UDP的数据传输速度相对较快。
  4. 简单性:与TCP相比,UDP的协议头部较小,更简单,因此在某些对网络开销较为敏感的应用中,如实时视频传输、语音通信等,UDP更为适合。

UDP常用于以下情况:

  1. 实时应用:如音视频传输、实时通信等,因为UDP的快速性和简单性可以提供较低的延迟。
  2. 广播和组播应用:UDP可以将数据包同时发送给多个接收方。
  3. DNS解析:域名解析中使用UDP发送请求。

需要注意的是,由于UDP的不可靠性,在某些情况下可能丢失部分数据包,因此在重要的数据传输或对数据完整性要求较高的情况下,建议使用TCP协议。

5.应用层

1. 基本介绍

应用层是计算机网络中最高层的一层,它提供了网络应用程序与网络传输层之间的接口。应用层主要负责处理用户应用程序的通信服务,使不同网络中的应用程序能够相互通信和交换数据。

应用层的主要工作包括以下几个方面:

  1. 应用协议的定义:应用层定义了应用程序之间交换数据的格式和规则,例如HTTP、SMTP、FTP等协议,这些协议描述了数据的结构、编码和传输方式,以及通信的各种细节。

  2. 数据编码和格式转换:应用层负责将应用程序生成的数据转换为适合在网络上传输的格式,并在接收端将其转换为应用程序可识别的格式。例如,将数据转换为ASCII码或Unicode编码,或将音频、视频等数据转换为适合传输的格式。

  3. 数据分段和重组:当数据量过大时,应用层负责将数据进行分段,并在接收端将分段的数据重组为完整的数据。分段可以提高传输效率,同时确保数据的完整性。

  4. 数据传输控制:应用层负责控制数据的传输,包括传输的速度、安全性、可靠性等。例如,通过建立多个并行的连接提高传输速率,通过使用加密技术保证数据的安全性,通过使用确认和重传机制保证数据的可靠传输。

  5. 用户认证和授权:应用层可以提供用户认证和授权的服务,确保只有合法的用户能够访问网络资源,并控制用户的操作权限。这种服务一般通过用户名和密码等身份验证方式实现。

总之,应用层是计算机网络中负责实现用户应用程序与网络传输层之间通信的关键一环,它定义了应用程序的通信规则和格式,并提供了数据传输控制、数据转换和处理等功能。

2.URI和URL

URI (Uniform Resource Identifier)URL (Uniform Resource Locator) 都是用来标识并访问网络资源的方式。它们之间有一定的关系,URI 是 URL 的一种特殊形式。下表展示了它们的解释和说明:

词汇 解释 说明
URI Uniform Resource Identifier (统一资源标识符) 用于标识和定位一个唯一的资源,可以是网络上任何一种可访问的资源,比如网页、文件等。
URL Uniform Resource Locator (统一资源定位器) 是 URI 的一种具体形式,它包含了指向特定资源的完整地址,可以在浏览器中直接打开。
格式 URI 可以有多种不同的格式,包括 URL、URN 等 URL 是最常见的一种 URI 格式,用于定位资源并指定资源的访问方式。
用途 用于标识和访问网络上的资源 通过 URI 或 URL 可以准确地定位网络上的资源,比如网页、图片、视频等。
包含关系 URL 是 URI 的一种具体实现,是 URI 的子集 URL 是一种特定格式的 URI,即包含了资源的定位信息。因此,所有的 URL 都是 URI,但不是所有的 URI 都是 URL。
示例 http://www.example.com/index.html 这是一个典型的 URL,表示一个 HTTP 协议下的网站页面链接。
file:///path/to/file.txt 这也是一个 URL,表示一个本地文件的路径。
urn:isbn:0-486-27557-4 这是一个 URN,它用于唯一标识国际标准书号 (ISBN)。虽然是 URI 但不是 URL,因为它没有指定访问该资源的具体方式(如网络协议)。

需要注意的是,虽然 URI 和 URL 的概念有所区别,但在实际使用中,它们经常被混用,URL 一词也常常用来泛指某个资源的唯一标识符。

URL(Uniform Resource Locator)由以下部分组成:

  1. 协议(Protocol):URL的第一部分是协议,用于指定客户端与服务器之间的通信协议。常见的协议有:HTTP(用于网页访问)、HTTPS(加密的网页访问)、FTP(文件传输协议)等。示例:http://

  2. 域名(Domain Name):URL的第二部分是域名,用于指定要访问的资源所在的服务器。域名由点(.)分隔的多个部分组成,从右向左依次表示更高级的域名级别。示例:www.example.com

  3. 端口号(Port):URL的第三部分是端口号,用于指定服务器上正在监听的端口。如果没有明确指定,将使用默认端口号。HTTP默认端口是80,HTTPS默认端口是443。示例::8080

  4. 路径(Path):URL的第四部分是路径,用于指定要访问的资源所在的路径或目录。路径可以是绝对路径(以/开头)或相对路径。示例:/path/to/resource

  5. 查询参数(Query Parameters):URL的第五部分是查询参数,用于向服务器传递额外的信息或请求参数。参数以?开头,多个参数之间用&分隔。每个参数由键值对组成,键和值之间用=连接。示例:?param1=value1¶m2=value2

  6. 锚点(Anchor):URL的最后部分是锚点,用于指定页面中的具体位置。锚点由#开头,跟随一个特定的标识符。示例:#section1

假设要访问网站上的一篇博客文章的URL为https://www.example.com/blog/article?id=123#comments

组成部分 示例 说明
方案 https:// 使用HTTPS协议进行网络通信
域名 www.example.com 访问的网站域名为www.example.com
端口号 443 默认使用HTTPS的默认端口号443
路径 /blog/article 访问的资源路径为/blog/article
查询参数 ?id=123 在URI中传递参数id的值为123
片段标识符 #comments 定位到资源内部具体标识为comments的部分

3. http协议

1. 基本介绍

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,它是Web通信的基础。HTTP协议的主要工作是在客户端和服务器之间传输信息,使客户端能够请求和接收服务器上的Web资源

HTTP协议的工作方式是基于请求-响应模型。客户端发送包含请求的HTTP报文给服务器,然后服务器发送包含响应的HTTP报文给客户端。请求报文包括请求方法、请求URI(Uniform Resource Identifier)、协议版本、请求头部和请求数据等,而响应报文则包括协议版本、状态码、响应头部和响应数据等。

HTTP协议具有以下特点:

  1. 无连接:每个请求-响应交互都是独立的,服务器不会保存关于客户端的任何状态信息。这样有利于服务器处理多个客户端请求,但也导致每次请求都需要建立新的连接,增加了一定的开销。

  2. 无状态:服务器不会保存之前请求的任何信息,每个请求都是独立的。如果需要保持客户端状态,可以借助Cookie等机制来实现。

HTTP协议的主要工作包括:

  1. 建立连接:客户端向服务器发起请求时,需要先建立TCP连接。通过三次握手的过程,在客户端和服务器之间建立可靠的通信链路。

  2. 发送请求:客户端发送HTTP请求给服务器,包括请求的方法(GET、POST等)、请求的URI和协议版本等。请求可能包含额外的头部信息和请求数据,如请求的参数Cookie等。

  3. 处理请求:服务器接收到请求后,根据请求的URI和方法等信息进行相应的处理,如查询数据库、读取文件等。服务器可能会验证请求的合法性,并生成响应数据。

  4. 发送响应:服务器生成响应报文,包括协议版本、状态码、响应头部和响应数据等。然后将响应发送给客户端。

  5. 接收响应:客户端接收到服务器发送的响应报文后,根据协议版本和状态码等进行解析。客户端可以获取响应的数据并进行相应的处理,如解析HTML、渲染页面等。

HTTP协议在Web通信中起到了关键的作用,它使得客户端能够与服务器进行交互,并获取所需的Web资源。它定义了通信的规则和格式,并提供了灵活的扩展机制,使得Web应用能够快速、可靠地进行数据传输。

2. 请求报文

HTTP请求报文由请求行、请求头部和请求主体三部分组成。

  1. 请求行:请求行包含请求方法、请求的URL和HTTP协议版本。常见的请求方法有GET、POST、PUT、DELETE等。例如:

    GET /index.html HTTP/1.1
    
  2. 请求头部:请求头部包含关于请求的附加信息,以键值对的形式呈现。常见的请求头部有Host、User-Agent、Accept、Content-Type等。

请求头字段 描述 示例
Host 指定请求的服务器的域名和端口号 Host: www.example.com
User-Agent 标识发送请求的用户代理 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept 告诉服务器可以接受的响应内容类型 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language 告诉服务器可接受的响应内容语言 Accept-Language: en-US,en;q=0.9
Accept-Encoding 告诉服务器可接受的响应内容的压缩方法 Accept-Encoding: gzip, deflate, br
Connection 维持持久连接,或关闭连接 Connection: keep-alive
Referer 告诉服务器发送请求的前一页URL Referer: http://www.example.com/page1.html
Cookie 包含之前由服务器设置的cookie Cookie: name=value; name2=value2
Authorization 用于身份验证的凭证信息 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type 请求体的媒体类型 Content-Type: application/json
Content-Length 请求体的字节数 Content-Length: 348
If-None-Match 如果资源的ETag与请求头中指定的一致,则返回304 Not Modified If-None-Match: “686897696a7c876b7e”
If-Match 如果资源的ETag与请求头中指定的一致,则进行请求处理 If-Match: “686897696a7c876b7e”

例如:

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Content-Type: application/json
  1. 请求主体:请求主体可选,用于传输请求的数据,例如表单数据或JSON数据。在POST请求中常见的请求主体就是要发送的数据。例如:
    {
      "username": "example_user",
      "password": "123456"
    }
    

综合示例:

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Content-Type: application/json

{
  "username": "example_user",
  "password": "123456"
}

以上示例是一个使用POST方法向www.example.com/login路径发送JSON数据的HTTP请求报文。

3. 响应报文

HTTP的响应报文是服务器向客户端返回的数据格式,它由三部分组成:响应行、响应头和响应体。下面对每个部分进行详细的介绍,并举例说明。

  1. 响应行:
    响应行包含了响应的状态码和状态码的文本描述,格式为“HTTP版本 状态码 状态码文本描述”。例如:HTTP/1.1 200 OK
  • HTTP版本指明服务器所使用的HTTP协议的版本。
  • 状态码代表了请求的处理结果的状态。常见的状态码有:
    • 200:请求成功
    • 404:资源未找到
    • 500:服务器内部错误

以下是常见的HTTP响应状态码表格说明:

状态码 状态码描述 说明
200 OK 请求成功
201 Created 请求已成功处理,并且已创建了一个新的资源
204 No Content 请求已成功处理,但响应报文中无返回内容
301 Moved Permanently 资源的URL被永久移动到了另一个位置
302 Found 资源的URL被临时移动到了另一个位置
304 Not Modified 资源自从上次请求后未发生过修改,可使用客户端缓存的版本
400 Bad Request 客户端请求的语法错误或无法被服务器理解
401 Unauthorized 请求缺乏有效的身份验证凭证
403 Forbidden 服务器理解请求,但拒绝执行操作,权限不足或者对资源的访问被禁止
404 Not Found 请求的资源在服务器上不存在
500 Internal Server Error 服务器在执行请求时遇到了无法处理的错误
503 Service Unavailable 服务器暂时无法处理请求,一般为过载或维护
  1. 响应头:
    响应头包含了关于响应的一些补充信息,格式为“名称: 值”。常见的消息报头有:
  • Content-Type:指明了响应正文的MIME类型。例如:Content-Type: text/html
  • Content-Length:指明了响应正文的字节长度。例如:Content-Length: 1024
  • Server:指明了服务器的软件信息。例如:Server: Apache/2.4.29 (Unix)
  1. 响应体:
    响应体是服务器返回给客户端的实际数据,它可以是文本、HTML、XML、JSON等格式。请求成功时,响应正文会包含所请求资源的内容;而出现错误时,响应正文可能包含出错信息或者空白。

下面是一个简单的例子:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Server: Apache/2.4.29 (Unix)




   Example Page


   

Hello, World!

This is an example page.

在这个例子中,状态行指明了响应的状态是200 OK,消息报头指明了响应正文的MIME类型为text/html,响应正文是一个简单的HTML页面。

4.DNS服务器

1. 基本概念

DNS服务器是一个专门用于域名系统(DNS)的服务器。它的主要功能是将域名解析成相应的IP地址,并将网络请求路由到正确的服务器上。DNS服务器保存着域名和IP地址的对应关系,当用户在浏览器中输入一个域名时,DNS服务器会根据域名查询DNS解析记录,并返回相应的IP地址给用户的计算机,从而使用户能够访问目标网站。DNS服务器也可以进行其他功能,如缓存DNS解析结果以提高解析速度、执行反向DNS解析等。

2. 域名

域名是指用于在互联网上标识和定位网站的字符串。它由多个部分组成,包括顶级域名(TLD)、二级域名(SLD)和子域名(Subdomain)等。

以下是域名的组成及其说明:

组成 说明 示例
协议 域名所使用的网络协议或协议组合 http://或https://
子域 可选的域名部分 blog.
主域 域名的主要部分 example
顶级域 域名的最高级部分 .com

例如,对于URL “http://blog.example.com”,其域名的组成如下:

  • 协议:http://://
  • 子域:blog.
  • 主域:example
  • 顶级域:.com

通过域名,用户可以更容易地记住和访问网站,而不需要记住复杂的IP地址。

以下是一些常见的顶级域名

顶级域名 说明
.com 商业领域,普遍用于商业网站
.org 非营利组织,常用于非盈利性质的组织或个人
.net 网络,常用于网络相关的网站
.edu 教育,主要用于教育机构或学术机构
.gov 政府,用于政府或政府机构
.mil 军事,用于军事组织或军方机构
.int 国际组织,用于国际性组织
.info 信息,常用于提供信息的网站
.biz 商务,用于商务相关的网站
.name 个人名称,用于个人网站
.pro 专业人士,常用于专业人士的网站
.coop 合作社,常用于合作社或合作组织
.museum 博物馆,用于博物馆相关的网站
.aero 航空运输业,用于航空运输业
.int 网际,常用于国际性的互联网机构
.travel 旅游,用于旅游业相关的网站
.jobs 就业机会,用于提供就业机会
.mobi 移动互联网,用于移动互联网相关的网站
.asia 亚洲,用于亚洲地区的网站
.cat 加泰罗尼亚语,用于加泰罗尼亚语言的网站
.eu 欧洲联盟,用于欧洲联盟成员国
.tel 电话号码,用于电话号码相关的网站
.xxx 含有成人内容的网站
.cn 中国,用于中国地区的网站

3. DNS解析域名的过程

域名系统(DNS)通过将域名解析为相应的IP地址来帮助计算机在互联网上定位其他计算机。以下是DNS通过域名查找IP地址的过程:

  1. 用户在浏览器中输入一个域名(例如www.example.com)。
  2. 本地计算机首先检查它的本地DNS缓存,看看是否已经解析过这个域名。如果有,它将返回对应的IP地址,并跳到第6步。
  3. 如果本地缓存没有相应的解析记录,计算机将发送一个DNS查询到本地网络的DNS服务器。
  4. 本地DNS服务器检查它的缓存,如果没有相应的解析记录,它将发起一个迭代查询,开始解析这个域名。
  5. 本地DNS服务器首先询问根域名服务器,根域名服务器知道所有的顶级域名服务器的IP地址。根域名服务器告诉本地DNS服务器.com顶级域名服务器的IP地址。
  6. 本地DNS服务器接着向.com顶级域名服务器发送一个查询请求。
  7. .com顶级域名服务器根据请求返回相应的权威域名服务器的IP地址。权威域名服务器是负责保存特定域名解析记录的服务器。
  8. 本地DNS服务器在知道权威域名服务器的IP地址后,发送一个查询请求给权威域名服务器。
  9. 权威域名服务器检查自己的数据库,找到对应的域名解析记录,并将IP地址返回给本地DNS服务器。
  10. 本地DNS服务器将IP地址存储在缓存中,并将IP地址返回给用户的计算机。
  11. 用户的计算机通过获取到的IP地址与目标计算机建立连接,并开始进行通信。

5. DHCP

Dynamic Host Configuration Protocol (DHCP)是一种网络协议,用于自动分配IP地址、子网掩码、默认网关和DNS服务器的配置给连接到网络上的设备。

DHCP服务是在网络中提供自动IP地址分配和其他网络配置设置的服务。当设备连接到网络时,它会向DHCP服务器发送请求,DHCP服务器会为设备分配一个可用的IP地址,并提供其他网络配置信息。这样,设备就可以自动获得所需的网络配置,而不需要手动配置。DHCP服务可以大大简化网络管理员的工作,同时提供更方便和高效的网络管理。

DHCP服务的工作原理如下:

  1. 设备加入网络时,向网络中的DHCP服务器发送一个DHCP请求。
  2. DHCP服务器收到请求后,在可用的IP地址池中分配一个可用的IP地址,并将其回复给设备。
  3. 设备收到DHCP服务器分配的IP地址,并使用该地址进行网络通信。
  4. DHCP服务器还可以提供其他网络配置信息,如子网掩码、默认网关和DNS服务器的IP地址等。
  5. 设备接受到其他网络配置信息后,可以根据配置信息进行网络设置,以正常使用网络服务。

通过使用DHCP服务,网络管理员可以更方便地管理整个网络,而不需要手动为每个设备分配IP地址和其他网络配置。同时,DHCP还支持IP地址的动态分配和租用,可以在设备不再需要时将分配给它的IP地址回收,以供其他设备使用。这使得网络中的IP地址使用更加高效。

总而言之,DHCP服务是一种自动分配IP地址和其他网络配置的服务,它提供了简化和高效的网络管理方式,使设备能够更方便地连接到网络并使用网络服务。

6. 在浏览器地址栏里输入一个URL,到这个页面呈现出来,中间会发生

以下是从输入URL到页面呈现的基本流程:

  1. 用户在浏览器地址栏中输入URL(统一资源定位符)。
  2. 浏览器通过URL解析出主机名(例如 www.example.com)。
  3. 浏览器使用DNS(域名系统)解析器将主机名转换为IP地址,该IP地址对应于服务器,以便能够建立与服务器的连接。
  4. 浏览器使用HTTP(超文本传输协议)建立与服务器的TCP(传输控制协议)连接。
  5. 建立连接后,浏览器发送一个HTTP请求到服务器,该请求包含请求的资源(例如网页、图像等)的详细信息。
  6. 服务器接收到请求后,根据请求的资源,生成相应的HTTP响应。
  7. 服务器将HTTP响应发送回浏览器。
  8. 浏览器接收到HTTP响应后,解析响应并获取所请求资源的数据。
  9. 浏览器将获取到的数据渲染为用户可见的页面。
  10. 页面呈现完成后,浏览器会继续解析页面上的其他资源(例如脚本、样式表等)并进行相应的处理。

整个过程涉及到多个步骤和技术,包括URL解析、DNS解析、建立连接、发送请求、接收响应、解析和渲染等。这些步骤之间的具体实现可能因浏览器的不同而有所变化,但基本流程是大致相同的。

总结

通过本篇文章的介绍,我们对计算机网络中的五层网络协议有了更深入的了解。首先,我们了解了网络协议的概念以及为什么需要将网络协议分为不同的层次。接着,我们详细介绍了每一层网络协议的功能和作用,从物理层到应用层,每一层都扮演着重要的角色。我们了解了数据在每一层传输的方式以及相应的协议。同时,我们也了解了网络协议的分层模型,如OSI模型和TCP/IP模型,并了解了它们之间的关系。最后,我们讨论了网络协议在实际应用中的作用,如网络安全和网络性能优化。通过学习五层网络协议,我们对计算机网络的运行机制和原理有了更加深入的了解,这对我们在网络相关的工作和学习中都非常有帮助。

你可能感兴趣的:(node,计算机网络,http,node,前端,服务端)