2023年7月31日发(作者:)
Internet层的协议-------IP协议
TCP/IP的核心部分是Internet层,该层主要有IP和ICMP两个协议组构成
IP协议相当于OSI参考模型的第三层(网络层)的功能,地址的管理和路由选择
数据链路层是实现了同一数据链路直接连接的节点之间的数据传输;
网络层一边控制数据链路层,一边进行包的发送,使得同一数据链路中,在没有直接连接的计算机之间也能够进行通信;
这是因为IP地址起到了路由选择的功能,可以经过n多个路由器最终把数据抱发送到指定的接收端。
数据链路层提供了直接连接的计算机设备之间的相互通信,而IP协议提供了没有直接连接的计算机网络之间的数据传输
把在计算机网络中传输一个数据包当作是一次长途旅行,IP地址就是始发站和终点站。可能没有直达车而需要中转。那么整个旅行安排表可以认为是IP协议,而一站站中转之间的车票可以理解为数据链路层
所以IP协议和数据链路层协议两者缺一不可。
IP协议的三个比较重要的功能:
1. 分配IP地址和到目的主机的包发送(路由寻址)功能
2. IP包的分割处理功能
3. 重新构筑处理功能
IP地址功能
MAC地址用于在同一链路中识别计算机
IP地址用于在连接到计算机网络的所有计算机中识别需要进行通信的终端
所有连接到Internet中的所有主机和路由器都必须设定IP地址
在对物理层和数据链路层进行中继的集线器、网桥、中继器中不需要设定IP地址,他们只是将IP包作为0或1的位串或数据链路层的帧来发送
路由控制功能
这是IP协议最重要的功能,它利用路由控制表在计算机网络中一步一步将IP包送往目的地
路由控制表决定了下一步将IP包送往哪条数据链路。
IP包的分割处理功能
由于各条数据链路的种类不一样(Ethernet,FDDI,ATM,PPP),引起了每个数据链路层的不同之处是最大传输单元不一样。如Ethernet 为1500octet,FDDI为4352 octet,ATM 为9180 octet。所以IP协议必须具备IP包的分割处理和重新构筑的功能。这样当IP协议的上一层需要传输一个比较大的数据,那么需要IP协议将他分割成许多个小的IP包分别传输至接收主机,然后在接收端的主机上IP协议将其集中成一个大IP包,然后在传给其上一层,这样在发送端和接收端的IP上层是看不到下层所作的分割重筑处理的,在它看来就和一直以一个大包传输一样 通信方式可以分为有连接通信和无连接通信
有连接通信是在进行数据传输前首先要建立连接,如果是因为接收端或者网络的原因而无法建立连接,那么就不能发送数据,这样就提高了可靠性。但是通信处理非常复杂。
无连接通信是不管接收端主机的情况(断电或者压根不存在也无所谓),发送端都照常进行包的发送,而接收端也不知道何时会有数据发送来,所以需要一直监视网络看看有没有目的地为自己的数据到来,如果数据到来就进行相应的处理。这样在没有准备好的情况下有可能漏掉接收数据,造成通信资源的浪费。
IP协议采用无连接型通信是出于对数据传输的简略化和高速化的考虑。在需要连接型服务的时候,可以由上层协议来提供。如TCP协议。IP协议只考虑数据能够到达对方主机,而TCP协议则是利用IP协议将数据准确的发送到接收端
IP地址
每个IP地址对应于一个计算机网络接口;一个主机可以有几个计算机网络接口,一个路由器有两个以上的接口,所有有两个以上的IP地址。
IP地址由“计算机网络地址部分”和“主机地址部分”组成
“计算机网络地址部分”用来识别数据链路的一个段,在同一个数据链路所连接的所有主机中,必须设定相同的计算机网络地址;
“主机地址部分”用来识别同一个数据链路中的不同主机,在同一个数据链路所连接的所有主机中,必须设定不同的主机地址;
如何区别IP地址中的“计算机网络地址部分”和“主机地址部分”?
1. 采用分类来区分:A,B,C,D
2. 采用子网掩码(目前用的)
IP地址的分类
A类:第一位为0,包括第一位在内的前8位为计算机网络地址部分,0.0.0.0
到127.0.0.0,后面24位为主机地址部分,每个A类链路一共可有224个主机
B类:前两位为10,包括前两位在内的前16位为计算机网络地址部分,128.0.0.0
到191.255.0.0,后面16位为主机地址部分,每个B类链路一共可有216个主机
C类:前三位为110,包括前三位在内的前24位为计算机网络地址部分,192.0.0.0
到223.255.255.0,后面8位为主机地址部分,每个C类链路一共可有28个主机
D类:前四位为1110,包括前四位在内的32位为计算机网络地址部分,224.0.0.0
到254.255.255.255,D类没有主机地址部分,D类用于IP广播
注意:主机地址部分不能全为0或者1;全0是用来在不知道IP地址情况下使用,全1是用来在该数据链路内进行广播用的
广播通信:
广播地址,主机地址为全1的地址。
广播通信方式:
1. 本地广播通信:属于自己数据链路内的广播通信,及计算机网络地址为本数据链路地址,主机地址全为1。向这样的IP地址发IP包,那么这个数据链路内所有主机都可以收到
2. 直接广播通信:向不同的数据链路的广播通信,及计算机网络地址为外部数据链路地址,主机地址全为1。向这样的IP地址发IP包,所有指定数据链路内的主机读可以收到
子网掩码:
由于A,B,C,D这样的分类方式,呆板的确定了计算机网络的个数和每个网络里面的主机个数,造成了资源分配的极其不合理,所以引入了子网掩码的概念。
子网掩码是让每一类的主机地址部分中待定位数作为子网地址使用。
而采用CIDR方法还可以将多个C类计算机网络屏蔽成一个子计算机网络。及部分网络地址作为主机地址使用
子网掩码中所有1的位表示作为子网地址用,而所有0的位作为主机地址使用;而子网地址必须是从前到后的连续n位,而主机地址就是从后往前的连续(32-n)位
特殊的IP地址:私有地址:
10.0.0.0——10.255.255.255 (10/8)
172.16.0.0——172.31.255.255 (172.16/12)
192.168.0.0——192.168.255.2555 (192.168/16)
私有地址不能和外部进行通信,除非使用应用网关和网络地址翻译器(NAT)
路由控制:
IP协议是以正确的路由控制表为前提进行操作的,但是IP协议中目前还没有定义生成路由控制表的协议
IP包是利用IP地址中的计算机网络地址部分来进行路由控制的。当一个路由器收到一个IP包就把该IP包中的IP地址的计算机网络地址部分对照路由控制表来决定下一个应该发送的路由器的地址。
构筑的计算机网络比较好的话,能够缩小路由控制表的容量。这样有利于节省存储空间和搜索路由信息的时间从来提高IP包的发送能力。
尽量将网络地址最大相似的计算机网络集中在一个路由器底下。
IP的分段处理和重组处理:
因为各种数据链路的MTU不同,所以主机或者路由器必须进行相应的IP数据报的分段处理,而只有在接收端的主机上才进行段的重组,在传输过程中路由器是不会进行段的重组处理的。因为不能保证所有分段都走同一路由,而且过细的控制会增加路由器的负担。 路由MTU检索:像上面那样利用路由器来进行分段处理增加了路由器的负担,所以可以采用路由MTU检索的方法。
路由MTU检索是指先找到到的实际存在的数据连路的最小MTU,然后发送端主机以这个MTU的大小将数据分段后进行发送,这样在数据传输过程中就不需要路由器再进行分段了。具体实施:在发送IP数据报的时候不进行分段,将分段禁止标志设置为1,直接发送,如果数据报长度大于数据链路的MTU时,路由器也不会将其分段,而是将其丢弃,根据ICMP不能达到的消息将数据链路的MTU值返回,在下面要发送的IP数据报中,根据ICMP返回的MTU值,进行分段
地址解析协议:ARP(Address Resolution Protocol)
如果确定了IP地址,就可以向接收端的IP地址发送数据了,但是实际上,在利用数据链路进行通信的时候必须确定与该IP地址对应的MAC地址。
ARP协议中有ARP请求包和ARP应答包两种
在已经知道接收端IP地址的情况下,为获得接收端的MAC地址,首先广播一个ARP请求包,请求包里面包括一个接收端的IP地址,所有主机接收到这个ARP请求包,如果IP地址与请求包中一致,那么该主机就将自己的MAC地址附加到ARP应答包中返回。
采用ARP协议能够自动解析地址,因此在使用TCP/IP通信的情况下,没有必要去考虑MAC,只要考虑IP地址就可以了。
反向地址解析协议:RARP
向RARP服务器查询自己的IP地址,需要的是告诉RARP服务器自己的MAC地址。
因特网控制消息协议(ICMP:Internet Control Message Protocol):
因为IP协议是一种无连接型的网络层协议,他不能保证包的可靠到达,而ICMP就是用来在链路发生故障导致包不能到达的时候向发送端通知故障的。
ICMP可以告诉发送端主机是发生了什么故障,是什么原因导致该故障的发生。
利用ICMP可以实现很多功能:如PING命令,查看所经过的所有路由器,调查主机或者路由器的子网掩码等。
IP多播:
多播是向特定的组织而不是单个主机发送数据使用的一种通信方式;
广播是向全体发送数据,接收到数据的主机利用IP上层的功能对数据进行判断,查看是否是自己的数据,是就接收过来,否则删除
而多播是向需要数据的一些组织发送数据;
IP多播使用了D类的IP地址。
IP报头:
IP协议通信中,首先需要在数据上附加IP报头
IP包有两部分构成:
1. 通信时所必须的各种信息,称为IP报头
2. 需要发送的数据
IP报头的构成:
1. 版本:4位组成,表示IP报头的版本号,目前的版本号为4
项的IP包的情况下,其值为5,及有4*5=20octet
3. 服务类型:8位组成,表示了IP服务的质量,现在Internet中几乎不用服务类型TOS。
4. 包长度:16位组成,表示IP报头加上IP数据之后整个包的长度,单位为octet,及8位,因为其为16位,所以传输的IP包最大为216=65535octet,当然需要数据链路支持
5. 标识:16位组成,它在重组的时候作为标识使用,相同的段具有相同的值,不同的段具有不同的值。一般在发送一个IP包的时候,一个个的逐步增加标识的值。另外ID相同而表示协议的PORT不同也作为不同的段处理。
6. 标志:3位组成,表示了与包的分段有关的控制信息,每一位表示不同的意义,第一位:目前没有使用,必须为0;第二位:表示是否可以进行分段,0可以,1不可以;第三位:表示是否为一个包中的最后一个段,0是,1否。
7. 段位移量:13位组成,表示了所分割的段是在原数据的什么位置上,初始值为0,最大值为2=8192个段,每个段的单位为8octet,所有远数据最大为8*8192=65536octet
8. 生存时间:8位组成,表示包在计算机网络中的生存时间,单位秒,实际的Internet中,其含义为使用几个路由器进行中继,每当通过一个路由器时,其值自动减1,如果该值为0,就删除这个包。所以一个包最多不能经过28=256个路由器
9. 协议:8位组成,表示上一层的通信协议的种类:1、ICMP,2、IGMP,4、IP,6、TCP,17、UDP,41、IPv6……还有其他一些协议种类。
10.报头检查和:16位组成,表示IP报头部分的检查和,检测在通信过程中,IP报头是否由于路由器内部存储器故障或者程序的错误而遭到破坏
11..发送端源地址:32位组成,发送端IP地址
12..接收端源地址:32位组成,接收端IP地址
13.可选项:可变长度,通常在IP包中不是必需的,在测试或者debug等操作中可能用到
14.填充物:可变长度,在有可选项的情况下,如果报头的长度不是32位的整数倍,就填充一些“0”使报头达到32位的整倍数,本身没有任何物理意义。
15.数据:将IP的上一层报头也作为数据来处理。
132. 报头长:4位组成,表示IP报头本身的长度,其单位为4octet,及32位,在不具有可选
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690778739a423830.html
评论列表(0条)