网络层协议与应用(一)

简介: 网络层协议与应用(一)

简介

       本章从P报文的结构讲起,引入了两个重要的协议--ARP和ICMP,值得注意的是,P报文结构并不是本章的重点内容,讲解的目的只是让大家简单了解,当然,并不是这部分内容不重要,只是从目前大家学习的层次来看,还不是全面深入地剖析P数据包的最佳时机,大家会在后续内容学习到这部分知识,到那时大家会对网络世界有更深一层的认识。

       学习协议的关键不在于死记硬背,而应该理解协议应用在实际环境中的过程和原理,如为什么要如此设计,为网络通信提供哪些辅助作用,等等,所以本章的重点是理解,本章的目标就是根据自己的理解能够描述出协议详细的工作过程,关注每一个细节。

1.IP数据包格式

       我们学习了iP地址,网络层负责定义数据通过网络流动所经过的路径。其主要功能可以总结为以下几点。

               定义了基于P协议的逻辑地址。

               选择数据通过网络的最佳路径。

               连接不同的媒介类型。

       首先来看一下iP数据包头的格式,如图所示

各字段的含义如下。

       版本(Version):该字段包含的是IP的版本号,4bit。目前IP的版本为4(即Pv4)。该版本形成于20世纪80年代早期,现在无论是在局域网还是在广域网中,使用的都是IPv4。目前IPv4所面临的最大问题是IP地址空间不足,即将使用的IPv6是P的下一个版本,但也不能解决IP地址缺乏的问题。

       首部长度(HeaderLength):该字段用于表示IP数据包头长度,4bitP数据包头最短为20字节,但是其长度是可变的,具体长度取决于选项字段的长度。

       优先级与服务类型(Priority &Type of Service):该字段用于表示数据包的优先级和服务类型,8bit,通过在数据包中划分一定的优先级,用于实现QoS(服务质量)的要求。

       总长度(TotalLength]:该字段用以指示整个P数据包的长度,16bit,最长为65535字节,

