热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一、网络的基本概念

1.1、网络组成组件 一般来说,两台或以上计算机使用任意介质(电缆、光纤或无线电波)、任意网络(TCPUDP、NetBEUI或IPXSPX)来进行连接,

1.1、网络组成组件

  一般来说,两台或以上计算机使用任意介质(电缆、光纤或无线电波)、任意网络(TCP/UDP、NetBEUI或IPX/SPX)来进行连接,并进行资源共享及通信,就可以称为计算机网络。网络协议是网络上建立通信及传输数据的双方必须遵守的通信标准,它定义了接收方和发送方进行通信所必须遵循的规则,双方同层的协议必须一致,否则无法进行通信或数据错误。为了组建通信网络,通常需要一些特殊的设备,下图是一个常见的网络连接图。

一、网络的基本概念

节点(node):节点主要是具有网络地址 (IP) 的设备之称。

服务器主机(server):提供数据以响应给用户的主机,都可以被称为是一部服务器。

工作站(workstation)或客户端(client):主动发起联机去要求数据的,就可以称为是客户(client)。

网卡(Network Interface Card,NIC):主要提供网络联机的设备

网络接口:主要在提供网络地址(IP) 的任务。主机内部也都拥有一个内部的网络接口,就是loopback这个循环测试接口!

网络形态或拓朴(topology):各个节点在网络上面的链接方式,一般讲的是物理连接方式。

路由(route):是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,其工作在OSI参考模型第三层——网络层的数据包转发设备。

网关(gateway):又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。

  • OSI网络模型与TCP/IP网络模型

  由ISO所定义的7层网络模型--OSI(Open System Interconnect,开放系统互连)是网络发展中的一个重要里程碑,它的出现使各种网络技术和设备有了参考依据,在网络协议的设计和统一上起到一定作用。

  OSI的7层模型中每一层都有清晰的特征。其中第7-4层处理数据源和数据目的地之间的通信问题,第3-1层处理网络设备间的通信。各层功能为:

  物理层:定义了有关传输介质的特性标准规范。

  数据链路层:物理链路并不可靠,可能会出现错误。数据链路层将数据分成帧,以数据帧为最基本单位进行传输,通过收到的数据帧进行重新排序和整理,把不可靠的物理链路转化成网络模型的上层协议中可靠的数据链路。

  网络层:对数据按一定的长度进行分组,并在每个分组的头中记录源和目的主机的地址,然后根据这些地址来决定从源主机到目的主机的路径。如果存在多条路径,还要负责进行路由选择。

  传输层:这层的功能包括是选择差错恢复协议还是无差错恢复协议,在同一主机上对不同应用的数据流的输入进行复用,以及对所收到的顺序不对的数据包进行重新排序。

  会话层:在网络实体间建立、管理和终止通信应用服务请求和响应会话等。

  表示层:进行代码转换功能,以保证源主机的数据在目的主机上同样能被识别。

  应用层:OSI模型的最高层,实现网络与用户的直接对话。

一、网络的基本概念

  OSI的7层模型是一个理论模型,由于它太过庞大和复杂受到很多批评,而技术人员自己开发的TCP/IP协议栈则获得更为广泛的应用。与OSI的7层模型不同,TCP/IP模型没有把主要精力放在严格的层次划分上,而是侧重于设备间的数据传输。TCP/IP模型的各层功能:

  网络接口层(链结层):定义了如何在已有的物理网络介质上传输数据,在这层中包含以太网、令牌环网、帧中继和异步传输模式等。

  网络层:将数据封装成IP(Internet Protocol)数据包,发往目标网络或主机。在这层包含了IP、

ICMP、IGMP、以及ARP等协议。

  传输层:定义了数据传输时所使用的服务质量以及连接状态,实现源端主机和目标主机上对等实体间的会话。在传输层上有两个不同的协议:TCP、UDP。

  应用层:TCP/IP模型将OSI参考模型中的会话层和表示层的合并到应用层,它定义了TCP/IP应用程序通信协议,包括HTTP、FTP、DNS和SMTP等。其中,没中协议都对应不同的网络服务,他们一般都会有特殊的端口号。

1.2、TCP/IP的网络层相关数据包与数据

  目前因特网环境的IP有两个版本,一种是使用最为广泛的IPv4,一种是预期未来会热门的IPv6.IPv4记录的地址由于仅有32位,预计在2012年前后会分配完毕,如此一来,新兴国家或者新的网络公司将没有网络可用。为了避免这个问题发生,因此产生了IPv6,IPv6地址可以达到128位,这样的IP数量几乎用不完。虽然IPv6具有前瞻性,但目前主流大多使用IPv4。

