Advertisement

计算机网络基础知识-网络协议

阅读量:

计算机网络层次划分与通信协议总结
本段内容主要介绍了计算机网络的 OSI 七层模型、TCP/IP 协议、DNS 协议以及 HTTP 和 HTTPS 协议的相关知识:
OSI 七层模型

  • 包括七个层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
  • 描述了每个层次的主要功能:
  • 物理层:负责硬件设备(如中继器)及数据包传输。
  • 数据链路层:处理帧(数据包),提供可靠传输。
  • 网络层:管理主机间通信(如 IP 协议)。
  • 传输层(TCP):确保端到端可靠传输。
  • 会话/表示/应用层:支持进程间通信及应用程序交互(如邮件传输)。
    TCP/IP 协议
  • 基于 OSI 模型的 Internet 基础协议。
  • 由网络 layer 的 IP 协议和传输 layer 的 TCP 协议组成。
  • 描述了三次握手机制用于建立连接及四次挥手用于终止连接。
  • 提供可靠的数据传输,并支持 TCP 和 UDP 两种模式:
  • TCP:面向连接的可靠性通信(序列号、确认码技术)。
  • UDP:无连接的实时性传输(适合视频会议等场景)。
    DNS 协议
    将域名转换为 IP 地址的服务机制,在 Internet 中实现用户友好的名称解析功能。
    HTTP 和 HTTPS 协议
  • HTTP 是无连接、无状态的基础协议(仅处理单个请求)。
  • HTTPS 在 HTTP 上增加加密机制(基于 SSL/TLS),确保数据安全(适用于银行交易等场景)。
    总结
    本文系统地介绍了计算机网络的基本架构及其核心通信协议的作用机制,在理解互联网的工作原理方面具有重要意义。

一:计算机网络层次划分

1. 网络层次划分

image-20231104203410664

2. OSI七层网络模型

image-20231104203559596

物理层(Physical Layer)主要涉及硬件设备,在这一层次中,我们致力于确保原始的数据能够在各种物理介质上实现有效传输。其中最为关键的功能体现在以下几个方面:首先该层负责确保原始数据在不同物理介质中的传输质量;其次,在这一层次中我们可以见到一系列关键设备如中继器(Repeater或放大器)及集线器等基础组件;其中值得注意的是这些关键组件不仅具备基本的传输能力而且在实际应用中扮演着不可替代的角色;其中较为重要的一类就是集线器(Hub),它们作为数据传输中的核心枢纽角色发挥着不可替代的作用。

本题考查的是数据链路层的基本功能与作用机制。该层基于物理层提供的传输介质访问能力,并为网络层提供可靠的数据传输支持。具体而言,其主要功能体现在以下几个方面:首先能够实现物理地址的定位;其次能够生成以太网帧结构;再次能够建立并维护信道连接;此外还具备速率控制机制;最后能够采用奇偶校验或CRC进行数据完整性验证,并在检测到冲突时会自动发起再传过程。

  • 数据链路层负责将网络层所需的可靠比特流进行传输;
  • 数据链路层中的基本传输单位定义为帧(即数据块);
  • 主要的通信协议体系采用以太网协议方案;
  • 关键功能设备名称包括网桥与交换机两类。

3)网络层(Network Layer):网络层的主要职责是确保数据在两个端系统之间按路径传输。其核心功能包括实现寻址与路由选择机制;建立并维护通信连接;以及管理连接的启动与终止过程。该层负责设计并实施IP协议的标准。

4)传输层(Transport Layer) :直接的端到端连接是从主机到主机的一个层面。该层不仅负责将上一层的数据分段并提供可靠的或不可靠的、完整的数据传输服务,并且还需要同时处理两端之间的错误控制以及流量管理问题。

  • 传输层承担将上层数据分段并提供全程、可靠或不可靠的整体传输服务,并完成全程差错控制及流量管理。
  • 包含的核心协议包括TCP协议(Transmission Control Protocol, 传输控制协议)和UDP协议(User Datagram Protocol, 用户数据报协议)。
  • 关键设备是网关。

5)会话层:负责主机间的对话建立与维护工作;不仅负责建立和维护进程间的对话关系,并且能够通过在数据中插入校验点的方式确保数据的一致性。

6)表示层 :表示层负责对上一层的数据或信息进行处理以确保同一主机的应用层信息能够被另一个主机的应用程序正确解读。该转换过程通常包括多种数据处理手段:如对数据进行加密处理、压缩处理以及格式转换等方式。这些操作有助于保障不同层次之间的信息能够实现有效沟通与互操作性运作。

7)应用层 :为操作系统或网络应用程序提供访问网络服务的接口。

