计算机网络基础概念
计算机网络是指将多台计算机互相连接起来,实现信息传输和资源共享的系统。以下是计算机网络的基础概念:
- 通信协议:通信双方之间进行数据交换所遵循的规则、标准或约定。
- 网络拓扑结构:指各个网络节点之间连接关系的布局方式,如星型、总线型、环型等。
- 客户端/服务器模式:一种分布式应用架构,客户端向服务器请求服务并接收响应。
- 带宽:指单位时间内可传输数据量的大小,通常以比特率(bps)为单位表示。
- 路由器:负责在不同子网之间转发数据包,并决定了数据包从源到目的地经过哪些路径。
- 网关:连接两个不兼容协议或物理介质的设备,在不同网络之间进行数据格式和协议的转换。
- IP地址:每台计算机在网络中唯一标识符,用于确定数据包发送和接收方的位置。
- 子网掩码:用于划分一个IP地址段为若干个小范围IP地址段以便管理和使用。
- DNS解析系统:将域名映射为对应IP地址,使得用户可以通过域名访问特定的网站。
- HTTP协议:超文本传输协议,用于客户端与服务器之间的通信,主要用于Web页面请求和响应。
- 主机:指计算机网络中提供服务的终端设备,可以是个人电脑、服务器或其他可连接到网络上的设备。
- 通信链路:指在计算机网络中用于连接两个或多个设备之间的物理媒介,例如光纤、同轴电缆、双绞线等。
- 传输速率:指在计算机网络中数据传输的速度,一般以比特率(bits per second, bps)为单位来表示。
- 分组:在计算机网络中,将大块数据分割成小块,并加上头部信息形成一个独立单元进行传输的过程。每个分组都包含了目标地址和源地址等必要信息。
- 转发表:是一种存储在路由器或交换机内部的表格,用于记录不同设备之间通信所需经过的路径和相应的转发方式等信息。
- 路由器:是一种常见的网络设备,在不同局域网或广域网之间传递数据包并控制其流量。它通过查找转发表来判断最佳路径并将数据包发送到目标地址。
- 交换机:是一种专门用于局域网内部通信的设备。它能够识别出接收端口与目标地址之间的对应关系,并直接将数据包转发到目标地址所在的端口,以实现局域网内部快速高效的通信。
交换机和集线器在作用上确实相似,都是用来连接计算机网络中的设备。但是它们的工作方式和功能还是有所不同。集线器将多个设备的数据流汇聚到一起,所有设备共享同一个带宽。当一个设备发送数据时,所有连接在集线器上的其他设备都会收到这个消息,安全性较差,并且由于多个设备共享同一个带宽,可能会出现网络拥堵等问题。而交换机则可以通过记忆每个端口连接的MAC地址并建立转发表,根据目标MAC地址决定将数据包转发到哪个端口。这样可以避免广播风暴(即一个节点向其它节点发送大量无意义信息)和冲突等问题。此外,在交换机中各个端口之间是相互独立的,数据包可以同时进行双向传输,因此比集线器具有更高的传输速度和稳定性。总体来说,交换机更加智能化、灵活化和高效化,在现代计算机网络中得到了广泛应用。
- 半双工模式:指通信双方可以交替发送和接收数据,但不能同时进行发送和接收。
- 全双工模式:指通信双方可以同时进行发送和接收数据。
- 路径:网络中两个节点之间的连线或路由。
- 因特网服务商:提供连接互联网的服务,例如电信运营商、ISP等。
- 网络协议:计算机网络中用来约定和规范各个设备之间通讯行为的一种标准化体系结构。
- IP(Internet Protocol):互联网协议,负责将数据包从源地址传输到目标地址。
- TCP/IP 协议簇:包括TCP(Transmission Control Protocol)和IP(Internet Protocol)两个主要部分,在互联网中扮演着重要的角色。
- 丢包:在传输过程中某些数据包未能成功到达目标地址而被丢弃的现象。
- 吞吐量:网络在单位时间内所能传输的最大数据量。
- 报文:在计算机网络中,传送信息的基本单位,是逻辑上的概念,不带有任何物理意义。
- 报文段:TCP 协议层次下面一个更小单位,把应用层信息封装成一个实体,并加上 TCP 需要的头部信息组成一个报文段。
- 数据报:IP 协议层次下面一个更小单位,每个数据报中包括头部和数据两个部分。
- 帧:在网络通信中,数据的传输单元是帧,每一帧都有固定的格式。
- 电路交换:将一条物理通道划分成多个时隙,在每个时间段内只允许一个用户进行通信。
- 报文交换:在发送数据前先建立连接并互相认证身份,然后才能开始传送数据。
- 分组交换:将要传输的大块数据分成很多小的数据包进行传输,这些小的数据包可以按照不同路径到达目标地址,并且可以同时发送。
- 带宽:指单位时间内某一通信链路所能通过的最大数据量。
- 频分复用:将不同频率范围内的信号混合在一起传输,接收端再根据预先约定好的频率范围来区分各个信号。
- 时分复用:将时间划分为若干段,在不同时间段内向不同用户发送信息。
- 时延:网络通信过程中需要消耗的时间总和,由处理时延、排队时延、传输时延和传播时延构成。
- 处理时延:指消息到达设备后被处理所需花费的时间。
- 排队时延:指由于设备繁忙而等待消息被处理所需花费的时间。
- 传输时延:指消息传输过程中花费的时间。
- 传播时延:指消息在信道中传播所需的时间。
- 单播:一对一通信方式,数据只发送给一个目标设备。
- 广播:一对多通信方式,数据同时发送给网络中所有设备。
多播:一对多通信方式,数据只发送给指定组内的设备。
任播:一种特殊的寻址机制,在互联网中被用于路由协议。
计算机网络应用层
计算机网络应用层是网络协议栈中的最高层,为用户提供各种网络服务。以下是一些常见的应用层协议:
- HTTP(Hypertext Transfer Protocol):Web 浏览器和 Web 服务器之间通信的协议,用于传输 HTML 等超文本数据。
- HTTPS(HTTP Secure):HTTP 协议的加密版本,在传输过程中使用 SSL/TLS 加密和认证数据。
- FTP(File Transfer Protocol):文件传输协议,用于在客户端和服务器之间传输文件。
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于电子邮件的发送。
- POP3(Post Office Protocol Version 3):邮局协议第三版,是一种从远程服务器接收电子邮件的标准协议。IMAP(Internet Message Access Protocol):互联网消息访问协议,也是一种从远程服务器接收电子邮件的标准协议。
- DNS(Domain Name System):域名系统,将主机名转换为 IP 地址并反向转换。
- DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,自动分配 IP 地址、子网掩码、默认网关等网络参数给客户端设备。
- Telnet:一种远程登录协议,允许用户通过终端访问远程计算机上的命令行界面。
- SSH(Secure Shell):一种安全的远程登录协议,提供加密和认证机制来保护数据传输。
- 应用程序体系结构:其实就是应用层程序的两种组织结构,分为 CS 和 P2P。
常见的应用程序体系结构有以下几种:
- 分层体系结构:将应用程序按照功能分成多个层次,每个层次只与相邻两层进行通信,并且每个层次只负责自己的任务。这种架构易于扩展和维护。
- 客户端-服务器体系结构:将应用程序分成客户端和服务器两部分,客户端通过网络连接到服务器上运行。客户端主要负责用户界面,服务器主要负责业务逻辑和数据存储。
- MVC(Model-View-Controller)架构:将应用程序分为三个部分:模型、视图和控制器。模型表示数据、视图表示用户界面、控制器负责处理用户输入并更新模型或视图。
- 微服务架构:将复杂的应用程序拆分成多个小型服务,并使用轻量级协议进行通信。每个服务都独立运行,并且可以灵活部署和扩展。
- 事件驱动架构:应用程序通过事件和消息进行通信,当一个事件发生时,触发相应的处理程序。这种架构可以提高系统的响应性和可扩展性。
11.客户-服务体系:它是一种面向网络应用的体系结构。把系统中的不同端系统区分为客户和服务器两类,客户向服务器发出服务请求,由服务器完成所请求的服务,并把处理结果回送给客户。在客户-服务器体系结构中,有一个总是打开的主机称为 服务器(Server),它提供来自于 客户(client) 的服务。我们最常见的服务器就是 Web 服务器,Web 服务器服务于来自 浏览器 的请求。
12.P2P 体系:P2P (Peer-to-Peer) 体系结构是一种分布式计算模型,它不同于传统的客户端-服务器架构,在这种模型中每个节点都可以充当客户端和服务器角色,彼此之间互相通信和协作。P2P网络没有集中的控制机构,所有节点平等地参与到网络中,从而形成一个去中心化的网络。
P2P网络通常可以分为以下几类:
- 纯 P2P 网络:所有节点都具有相同的功能和权限,没有任何层次结构。
- 混合 P2P 网络:既包含纯 P2P 节点又包含拥有更多特权或者更强资源管理能力的超级节点(Supernode)。
- 分层 P2P 网络:将整个网络划分为若干层,每一层只负责处理自己所在层的任务,并且通过虚拟连接进行数据交换。
- 带宽管理型 P2P 网络:采用各种技术手段对带宽进行管理、优化和保护,并尽量避免浪费带宽资源。
- 流媒体 P2P 网络:主要用于实时传输音视频流等大容量数据,并且需要保证低延迟和高稳定性。
P2P网络具有以下优点:
- 去中心化:没有集中的控制机构,避免了单点故障和系统崩溃的风险。
- 共享资源:各节点之间可以直接共享资源,节约了网络带宽和存储空间。
- 自我组织:节点之间可以自动协作完成任务,并且能够根据网络状况进行适应性调整。
- 高可扩展性:新节点加入时不会对整个系统造成影响,而且可以利用更多的节点提高网络性能。
13.进程:进程其实就是运行在端系统的程序,应用程序进行通信的最基本单位就是进程。
14.分布式应用程序:多个端系统之间相互交换数据的端系统被称为分布式应用程序。
15.套接字接口:指的就是 socket 接口,这个接口规定了端系统之间通过因特网进行数据交换的方式。
客户端:在客户-服务器架构中扮演请求方的角色,通常是 PC,智能手机等端系统。
服务器:在客户-服务器架构中扮演服务方的角色,通常是大型服务器集群扮演服务器的角色。
IP 地址:IP 地址就是网际协议地址,在互联网中唯一标识主机的一种地址。每一台入网的设备都会有一个 IP 地址,这个 IP 又分为内网 IP 和公网 IP。
端口号:在同一台主机内,端口号用于标识不同应用程序进程。
URI:它的全称是(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
URL:它的全称是(Uniform Resource Locator),中文名称是统一资源定位符,它实际上是 URI 的一个子集。
HTML:HTML 称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的 Internet 资源连接为一个逻辑整体。HTML 文本是由 HTML 命令组成的描述性文本,HTML 命令可以说明文字,图形、动画、声音、表格、链接等。
Web 页面:Web 页面也叫做 Web Page,它是由对象组成,一个对象(object) 简单来说就是一个文件,这个文件可以是 HTML 文件、一个图片、一段 Java 应用程序等,它们都可以通过 URI 来找到。一个 Web 页面包含了很多对象,Web 页面可以说是对象的集合体。
Web 服务器:Web 服务器的正式名称叫做 Web Server,Web 服务器可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个 Web 服务器是 Apache、 Nginx 、IIS。
CDN:CDN 的全称是Content Delivery Network,即内容分发网络,它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。CDN 是构建在现有网络基础之上的网络,它依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
专用 CDN:由内容提供商特有 CDN 。
第三方 CDN:它代表多个内容提供商提供服务。
WAF:WAF 是一种 应用程序防护系统,它是一种通过执行一系列针对 HTTP / HTTPS的安全策略来专门为 Web 应用提供保护的一款产品,它是应用层面的防火墙,专门检测 HTTP 流量,是防护 Web 应用的安全技术。
WebService :WebService 是一种 Web 应用程序,WebService 是一种跨编程语言和跨操作系统平台的远程调用技术。
HTTP: TCP/IP 协议簇的一种,它是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
Session:Session 其实就是客户端会话的缓存,主要是为了弥补 HTTP 无状态的特性而设计的。服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。当客户端请求服务端时,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。
Cookie:HTTP 协议中的 Cookie 包括 Web Cookie 和浏览器 Cookie,它是服务器发送到 Web 浏览器的一小块数据。服务器发送到浏览器的 Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器。通常,它用于判断两个请求是否来自于同一个浏览器,例如用户保持登录状态。
SMTP 协议 :提供电子邮件服务的协议叫做 SMTP 协议, SMTP 在传输层也使用了 TCP 协议。SMTP 协议主要用于系统之间的邮件信息传递,并提供有关来信的通知。
POP3:邮件访问协议,协议较为简单,功能有限。
DNS 协议:由于 IP 地址是计算机能够识别的地址,而我们人类不方便记忆这种地址,所以为了方便人类的记忆,使用 DNS 协议,来把我们容易记忆的网络地址映射称为主机能够识别的 IP 地址。
根 DNS 服务器:最顶级的 DNS 服务器,全世界有 400 多台根域名服务器,由 13 个不同的组织管理,根域名服务器提供 TLD 服务器的 IP 地址。
顶级域 DNS 服务器:这个我们比较熟悉,像是常见的顶级域(如 com、org、net、edu 和 gov)和所有的国家顶级域(uk、fr、ca 和 jp),TLD 服务器提供了权威 DNS 服务器的 IP 地址。
权威 DNS 服务器:这个服务器就是因特网上具有公共可访问主机的 DNS 记录的服务器。
本地 DNS 服务器:一般来说,每个 ISP 都有一台本地 DNS 服务器,本地 DNS 服务器会临近主机端。
TELNET 协议:远程登陆协议,它允许用户(Telnet 客户端)通过一个协商过程来与一个远程设备进行通信,它为用户提供了在本地计算机上完成远程主机工作的能力。
SSH 协议:SSH 是一种建立在应用层上的安全加密协议。因为 TELNET 有一个非常明显的缺点,那就是在主机和远程主机的发送数据包的过程中是明文传输,未经任何安全加密,这样的后果是容易被互联网上不法分子嗅探到数据包来搞一些坏事,为了数据的安全性,我们一般使用 SSH 进行远程登录。
FTP 协议:FTP (File Transfer Protocol) 协议是一种用于文件传输的标准协议,它通过 TCP/IP 协议栈进行数据传输。FTP 协议包括两个主要组件:客户端和服务器。
FTP 客户端通常由用户使用的文件管理器或 FTP 客户端软件实现,它可以连接到一个远程 FTP 服务器,并且允许用户在本地计算机和远程服务器之间上传、下载、删除等操作。
FTP 服务器则负责提供文件存储和传输服务,它需要安装在远程计算机上,并且配置相应的用户账号和权限控制来保证安全性。
FTP 协议工作流程如下:
- 建立连接:客户端向服务器发送连接请求,如果连接成功,则建立双向数据通道。
- 鉴权认证:客户端需要提供用户名和密码进行身份验证,并且根据不同的权限级别进行访问限制。
- 数据传输:客户端可以执行多种操作,例如上传、下载、重命名、删除等操作。每个操作都需要使用特定的命令与服务器进行交互,并且将数据传输到指定目录或者从指定目录中获取数据。
- 断开连接:当所有操作完成后,客户端会向服务器发送断开连接请求,然后关闭双向数据通道并释放资源。
FTP 协议具有以下优点:
- 简单易用:FTP 协议基于文本格式,易于理解和使用。
- 高效可靠:FTP 使用 TCP/IP 协议进行数据传输,并且支持断点续传、数据校验等机制,可以保证高效和可靠的文件传输。
- 跨平台支持:FTP 支持多种操作系统和网络环境,兼容性强。
但是 FTP 协议也存在一些缺点,例如安全性较差、不支持加密传输等问题。因此在实际应用中需要结合具体需求选择合适的文件传输协议。
MIME类型,它表示的是互联网的资源类型,一般类型有 超文本标记语言文本 .html text/html、xml文档 .xml text/xml、普通文本 .txt text/plain、PNG图像 .png image/png、GIF图形 .gif image/gif、JPEG图形 .jpeg,.jpg image/jpeg、AVI 文件 .avi video/x-msvideo 等。
多路分解:在接收端,运输层会检查源端口号和目的端口号等字段,然后标识出接收的套接字,从而将运输层报文段的数据交付到正确套接字的过程被称为多路分解。
多路复用:在发送方,从不同的套接字中收集数据块,然后为数据块封装上首部信息从而生成报文段,然后将报文段传递给网络层的过程被称为多路复用。
周知端口号:在主机的应用程序中,从 0 - 1023 的端口号是受限制的,被称为周知端口号,这些端口号一般不能占用。
计算机网络传输层
计算机网络中,传输层是 OSI 模型和 TCP/IP 模型中的一层,主要负责应用程序之间的数据传输。
在 OSI 模型中,传输层的作用是为运行在不同主机上的进程提供端到端的可靠数据传输服务。其中最重要的两个协议是 TCP (Transmission Control Protocol) 和 UDP (User Datagram Protocol)。TCP 协议提供面向连接、可靠性高、流控制和拥塞控制等服务,适合于需要保证数据完整性和顺序性的应用场景。UDP 协议则是无连接、不可靠但速度较快,并且可以支持广播和多播等特殊功能,适合于实时性要求较高但允许少量数据丢失或者乱序的应用场景。在 TCP/IP 模型中,传输层主要负责将上层协议(如 HTTP、FTP 等)产生的数据进行分段并添加首部信息(如源地址、目标地址、序列号等),然后通过 IP 层进行路由转发。接收方通过接收到的分段进行重新组装,并交给上层协议处理。此外,还有一些其他常见协议也工作在传输层,例如 SCTP (Stream Control Transmission Protocol)、DCCP (Datagram Congestion Control Protocol) 等。这些协议都是为了满足不同的应用场景和需求而设计的。
可靠数据传输是指在网络中传输数据时,保证数据的完整性、正确性和顺序性。为了实现可靠数据传输,需要考虑以下几个方面:
1. 容忍丢失的应用:对于一些允许少量数据丢失或乱序的应用(如视频流、音频流等),可以采用非可靠传输方式。
2. 非持续连接:TCP 协议采用非持续连接方式,即每次发送数据时都要进行连接建立和释放操作。
3. 持续连接:UDP 协议则采用持续连接方式,即不需要进行连接建立和释放操作,适合于需要频繁发送小量数据的场景。
4. 传输控制协议(TCP):TCP 是一种面向连接的、可靠的传输协议,它通过三次握手建立连接,并使用冗余 ACK 快速重传和选择确认等技术来保证数据的正确性、完整性和顺序性。
5. 用户数据包协议(UDP):UDP 是一种无连接、不可靠但速度较快的传输协议,适合于实时性要求较高但允许少量数据丢失或者乱序的应用场景。
6. 三次握手:TCP 连接建立过程中采用三次握手机制来确保双方都能够正常通信。
7. 最大报文段长度(MSS):TCP 在发送数据时需要将大的数据分成若干个小的报文段,而 MSS 就是指每个报文段中的最大数据量。
8. 最大传输单元(MTU):MTU 是指在网络中可以传输的最大数据包大小,一般为 1500 字节左右。
9. 冗余 ACK 快速重传:当接收方连续收到相同的 ACK 时,说明前面一个报文段可能丢失了,此时就会触发冗余 ACK 快速重传机制。
10. 选择确认:TCP 中使用选择确认技术来减少重复传输和提高吞吐量,即只对接收方还未收到的数据进行确认。
11. 拥塞控制:TCP 采用拥塞控制算法来避免网络拥塞情况下出现过多的丢包、延迟等问题。
12. 四次挥手:TCP 连接释放过程中采用四次挥手机制来确保连接正常关闭。
13. 发送缓存:发送方在发送数据时会先将数据缓存在发送缓存中,等待网络空闲后再进行发送操作。
14. 接收缓存:接收方在接收数据时会先将数据缓存在接收缓存中,等待所有相关的数据都到齐后再进行处理操作。
15.SYN:Synchronize Sequence Numbers,是 TCP/IP 建立连接时发送的数据包,这个数据包就是一个同步序列号,标识客户端发送的是哪个请求。
16.ACK:Acknowledge character,ACK 是对请求进行响应的数据包。
17.FIN:Finish ,带有 FIN 标志位的数据包表示客户端希望断开连接。
18.三次握手中的状态变化,在 TCP 的三次握手过程中,客户端和服务器之间会进行状态的变化。具体的状态变化如下:
- 客户端发送 SYN 数据包,进入 SYN-SENT 状态。
- 服务器收到 SYN 数据包后回复一个 SYN+ACK 数据包,表示可以建立连接,并进入 SYN-RECEIVED 状态。
- 客户端再次回复一个 ACK 数据包,表示确认可以建立连接,并进入 ESTABLISHED 状态。
这样就完成了三次握手过程。在此之后,客户端和服务器之间就可以进行数据传输了
19.四次挥手中的状态变化,在 TCP 的四次挥手过程中,客户端和服务器之间会进行状态的变化。具体的状态变化如下:
- 客户端发送一个 FIN 数据包,表示数据传输完毕,并进入 FIN-WAIT-1 状态。
- 服务器收到 FIN 数据包后,回复一个 ACK 数据包,表示已经接收到了客户端的请求,并进入 CLOSE-WAIT 状态。
- 当服务器也准备好关闭连接时,发送一个 FIN 数据包给客户端,并进入 LAST-ACK 状态。
- 客户端收到服务器发送的 FIN 数据包后,回复一个 ACK 数据包给服务器确认接受到关闭请求,并进入 TIME-WAIT 状态。在这个状态下等待 2MSL(最长报文段寿命)时间后才会真正关闭连接。
这样就完成了四次挥手过程。可以看出,相比于三次握手,在四次挥手中多了一步“TIME-WAIT”阶段来确保所有数据都被成功传输完毕并避免重复连接的发生。
20.滑动窗口:英文 sliding window,它是一种流量控制技术,在互联网早期,通信双方通常不会考虑网络情况,一般都会直接进行通信,同时发送数据,很容易导致阻塞,谁也发不了数据,针对这种现象,提出了滑动窗口,通过滑动窗口,接收方会告诉发送方自己能够接收多少数据。
21.窗口长度:窗口长度指的是已发送但还未确认的分组范围,如下图中的发送窗口结构就是窗口长度。
22.累积确认:TCP 规定在一段时间内发送方只要收到最后一条接收方返回的确认 ACK ,而不用重传报文段。
23.冗余ACK:由于 TCP 采用的是累计确认机制,即当接收端收到比期望序号大的报文段时,便会重复发送最近一次确认的报文段的确认信号,我们称之为冗余 ACK。
24.选择确认:可选择性的确认失序报文段,而不是重传最后一个报文段。
计算机网络网络层
网络层的重要概念
网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。
网络层的两个层面(路由器之间传送的信息有两类)
(1)转发源主机和目的主机之间所传送的数据:把源主机所发送的分组,像接力赛跑一样从一个路由器转发到另一个路由器,最后把分组传送到目的主机。
(2)传送路由信息:根据路由选择协议所使用的路由算法,彼此不断地交换路由信息分组,目的是为了在路由器中创建路由表,并由此导出为转发分组而用的转发表。这一类信息的传送是为第一类数据的传送服务的。
网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一,主要为IPV4,较新版本IPV6与协议IP配套使用的还有三个协议:
地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议IGMP
从一般的概念来讲,将网络互连起来要使用一些中间设备。根据中间设备所在的层次,可以有一下四种不同的中间设备:
(1)物理层使用的中间设备叫做转发器(repeater),比如中继器、集线器(Hub);
(2)数据链路层使用的中间设备叫做网桥或桥接器(bridge);
(3)网络层使用的中间设备叫做路由器(router);
(4)在网络层以上使用的中间设备叫做网关(geteway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
TCP/IP的虚拟互连方式
所谓虚拟互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以把这些性能各异的网络在网络层看起来好像是一个统一的网络。
这种使用IP协议的虚拟互连网络可简称为IP网,使用IP网通信的好处是:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,他们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议、等等)
互联网的源主机H1把一个IP数据报发送给目的主机H2根据分组交换分组转发概念,主机H1先要查找自己的路由表,看目的主机是否就在本网络上。如是,则不需要经过路由器而是直接交付,任务就完成了。如不是,则必须把IP数据报发送给某个路由器(图中R1)。R1在查找了自己的路由表后,知道应把数据报转发给R2进行交接交付,这样一直转发下去,最后由路由器R5知道自己是和H2连接在一个网络上,不需要再使用别的路由器转发了,于是就把数据报直接交付到目的主机H2。
这里强调的是:互连网可以由多个异构网络组成。
IP地址
IP作用于OSI参考模型中的网络层,在终端通信中作为唯一标识,便于确定数据的传递目标。
IP地址分为:IPv4 、IPv6
大众熟知且流行的IPv4是用点分四组十进制的表示方法展示的
IPv4是32位的。而IPv6的位数就比较大了,是128位的,长度是IPv4的4倍,并且其表示方式是分块的八组四个十六进制数
IP是作为终端的唯一表示,因此只有当保证每个IP都不同时,才能保证IP的唯一性。其中,IPv4地址的长度为32位,因此就有 2^32 种可能的地址,那么同理,IPv6地址的长度为128位,因此就有 2^128 种可能的地址。
这些地址就是作为数据包发送的目的地址,当然每个地址都会有它们各自的含义,例如单播 、组播 、广播等
单播可以理解为一台主机发送单一的数据包给另一台主机;
组播可以理解为一台主机发送单一的数据包给多台主机;
广播可以理解为一个节点向其它所有的节点发送数据包;
IPv4种大多的数的地址都为单播
在识别IP地址时,就是先通过识别IP地址中的网络号来确认目的地址处于哪个网络区域,然后再识别主机号,来确认这个网络中特定的主机。
将IPv4地址用二进制表示,一段地址的网络号和主机号分类可以分为5类:A类 、B类 、C类 、D类 、E类,
A类 :网络号共8位,首位固定为 0 ,接下来连续的7位可以自由设定;主机号为24位。 B类 :网络号共16位,前两位固定为1 0 ,接下来连续的14位可以自由设定,主机号为16位。 C类 :网络号共24位,前三位固定为1 1 0 ,接下来连续的21位可以自由设定,主机号为8位。 D类 :为组播地址,共32位,前四位固定 1 1 1 0 。 E类 :为保留地址,共32位,前四位2固定为 1 1 1 1 。
A类地址网络号共8位,其中首位固定为 0,那么还有7位可以自由设定,那么就共有 2^7个网络数。 B类地址网络号共16位,其中首位固定为 1 0,那么还有14位可以自由设定,那么就共有 2^14个网络数。
C类地址网络号共24位,其中首位固定为 1 1 0,那么还有21位可以自由设定,那么就共有 2^21个网络数。
A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0,
网络号为全0的IP地址有特殊的用途,它表示“本网络”;
网络号为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用,若主机发送一个目的地址为环回地址(即127.0.0.1)的IP数据报,则本主机的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。因此,A类地址可指派的网络号有126个。
类 | 地址范围 | 最大网络数 | 最大主机数 |
A | 1.0.0.0~126.255.255.255 | 2^7 | 2^24-2 = 16777214 |
B | 128.0.0.0~191.255.255.255 | 2^14 - 1 | 2^16-2 = 65534 |
C | 192.0.0.0~223.255.255.255 | 2^21 - 1 | 2^8-2 = 254 |
无分类编址CIDR
在IP地址即将枯竭时,一种新的无分类编址方法问世。
(1)网络前缀:CIDR把网络号改称为网络前缀,用来指明网络,剩下的后面部分仍然是主机号,用来指明主机网络前缀n不是固定的数。CIDR使用 “斜线计法” ,即IP地址后面是网络前缀所占的位数。
(2)地址块:CIDR把网络前缀都相同的所有连续的IP地址组成为一个“CIDR地址块”,一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数,我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
IP数据报的格式
IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。
IP数据报首部的固定部分中的各字段
(1)版本:占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。日前广泛使用的 IP协议版本号为 4 (即 IPv4)。IPv6目前还处于起步阶段。
(2)报头长度:占4位,该字段的单位是32位字(1个32位字长是4字节),因此当IP报头长度为1111时,报头长度就达到最大值60字节。当IP分组的首部长度不是4字节 的整数倍时,就需要对填充域加以填充。最常用的报头长度为20位(报头长度值为0101),这时不使用任何选项。
(3)区分服务(服务类型):占8位,在一般情况下都不使用这个字段。
(4)总长度:指报头和数据之和的长度,单位是字节。总长度字段为16位,故IP数据报的最大长度为65535。 每一种数据链路层都有其自己的帧格式,其中包括帧格 式中的数据字段的最大长度,这称为最大传送单元MTU。当IP数据报封装成链路层的帧时,此数据报的总长度不能超过对应MTU的值。若数据报长度超过对 MTU的值,就将数据报进行分片处理,此时数据报首部中的“总长度“字段是指分片后的每一个分片的报头长度和数据长度之和。
(5)标识:占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并赋给标识字段。当数据报进行分片处理后,每个分片的标识值都与原数 据报的标识值相同,则在接收端具有相同标识值的分片就能最终正确的重装成为原来的数据报。
(6)标志:占3位,但目前只有两位有意义。 最低位记为MF。MF=1即表示后面”还有分片“的数据包。MF=0表示这已是若干数据包片中的最后一个。 中间位记为DF,意思是”不能分片“。只有当DF=0时才允许分片。
(7)片偏移:占13位。表示每个数据报的分片在原数据报中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍。