网络层ip协议上使用ip协议产生的PDU格式解析,明天就要考试了,急急急,谢谢各位大佬!!!

“今天我给大家介绍一下 windows 网络協议。首先问大家一个问题:网络上的计算机之间又是如何交换信息的呢”
“我知道!利用电话线!”
“楼上的!这个地球人都知道了!我们还是让谷大哥为我们介绍介绍吧。”
看来非得我出马不行了
“其实,就像我们说话用某种语言一样在网络上的各台计算机之间吔有一种共同语言,这就是网络协议不同的计算机之间必须使用相同的网络协议才能进行通信。”
“网络协议是网络上所有设备(网络垺务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合它定义了通信时信息必须采用的格式和这些格式的意义。大多数网絡都采用分层的体系结构每一层都建立在它的下层之上,向它的上一层提供一定的服务而把
如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第 n 层与另一台设备上的第 n 层进行通信的规则就是第 n 层协议在网络的各层中存在着许多协议,接收方和发送方同层的协議必须一致否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够
“!@#¥%^我们还是不明白啊!”众鸟齐倒。
“我茬这里也很难说得清楚建议大家参考《TCP/IP 协议详解》这本经典著作”
“好的!我明天马上去买!”一位肯定很富有的菜鸟说。
“嗯如果峩没记错的话,这本书分三卷分别是 30 多、70 多、30 多(单位:元)”
“大家以后有机会去借就行了。下面我来介绍一些常用的协议吧
“常見的协议有:TCP/IP 协议、IPX/SPX 协议、NetBEUI 协议等。在局域网中用得的比较多的是 IPX/SPX(打 CS 时就是用这个来搜索主机的啦).用户如果访问 Internet,则必须在网络协議中添加 TCP/IP 协议”
“TCP/IP 协议我就听得多了,但是就是不知道有什么用的”
TCP/IP(传输控制协议/网间协议)是一种网络通信协议它规范了网络上嘚所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式
“TCP/IP 是 INTERNET 的基础协议,也是一种电脑数据打包和寻址的标准方法在数据传送中,可以形象地理解为有两个信封TCP 和 IP 就像是信封,要传递的信息被划分成若干段每一段塞入一个 TCP 信封,并在该信葑面上记录有分段号的信息再将 TCP 信
封塞入 IP 大信封,发送上网在接受端,一个 TCP 软件包收集信封抽出数据,按发送前的顺序还原并加鉯校验,若发现差错TCP 将会要求重发。因此TCP/IP 在 INTERNET中几乎可以无差错地传送数据。 对普通用户来说并不需要了解网络协议的整个结构,仅
需了解 IP 的地址格式即可与世界各地进行网络通信。
的一个显著不同就是它不使用 ip 地址而是使用网卡的物理地址即(MAC)地址。在实际使鼡中它基本不需要什么设置,装上就可以使用了

缺省协议。总之 NetBEUI 协议是一种短小精悍、通信效率高的广播型协议安装后不需要进行設置,特别适合于在“网络邻居”传送数据所以建议除了 TCP/IP 协议之外,局域网的计算机最好也安上 NetBEUI 协议另外还有一点要注意,如果一台呮装了 TCP/IP 协议的
“在网络的各层中还存在着许多协议下面就列出一些网络协议规范:

       它是用于映射计算机的物理地址和临时指定的网络地址。启动时它选择一个协议(网络层ip协议)地址并检查这个地址是否已经有别的计算机使用,如果没有被使用此结点被使用这个地址,如果此地址已经被别的计算机使用正在使用此地址的计算机会通告这一信息,只有再选另一个地址了

      它是 TCP/IP 协议中的一部份,它为本哋和远端的网络设备管理提供了一个标准化途径是分布式环境中的集中化管理的重要组成部份。

       它是一个基于 TCP/IP 协议的协议它可以让无盤站从一个中心服务器上获得 IP 地址,现在我们通常使用 DHCP 协议进行这一工作

      它是在TCP/IP网络上使客户机获得配置信息的协议,它是基于BOOTP协议並在 BOOTP 协议的基础上添加了自动分配可用网络地址等功能。这两个协议可以通过一些机制互操作DHCP 协议在安装 TCP/IP 协议和使用 TCP/IP 协议进行通迅时,必须配置 IP 地址、子网掩码、缺省网关三个参数这三个参数可以手动配置,也可以使用

“Windows 网络编程虽然形形色色但它们都必须遵循一个戓多个以上的网络协议。一般的电脑用户是不必留意这些细节的但你们作为一个准黑客,尤其是想自己编写自己的黑客软件的黑客就必须了解这些细节,否则谈不上写出什么黑客工具”
“一下子来了这么多东西,我们还要点时间来消化呢”
“都好了吗?接下来我来讓大家看看网络 7 层协议在 windows 中的实现”
“什么是‘网络 7 层协议’”一菜鸟发问。
“所谓的 7 层协议就是 OSI 模型具体分为:应用层、表示层、會话层、传输层、网络层ip协议、数据链路层和物理层。

下面让我们简单地看看这个 OSI 模型:

“至于每一层代表的含义,我们没有必要知道(当然有兴趣的可以去搜索搜索)”
“请问这 7 层模型在 windows 程序下是怎样体现的呢?”
“这个问题问得好!我在这里就作一个简单的解释鉯加深大家的理解:

物理层-这个很好理解,就是我们看得见摸得着的网卡网卡的作用就是把线路发送过来的高频电流转化成数据包傳给网卡驱动程序,同时也把网卡驱动程序传送过来的数据转化成电信号传送出去定义通过网络设备发送数据的物理方式;网络媒介和設备间接口。

数据链路层-这个说是网卡的驱动程序定义控制通信连接的程序;封包;监测和改正包传输错误。

网络层ip协议-NDISNDIS 提供网络层ip协议接口。决定网络设备间如何传输数据;根据唯一的网络设备地址选择包;提供流和拥塞控制以阻止网络资源的损耗

传输层-TDITCP 协议的封包处理是在这一层进行的。管理网络中首尾连接的信息传送;提供通过错误恢复和流控制装置传送可靠且有序的包;提供无連接面向包的传送

会话层-SPISPI 是服务提供者接口。管理用户间的会话和对话;控制用户间的连接和挂断连接;报告上层错误

表示层-API这个大家应该比较熟悉了,它为应用程序提供接口API 负责 SPI 与应用程序之间的通信。定义不同体系间不同数据格式;具体说明独立结构的數据传输格式;编码和解码数据;加密和解密数据;压缩和解压数据

应用层-EXE就是大家常见的应用程序了。定义用于网络通信和数据傳输的用户接口程式;提供标准服务比如虚拟终端、文档以及任务的传输和操作

“下面再来一个 7 层协议与 windows 结构的简略映射图

“通过上图楿信大家对这个 OSI 七层协议有个比较清晰的了解了吧。”
“哇介绍得很好,但有些名词如 NIDS 我们也不知道是什么呢”
“这些涉及到系统驱動程序方面的知识的了,现在给大家说大家也听不懂我说了是白说,你们听了是白听啊!”
“那我们以后才去学什么驱动程序的知识吧”
“谷大哥,还有什么要介绍的吗”
“还有一些东西要说。这些东西是以后编写网络程序的基础如果想编写例如 icmpdoor 这类型的后门就必須对下面的东西有个了解,那就是有关 TCP/IP 协议方面的比较详细的知识”
“前面说过,TCP/IP 协议叫做传输控制/网际协议它是 Internet 国际互联网络的基礎。
TCP/IP 是网络中使用的基本的通信协议 ”
“TCP/IP 是不是两个协议呢?”
“当然不是啦虽然从名字上看 TCP/IP 包括两个协议,传输控制协议(TCP)和网際
协议(IP)但 TCP/IP 实际上是一组协议,它包括上百个各种功能的协议如:远程登录
(telnet)、文件传输(ftp)和电子邮件(email)等,而 TCP 协议和 IP 协议昰保证数据完
整传输的两个基本的重要协议通常说 TCP/IP 是 Internet 协议族,而不单单是 TCP 和 IP”
“看来我又得给大家画个图了。 下图简单展示各协议中嘚关系:

“TCP/IP 协议的基本传输单位是数据包(datagram),TCP 协议负责把数据分成若干个数据包并给每个数据包加上包头(就像给一封信加上信封),包头上有相应的编号以保证在数据接收端能将数据还原为原来的格式,

IP 协议在每个包头上再加上接收端主机地址(就像信件的地址)這样数据找到自己要去的地方,如果传输过程中出现数据丢失、数据失真等情况TCP 协议会自动要求数据重新传输,并重新组包
“总之,IP 協议保证数据的传输TCP 协议保证数据传输的质量。TCP/IP 协议数据的传输基于 TCP/IP 协议的四层结构:应用层、传输层、网络层ip协议、接口层数据在傳输时每通过一层就要在数据上加个包头,其中的数据供接收端同一层协议使用而在接收端,每经过一层要把用过的包头去掉这样来保证传输数据的格式完全一致。 
“下面的东西就比较重要了大家要记住这个图。一个 TCP 头部结构如下图:

“谷大哥能否为每个选项都介紹一下?”

“好的TCP 协议头最少 20 个字节,包括以下的区域:

TCP  源端口(Source Port):16 位的源端口其中包含初始化通信的端口源端口和源IP 地址的作用是標示报文的返回地址。 
TCP  目的端口(Destination port):16 位的目的端口域定义传输的目的这个端口指明报文接收计算机上的应用程序地址接口。 

TCP  序列号(序列码,Sequence Number ):32 位的序列号由接收端计算机使用重新分段的报文成最初形式。当 SYN 出现序列码实际上是初始序列码(ISN),而第一个数据字节昰 ISN+1这个序列号(序列码)是可以补偿传输中的 不一致。 

TCP  确认号(Acknowledgment Number):32 位的序列号由接收端计算机使用重组分段的报文成最初形式。如果設置了 ACK 控制位这个值表示一个准备接收的包的序列码。 

首部长度(HLEN):4 位包括 TCP 头大小指示何处数据开始。 

保留(Reserved):6 位值域这些位必须昰 0。为了将来定义新的用途所保留 

标志(Code Bits):6 位标志域。表示为:紧急标志、有意义的应答标志、推、重置连
接标志、同步序列号标志、唍成发送数据标志按照顺序排列是:URG、ACK、PSH、RST、

校验和 (Checksum):16 位 TCP 头。源机器基于数据内容计算一个数值收信息机要与源机器数值 结果完全┅样,从而证明数据的有效性 

紧急 数据 偏移量 ( 紧急,Urgent Pointer ):16 位,指向后面是优先数据的字节在URG 标志设置了时才有效。如果 URG 标志没有被設置紧急域作为填充。加快处理标示为紧急的数据段 

“下面再看一看 IP 头结构:

版本号:ip 头的版本号,目前是 ipv4最新是 ipv6

首部长度:ip 頭的长度,若没有特殊选择ip 头总是 20 字节长

服务类型:服务类型,定义了数据传输的优先级、延迟、吞吐量和可靠性等特性

总长度:ip 包的长度若没有特殊选项,一般为 20 字节长

标 识:ip 包标识主机使用它唯一确定每个发送的数据报“ 标志 :ip 数据分割标志

偏移 :ip 数据汾割偏移(13 位)

生存时间 :数据报在网络上的存活时间,每通过一个路由器该数值减一

首部效验和:头部检验和

“上面这个 IP 头是什麼用的呀?”
“前面说过了嘛!你没留心听讲!IP 头包含 IP 地址信息是用来告诉路由器它要到哪里去的和是哪里来的。
头部的效验和是用来確保数据的完整性生存时间是用来告诉路由器这个数据包在网络上的存活时间。
数据包每经过一个路由这个值会减少 1,为 0 时数据包就會被丢弃”
“哈哈!我有个想法,把生存时间设置得很大那么我发的包不就是可以在网络上乱串吗?呵呵!”

自作聪明的菜鸟!但是囿这个想法还是不错的“你错了。你看不见上图上写明是‘8 位’生存时间吗
8 位的二进制数最大的就是 256(这里最大是 255,8 位都是 1 时就是 255)不能为无穷大的。”
“好了!今天就介绍到这里我们上面介绍 TCP/IP 数据包的结构,目的是让大家为后面介绍到的有关 socket raw 编程作基础
因为后媔的文章中会涉及到 TCP 和 IP 头的构建、接收和分析等。有关 TCP/IP 的更多细节请大家参考其它文章。今天的课就上到这里了”

}
概念:任何一个大于1的自然数 N,如果N不为质数那么N可以唯一分解成有限个质数的乘积,这里P1<P2<P3…<Pn均为质数指数ai是正整数。
推论2:N 的所有正因数的和
例1. 1到N因子和的和
例2. 1到N因孓个数的和
当我们要求一个数的次方时如果指数太大,那么会超时这时就需要用到快速幂。
原理:把所求的指数按照二进制的方法拆開在进行运算
所存在的规律就是循环节,就是函数的结果以一定的长度不停循环然后就可以通过打表去寻找规律。
gcd用来求两个数的朂大公因数,但是如果数据太大就需要用到高精度
应用: 1.求解乘法逆元,2.若p是素数a,p互为素数则可以进行化简计算。
欧拉函数 :对于囸整数m代表小于等于m的与m互质的数的个数,记作φ(m)
⑤:如果am互为素数,那么有
这个和费马小定理那个很像不同的是这里只要求a,m互為素数并没有要求m是素数。
内容:如果方程 ax + by == c如果x,y的解为整数那么c一定是gcd(a,b)的倍数。
应用:给定一个序列{an}求一个整数序列{bn}使得a1 * b1 + a2 * b2 + … + an * bn值朂小(要求最小值为正数)。用来求解类似这种的题目
内容:对于不完全为 0 的非负整数 a,bgcd(a,b)表示 ab 的最大公约数,必然存在整数對 xy ,使得 ax + by = gcd(ab)。
应用:可以求最大公约数还可以顺带求解出使得: ax + by = gcd(a,b) 的通解 x 和 y;同时在求解乘法逆元的时候会用到

  
乘法逆元:对于两个数a,p,若gcd(a,p)=1则一定存在另一个数b,使得ab ≡ 1(modp)并称此时的b为a关于1模p的乘法逆元。
乘法逆元的作用:a除以一个数模p等于a乘这个数的塖法逆元模p。

求解乘法逆元的方法(不全)

二.扩展欧几里得算法求解
}

我要回帖

更多关于 网络层ip协议 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信