IP数据包的封装:

  TCP/IP协议定义了一个在因特网上传输的包,称为IP数据包,而IP数据报(IP Datagram)是个比较抽象的内容,是对数据包的结构进行分析。 由首部和数据两部分组成,其格式如图所示。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

一、网络的基本概念

Version(版本):指IP协议的版本。

IHL(Internet Header Length, IP表头的长度):告知这个 IP 封包的表头长度。

Type of Service(服务类型),字段内容为PPPDTRUU。
  PPP:表示此 IP 封包的优先度,目前很少使用;
  D:若为0表示一般延迟(delay),若为1表示为低延迟;
  T:若为0表示为一般传输量 (throughput),若为1表示为高传输量;
  R:若为0表示为一般可靠度(reliability),若为1表示高可靠度。
  UU:保留尚未被使用。

Total Length(总长度):指这个IP封包的总容量,包括表头与内容(Data)部分,最大65535 bytes。

Identification(辨别码):IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并   将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报.

Flags(特殊旗标)
  D:若为 0 表示可以分段,若为 1 表示不可分段
  M:若为 0 表示此 IP 为最后分段,若为 1 表示非最后分段。

Fragment Offset(分段偏移):表示目前这个 IP 分段在原始的 IP 封包中所占的位置。

Time To Live(TTL, 存活时间)表示这个 IP 封包的存活时间,范围为 0-255。

Protocol Number(协定代码)


1

ICMP (Internet Control Message Protocol)

2

IGMP (Internet Group Management Protocol)

3

GGP (Gateway-to-Gateway Protocol)

4

IP (IP in IP encapsulation)

6

TCP (Transmission Control Protocol)

8

EGP (Exterior Gateway Protocol)

17

UDP (User Datagram Protocol)

Header Checksum(表头检查码):用来检查这个 IP 表头的错误检验之用。

Source Address:来源的 IP 地址

Destination Address:这里就是目标的 IP 地址。

Options (其他参数)这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳、严格与宽松之来源路由等。

Padding(补齐项目):由于Options的内容不一定有多大,但是我们知道IP每个数据都必须要是32bits,所以,若 Options 的数据不足 32 bits 时,则由 padding 主动补齐。

IP地址的组成与分级:

  IP地址其实是一种网络数据包,而这种数据包的报头最重要的就是32位的来源与目的地址。对于这32 bits的数值,为了方便记忆,将32bits的IP分成四小段,每段含有8bits,将8个bits转换成十进制,并 且每一段中间以小数点隔开。

00000000.00000000.00000000.00000000    ==》  0.0.0.0
11111111.11111111.11111111.11111111    ==》  255.255.255.255

  因此IP可以由0.0.0.0到255.255.255.255.但这遗传数字中,又分为网络段(Net_ID)与主机段(Host_ID)两部分。例如C类地址192.168.0.0-192.168.0.255为例。

11000000.10101000.000000000.00000000
|--------Net_ID------------|--host--|

  Net_ID 与 Host_ID 的限制:在同一个网段内,Net_ID 是不变的,而Host_ID则是不可重复,此外 Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址,而全为 1 则表示为广播的地址。

  在局域网内通过IP 广播传递数据:在同物理网段的主机如果设定相同的网域 IP 范围 (不可重复),则这些主机都可以透过 CSMA/CD 的功能直接在区网内用广播进行网络的联机,亦即可以直接网卡对网卡传递数据 (透过 MAC 讯框)。

  设定不同区网在同物理网段的情况:在同一个物理网段之内,如果两部主机设定成不同的 IP 网段, 则由于广播地址的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起。

  网域的大小:当 Host_ID 所占用的位越大,亦即 Host_ID 数量越多时,表示同一个网域内可用以设 定主机的 IP 数量越多。

网络的划分:

全0:网络地址

全1:广播地址

Class A : 0.xx.xx.xx ~ 127.xx.xx.xx     #Net_ID的开头是0

  网络数:126, 127

  每个网络中的主机数:2^24-2

  默认子网掩码:255.0.0.0

  私网地址:10.0.0.0/8

Class B : 128.xx.xx.xx ~ 191.xx.xx.xx   #Net_ID的开头是10

 网络数:2^14

 每个网络中的主机数:2^16-2

 默认子网掩码:255.255.0.0

 私网地址:172.16.0.0/16-172.31.0.0/16

