首页 > 代码库 > 五层结构 判断两个IP是否处于同一子网?
五层结构 判断两个IP是否处于同一子网?
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
应用层(各种协议)
端口
HTTP-----超文本传输协议----- 80
FTP -----文件传输协议 ----- 21
DNS -----域名解析协议 ----- 53
Telnet---远程控制协议 ----- 23
SMTP ----网络管理协议 ----- 25
传输层
基于端口进行通讯
补充:端口范围0-65535,0-1023为系统占用端口
TCP:可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
UDP:不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
tcp报文
tcp三次握手和四次挥手
网络层
IP地址:网络号(标识子网)和主机号(标识主机)两部分
ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到
通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址
判断两个IP是否处于同一子网?
已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同
一个子网络?两者与子网掩码分别进行AND运算,
172.16.10.1:10101100.00010000.00001010.00000001
255.255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:
10101100.00010000.00001010.00000000->172.16.10.0
172.16.10.2:10101100.00010000.00001010.00000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:
10101100.00010000.00001010.00000000->172.16.10.0
结果都是172.16.10.0,因此它们在同一个子网络。
协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24
一:首先通过ip地址和子网掩码区分出自己所处的子网
二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)
三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac
数据链路层
.一组电信号构成一个数据包,叫做‘帧’
.每一数据帧分成:报头head和数据data两部分
报头:源地址(6字节) 目的地址(6字节) 数据类型(6字节)
数据:最短46字节,最长1500字节
数据包:报头+数据 最短64字节,最长1518.
五层结构 判断两个IP是否处于同一子网?