二:TCP/IP协议

1.概念

TCP/IP 协议是 Internet 最基本的 protocol 以及 Internet 国际互联网络的基础 , 它由 network layer 的 IP protocol 和 transmission layer 的 TCP protocol 组成 . Network layer 同时负责将来自 TCP 或 UDP 的数据包传递到更低一层 **.

  • IP数据包的可靠性较差(主要原因是缺乏机制来验证数据完整性及顺序性传输),其中每个IP数据包都包含来自源主机和目的主机的信息;
    • TCP是一种面向连接的通信协议,在建立连接所需的握手过程中实现了可靠的数据传输功能。

TCP报文首部格式:

img

2.三次握手

img

注释:seq

三次握手过程:

首先客户端发送SYN报文;
然后服务器接收到SYN请求后返回SYN-ACK报文并为此次连接分配资源;
最后客户端接收到ACK报文后也向服务器发送ACK并完成资源分配,从而建立TCP连接。

为什么是三次握手?

  • 三次握手的核心目的是应对网络信道不可靠带来的挑战。
    通过完成三次握手后...

  • 如果发送方发起两次握手... 在客户端发送SYN包时发生拥塞问题... 客户端会主动重发SYN包以建立连接... 而服务端则会根据接收到的ACK包来确认连接状态... 这种机制能够有效避免因未确认而造成的数据丢失问题。

3.四次挥手

四次挥手过程:

  • 客户端向服务器发送中断连接请求,并发出 finish-to-connection packet FIN;
    • 服务器接收到 finish-to-connection packet FIN 后会响应 acknowledge 报文以确认已收到中断请求;然而,在此之前 server 可能还在处理其他未完成的任务,并因此在响应 acknowledge 报文中不会立即终止客户端的中断请求;
    • 当 server 完成当前任务并发送 finish-to-connection packet FIN 给客户端时;
    • 客户端接收到 server 发送的 finish-to-connection packet FIN 后会发出 acknowledge 报文; server 接收 acknowledge 报文之后才会最终完成对本次中断请求的终止。
image-20231104212128414

4.TCP 保证可靠性的方式

TCP协议在实现传输可靠性上面做了很多:

数据校验和 :TCP采用数据校验和的方式用于识别或发现传输过程中的错误情况。

它通过计算数据内容来生成一个哈希值,并将该哈希值与原始数据一并发送给接收方

借助于序列号与确认应答信号的有效应用,能够有效防止数据的重复发送或接收.

TCP协议采用序列号机制实现可靠的数据传输。其工作原理是通过赋予每个发送的数据包唯一标识(即序列号),接收端需根据接收到的数据包返回确认应答信息以表明已成功接收对应的数据段。若 sender长时间未获得acks响应,则系统将触发重传机制以补充丢失的数据分段。例如,在网络层中常用的TCP/IP模型中就采用了这一可靠传输机制作为基础架构

3)通信连接管理系统:该系统采用三次握手流程和四次挥手机制实现动态地建立与关闭通信连接,并通过相应的配置参数设置确保了两端间的通信连贯性和稳定性。

4)超时重传机制:该系统设计了一种基于超时时间触发的自动重传机制来确保在数据传输中断的情况下能够重新发送完整的数据包以维持数据完整性;

流量控制:TCP 采用滑动窗口机制实现数据流量的控制。接收端通过提供窗口信息来调控发送端的数据传输速率。这种机制能够确保接收端能够及时处理 incoming data without data loss.

6)拥通算法:TCP 采用拥通算法策略以防止网络拥通问题。该算法通过评估当前网络负载情况来动态调节发送方的传输速率设置,在保证系统运行稳定的同时实现资源分配的公平性。具体而言,在此过程中包含三个主要控制策略:基于时间窗口大小变化率的慢启动机制、基于检测到的实际数据流量压力下的动态调整策略以及在检测到潜在冲突时迅速响应以避免快速重传的问题等核心组件;

5.TCP滑动窗口机制

以下案例来源leetCode

流量控制就是控制发送方的发送速率,以保证接收方有时间接收。

改写说明

  • 完成发送与确认流程后的情况:此部分已成功完成,并无后续操作需要;
    • 已经完成 sending 并处于 pending 状态的数据:这些数据可能在网络传输过程中丢失,请确保在必要时能够重新获取;
    • 处于未 pending 的新数据:这些数据可被保留以便在必要时加入到接收方的 buffer 中;
    • 处于 pending 状态但无法 sending 的新数据:由于当前 buffer 已满(exceeds buffer capacity),即使 attempting to send 这些 data 同样会浪费资源;