Class C : 192.xx.xx.xx ~ 223.xx.xx.xx   #Net_ID的开头是110

 网络数:2^21

 每个网络中的主机数:2^8-2

 默认子网掩码:255.255.255.0

 私网地址:192.168.0.0/24-192.168.255.0/24

Class D : 224.xx.xx.xx ~ 239.xx.xx.xx    #Net_ID的开头是1110

 组播的特殊功用,如大批计算机的网络还原

Class E : 240.xx.xx.xx ~ 255.xx.xx.xx    #Net_ID的开头是1111

 保留没有使用的网段

1.3、交换机与路由器

  在同一局域网里面,可以通过IP广播的方式来实现数据的传输,但如果在非局域网时。就需要路由器器来帮忙了。简单来说交换机为同一局域网内的不同主机服务,而路由器则为了不同局域网内的两台主机提供服务。

  交换机:是基于网桥技术的多端口第二层网络设备,它为数据帧从一个端口到另一个任意端口的转发提供了低时延、低开销的通路。交换机只能识别MAC地址。同一网络内不同主机之间通信,通过交换机寻找最优通路,不能存在环路。

  路由器:是OSI协议模型的网络层中的分组交换设备(或网络层中继设备),路由器的基本功能是把数据(IP报文)传送到正确的网络。识别IP地址。不同网段主机通信时需要路由转发。可以隔离广播域。

一、网络的基本概念

1.4、TCP协议数据包

  网络层的IP数据包只负责将数据送到正确的目标主机,但是数据包到底会不会被接收,或者有没有被正确接收,就不是IP的任务了,那是传输层的的任务之一。在传输层有两种协议,一种是面向连接的TCP数据包,一种无连接的UDP数据包,数据能不能正确被送达目的地,与这两个数据包有很大的关系。

  各个数据包之间的相关性:

一、网络的基本概念

  UDP数据包的报头信息:

一、网络的基本概念

  TCP数据包的报头信息:

一、网络的基本概念

Sequence Number (封包序号):TCP 数据太大时(大于 IP 封包的容许程度),就得要进行分段。这个   Sequence Number 就是记录每个封包的序号,可以让收受端重新将 TCP 的数据组合起来。

Acknowledge Number (回应序号):为了确认主机端确实有收到client端所送出的封包数据,client端当然希望能够收到主机方面的响应,那就是这个 Acknowledge Number 的用途了。当client 端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了。

Code (Control Flag, 控制标志码)

  URG(Urgent):若为 1 则代表该封包为紧急封包,接收端应该要紧急处理,当中的 Urgent Pointer字段也会被启用。

  ACK(Acknowledge):若为 1 代表这个封包为响应封包,与 Acknowledge Number 有关。

  PSH(Push function):若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无须等待缓冲区满了才送。

  RST(Reset):如果 RST 为 1 的时候,表示联机会被马上结束,而无需等待终止确认手续。 这是个强制结束的联机,且发送端已断线。

  SYN(Synchronous):若为 1,表示发送端希望双方建立同步处理,也就是要求建立联机。通常带有SYN标志的封包表示主动要连接到对方的意思。

  FIN(Finish):若为 1 ,表示传送结束,所以通知对方数据传毕,是否同意断线,只是发送者还在等待对方的响应。

三次握手与四次断开:

一、网络的基本概念

建立连接的过程:

【1】客户端发出请求,SYN 位表示连接请求。序号是200,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN 位和FIN 位也要占一个序号,这次虽然没发数据,但是由于发了SYN 位,因此下次再发送应该用序号201。

【2】服务器发出信息,也带有SYN 位,同时置ACK 位表示确认,确认序号是500,表示“我接收到序号500及其以前所有的段,请你下次发送序号为501的段”,也就是应答了客户端的连接请求,同时也给客户端发出一个连接请求。

【3】客户端发出信息,对服务器的连接请求进行应答,确认序号是501。在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为'''三方握手(three-way-handshake)'''。在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等。

TCP连接的关闭过程:

【1】客户端发出信息,FIN 位表示关闭连接的请求。

【2】服务器发出信息,应答客户端的关闭连接请求。

【3】服务器发出信息,其中也包含FIN 位,向客户端发送关闭连接请求。

【4】客户端发出信息,应答服务器的关闭连接请求。



推荐阅读
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
author-avatar
倔强的追求
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有