包括包头和数据。

       标识符(ldentification):该字段用于表示P数据包的标识符,16bit。当P对上层数据进行分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组,标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包,标志(Flags):标志字段,3bit。标志和分片一起被用来传递信息。例如,对当前的包不能进行分片(当该包从一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出。

       段偏移量(Fragment Offset):该字段用于表示段偏移量,13bit。段偏移量中包含的信息是指在一个分片序列中如何将各分片重新连接起来。

       TTL(Time to Live):该字段用于表示IP数据包的生命周期,8bit,该字段包含的信息可以防止一个数据包在网络中无限循环地转发下去。TTL 值的意义是一个数据包在被抛弃前在网络中可以经历的最大周转时间。该数据包经过的每一个路由器都会检查该字段中的值,当TTL的值为0时,该数据包将被丢弃,TTL对应于一个数据包通过路由器的数目,一个数据包每经过一个路由器,TTL将减去1.协议号(Protocol):协议字段,8bit。该字段用以指示在P数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6UDP的协议号为17。

       首部校验和(Header Checksum):该字段用于表示校验和,16bit,校验和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算报头的校验和,就如同源机器所做的一样。如果数据没有被改动过,两个计算结果应该是一样的。

       源IP地址(Source IP Address):该字段用于表示数据包的源地址,32bit。这是一个网络地址,指的是发送该数据包的设备的网络地址。 目标P地址(DestinationIP Address):该字段用于表示数据包的目的地址,32bit,这也是一个网络地址,但指的是接收节点的网络地址。

       可选项(Options);选项字段根据实际情况可变长,可以和P一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据。

2 ARP 协议

       使用ARP协议可以查出擅自更改P地址主机的MAC地址,在学习ARP协议前需要了解广播和广播域的相关概念。

2.1 广播与广播域

       在超市找人时,如果不知道对方的位置就需要到服务台通过广播进行找人;当知道对方的位置时就可以直接到对方所在位置。在网络中也存在这种情况,如果不知道对方的地址就需要进行广播,即发送广播帧:而知道对方的地址就发送单播到对方处。所以,广播通信是“一对所有”的通信形

式,而单播通信是“一对一”的通信形式。所有听到找人广播的范围就是广播域,广播和广播域的具体定义如下。

               >广播:将广播地址作为目的地址的数据帧。

               >广播域:网络中能接收到同一个广播的所有节点的集合。

1.MAC地址广播

       MAC地址的广播地址为FF-FF-FF-FF-FF-FF MAC地址广播域是所有相连接的交换机和集线器的集合,如果一台主机发送一个MAC地址广播,则这个广播将转发到所有相连的交换机或集线器的所有端口。收到广播帧的主机会比较数据包中的目的P地址是否为自身P地址,如果是,则继续处理数据包中的承载数据;如果不是,则丢弃数据。

       交换机转发MAC地址广播,而路由器会阻挡MAC 地址广播。

2.IP 地址广播

       iP网段的最后一个地址为广播地址,即主机部分全部为1,在数据帧中,目的 MAC 地址是

FF-FF-FF-FF-FF-FF,目的P地址是P网段的广播地址。

       例如,主机IP地址是1921681.20掩码是255255255.0,主机所在网段的广播地址是

192.168.1.255,如果主机发送一个目的P地址为1921681255、目的MAC 地址为FF-FF-FF-FF-FF-FF的广播,由于目的MAC地址为广播地址,因此广播域的范围和MAC 地址的广播域范围相同。当设备或主机接收到此广播后,查看是否属于同一P网段,如果处于同一网段,则对承载的数据进行处理,否则丢弃数据。同样路由器会阻挡IP地址广播。

       如图(a)所示,A主机发送广播信息,B主机C主机都能收到。因为负责连接网络的中心设备是一台二层设备,A、B、C三台主机处于同一个广播域:而图(b)中,A主机发送的广播只有B主机能够收到,C主机是收不到的,因为网络已经被路由器隔开变成两个广播域,这就好比在教室里讲课,每个同学都会听到,但是隔壁教室的同学就听不到了。如果A.B是在同一个教室上课的同学,那么C就好比是在隔壁教室上课的同学。

相关文章
|
2天前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
在数字时代,网络应用成为连接世界的桥梁。Python凭借简洁的语法和丰富的库支持,成为开发高效网络应用的首选。本文通过实时聊天室案例,介绍Python Socket编程的基础与进阶技巧。基础篇涵盖服务器和客户端的建立与数据交换;进阶篇则探讨多线程与异步IO优化方案,助力提升应用性能。通过本案例,你将掌握Socket编程的核心技能,推动网络应用飞得更高、更远。
17 1
|
18天前
|
安全 Java 网络安全
当网络安全成为数字生活的守护者:Spring Security,为您的应用筑起坚不可摧的防线
【9月更文挑战第2天】在数字化时代,网络安全至关重要。本文通过在线银行应用案例,详细介绍了Spring Security这一Java核心安全框架的核心功能及其配置方法。从身份验证、授权控制到防御常见攻击,Spring Security提供了全面的解决方案,确保应用安全。通过示例代码展示了如何配置`WebSecurityConfigurerAdapter`及`HttpSecurity`,帮助开发者有效保护应用免受安全威胁。
40 4
|
1天前
|
自动驾驶 物联网 5G
毫米波技术及其在5G网络中的应用详解
毫米波技术及其在5G网络中的应用详解
13 3
|
1天前
|
自动驾驶 物联网 5G
深入探索5G网络中的网络切片技术及其应用场景
深入探索5G网络中的网络切片技术及其应用场景
15 3
|
2天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
17 3
|
7天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
36 8
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。
|
5天前
|
网络协议 安全 物联网
探索未来网络:IPv6的演进与应用
本文深入探讨了互联网协议第六版(IPv6)的发展历程、技术特点以及在现代网络中的应用。通过分析IPv4的局限性和IPv6的优势,阐述了IPv6对网络扩展性、安全性和性能提升的重要性。同时,文章还探讨了IPv6在实际部署中面临的挑战和解决方案,为读者提供了全面而深入的理解。
|
6天前
|
网络协议
UDP协议在网络通信中的独特应用与优势
UDP(用户数据报协议)作为关键的传输层协议,在网络通信中展现出独特优势。本文探讨UDP的无连接性及低开销特性,使其在实时性要求高的场景如视频流、在线游戏中表现优异;其不保证可靠交付的特性赋予应用程序自定义传输策略的灵活性;面向报文的高效处理能力及短小的包头设计进一步提升了数据传输效率。总之,UDP适用于高速、实时性强且对可靠性要求不高的应用场景,为网络通信提供了多样化的选择。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度剖析深度神经网络(DNN):原理、实现与应用
本文详细介绍了深度神经网络(DNN)的基本原理、核心算法及其具体操作步骤。DNN作为一种重要的人工智能工具,通过多层次的特征学习和权重调节,实现了复杂任务的高效解决。文章通过理论讲解与代码演示相结合的方式,帮助读者理解DNN的工作机制及实际应用。