第2部分与第3部分之和正好等于接收方窗口的容量。该容量决定了发送方在每次发送时可以传输的最大数据量。在收到对方确认前, sender必须将即将送出的所有data packets暂时存储于window buffer中(因为网络传输过程中的不确定性可能导致data packets丢失),以便在接收到确认信息后及时重传这些未被确认的数据)。一旦确认响应包成功到达对方端口后,则会立即删除这些已处理完成的数据segment from the window buffer.

一旦发送方接收到接收方的确认反馈后,
系统会清除显示在数据窗格内的所有确认信息块,
随后使数据窗格向右滑动一位(如图所示)。

image-20231104232619293

伴随双方通信进程的推进, 窗口不断向前推进, 也被形象地称为滑动窗口(Sliding Window)。而对于TCP的数据接收端而言, 则其结构相对简单一些, 并划分为三个主要组成部分:

  • 已收悉
  • 当前系统未能准备好去接通/接收到相应的数据。(这一机制的作用是确保数据传输的一致性)
  • 未准备好去接收到

由于 TCP 协议栈直接响应 Ack 包的发送,在大多数情况下不会产生应用层面的延迟,并无需担心存在"已接收未回复 Ack"的情况。

image-20231104232704715

例如,在建立连接时完成三次握手后, 接收端向发送端反馈其可用的接收缓冲区容量(rwnd), 其值设定为300字节. 此时接收端的滑动窗口信息如下:

image-20231104232727866

此时的发送方滑动窗口如下:

image-20231104232740965

2)发送方发送第一个报文段(序号 1 - 100),还能再发送 200 个字节

3)发送方发送第二个报文段(序号 101 - 200),还能再发送 100 个字节

4)发送方发送第三个报文段(序号 201 - 300),还能再发送 0 个字节

此时,发送方的窗口中存了三个报文段了,此时的发送方滑动窗口如下:

image-20231104232754803

接收到第一个报文块以及第三个报文块后发现缺少第二个数据包,在这种情况下接收方通过返回一个ack字段值为101、rwnd字段值为200的报告(因发生流量控制操作导致窗口大小缩减至200),表明允许发送方继续传输起始序号为101、长度为200的数据包序列。
在本例中理论上应向右滑动数据窗口以进行后续数据传输处理;然而由于流量控制操作已经实施使得实际处理仅需维持当前窗口状态无需进行扩展操作。

image-20231104232816276

接收方接收到第一个数据分段的确认信息,并对窗口中的该数据分段进行移除操作。此时接收方已将所有已处理的数据分段时间向前滑动至指定位置。

image-20231104232846046

序号为101至200的第一份数据包尚未在接收端获得确认反馈

  1. 接收端正确捕获了第二个数据包段(其中包含第二个和第三个数据分组),随后向发送端响应(该响应包含了ack=301和rwnd=100字段)。值得注意的是,在此过程中发生了一次流量控制操作(具体而言,在这种情况下会将发送方的报文缓冲区大小缩减至100字节)。
    当前接收方的滑动窗口状态为:原本应向右移动一个分组以反映最新的接收情况;然而由于存在流量控制机制的影响(即发送方希望限制其报文缓冲区的空间),因此在此情况下不需要进行扩展操作即可满足相关需求。
image-20231104232911941

接收方对第二、三个数据包的确认已送达,并已将其从队列中删除

8)发送方发送第四个报文段(序号 301 - 400),此时的发送方滑动窗口如下:

image-20231104232932434

三:UDP协议

1.概念

UDP:首先来说说UDP协议的特点吧!它是一种无连接式的通信方式,在发送数据的时候只需要将普通的简单数据打包成统一格式后就可以直接通过网卡发送出去了,并不需要像TCP那样建立持续的数据链路连接。值得注意的是,在UDP协议中,并没有对各个数据包之间建立任何状态上的关联。正是由于这种相对简单化的处理机制,在性能资源消耗方面也展现出了显著的优势——相比而言,在CPU和内存资源的使用上也远低于TCP协议。然而,在网络传输过程中可能会出现部分数据丢失的情况——这也是为什么UDP协议在传输稳定性上相对 weaker的原因之一!

2.TCP和UDP区别

比较 tcp 和 udp 的主要区别在于:tcp 在数据传输过程中具有高度可靠性,并且能够确保传输过程零错误;而 udp 则以其快速响应著称,在实时性要求较高但允许少量数据丢失的情况下表现突出;两者的应用场景各有侧重:tcp 适用于包括文件传输、邮件发送以及 web 浏览等多种应用场景;而 udp 则涵盖域名查询服务、语音通话以及视频直播等多种应用。

udp还有一个非常重要的应用场景就是隧道网络,比如:VXLAN。

四:DNS协议

DNS被缩写为DomainNameSystem(DomainNameSystem),这是一个被用来命名组织到域层次结构中的计算机和网络服务的系统。它也可以简单地解释为一种能够将URL解析转换为对应IP地址的方法。域名由点号连接的一系列单词或缩写组成,在互联网上每个域名都唯一对应着一个IP地址,在TCP/IP网络中互联网上的域名与IP地址之间是一一对应的关系。DNS服务器的主要功能就是负责将给定的域名解析为对应的IP地址。DNS技术在互联网等TCP/IP网络中被广泛应用于进行名称解析的过程。通过提供一种直观友好的名称查找机制来定位计算机和服务。

五:HTTP

HTTP 协议作为 Hyper Text Transfer Protocol(超文本传输协议)的全称,在万维网(WWW:World Wide Web)服务器与本地浏览器之间建立传送通道;
基于 TCP/IP 通信协议的数据传送机制不仅限于HTML文件、图片文件及查询结果等媒体形式;
该特性通过仅处理单个请求后断开连接来实现,在此模式下服务器完成客户请求并收到相应反馈后即终止与客户端的数据交互;
由于缺乏状态信息的能力被称为无状态特性,在需依赖历史信息的情况下必须通过重传机制来补充缺失的数据内容,
这不仅有助于提高响应效率还减少了每次数据传输所携带的信息量。

总结:HTTP 是无连接、无状态、基于TCP/IP协议的超文本传输协议。

六:HTTPS

总结:我们称HTTPS为超文本传输安全协议,并明确其作用为保障浏览器与访问网站(服务器)之间的通信安全性。

HTTPS的特证:

  • 保护数据完整性与机密性。采用TLS/SSL协议对数据进行加密与签名验证;
  • 属于传输层的协议;
  • 在HTTPS中使用公私钥交换实现对称加/减密过程;
  • 相对于HTTP而言较轻量。当进行HTTPS连接时需要进行加/减密操作;
  • HTTPS运行于端口443。

HTTP和HTTPS的区别?

HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;

HTTP 由超文本技术构成,并负责信息的直接传递;而 HTTPS 则是以SSL加密技术为基础的加密传输方案。

HTTP 与 HTTPS 采用了显著不同的传输机制,并因此导致所采用的端口号也存在明显差异。其中 former 指的是经典的 HTTP 协议(端口号 80),后者则是安全的 HTTPS 协议(端口号 443)。

HTTP 连接非常简单,并且属于无状态连接。HTTPS 协议基于 SSL 和 HTTP 协议开发而成,并支持加密传输与身份认证功能;相较于 HTTP 协议而言更加安全可靠。(在无状态的情况下,默认情况下每个数据包(即通信中发送出去的信息)都会被独立地发送、传输和接收;而‘没有连接’则意味着双方不需要长期维护彼此的信息。)

HTTPS 的安全性保证?

HTTPS是在HTTP基础上补充了SSL加密算法的技术方案。在数据传输过程中首先由服务器获取第三方CA机构颁发的电子证书。CA机构使用私钥对服务端公钥进行数字签名随后发送签名证书给客户端。浏览器通过内置CA机构公钥对电子证书进行解密从而验证服务端公钥这一环节采用了非对称加密机制。接着客户端系统会自动生成一个临时密钥并利用刚刚获得的服务端公钥对该密钥进行加密后发送回服务器端;服务器则使用自己的私钥对客户端加密后的密文进行解密从而获取客户端所生成的临时密钥最后双方基于此共同密钥实施对数据内容的安全加密操作从而保障了通信的安全性。

首先,在线浏览器需要获取第三方CA机构的认可才能获取目标服务器的信任。随后,在线浏览器必须向远程服务器展示其真实身份信息,并获得其认证后才能继续操作。随后,在线浏览器会自动生成一段临时密码信息,并使用刚恢复的服务服务器真实公开密钥对该临时随机数进行加密编码,并将此加过密的信息传递回目标服务器。远程服务器在接收到这些加过层码的数据后会利用自身私有秘钥匙成功解析还原这段二进制码,并从中提取出与在线浏览器所使用的相同临时秘密共享键。最后,在线浏览器与目标服务器之间建立连接时,默认情况下已经完成了身份认证流程,并在此基础上开展通信活动。在线浏览器与目标服务器之间的通信活动将采用该共享秘密键对该通信内容进行一次性加严加密处理。

基于非对称加密算法的优势

基于**...**算法的优势

全部评论 (0)

还没有任何评论哟~